OpenJDK時代のJavaをMacで切り替える方法

[SDKMAN!](https://sdkman.io/)を使ってJavaをインストールし、それで切り替える。

# [追記]Bashの4系以上をインストール
SKDMAN!をMacのBashで利用する場合に、Bashの4系以上が必要になっていたので、適時インストールする（zshを使う場合は不要ではないかと思う）
**[2021/11/09] Montereyでzshからbrewを入れたら、binのパスが変わったので、bashのパスは内容に合わせた対応が必要**

- 以前のパス：/usr/local/bin/bash
- 今回のパス：/opt/homebrew/bin/bash


```
$ brew install bash

bashのパスを確認
$ which -a bash
/opt/homebrew/bin/bash
/bin/bash

$ sudo vim /etc/shells
末尾に/opt/homebrew/bin/bashを追加

$ chsh -s /opt/homebrew/bin/bash

最後にターミナルを立ち上げ直す
```

- https://itnext.io/upgrading-bash-on-macos-7138bd1066ba
- https://qiita.com/zaburo/items/1b990436ca45545959e9

## bashが切り替わったことを確認したら
zshからbashに切り替える場合は、brewのパスも変更が必要。

```sh
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.profile
eval "$(/opt/homebrew/bin/brew shellenv)"
```

.bash_profileがある場合は、↑ではなく、
.bash_profileの先頭に`eval "$(/opt/homebrew/bin/brew shellenv)"`を記載する


## ※bashが切り替わらない場合

以下の結果で`/opt/homebrew/bin/bash`が先に来ていない場合は、

```
$ which -a bash
/bin/bash
/opt/homebrew/bin/bash
```

`/etc/paths`を確認し、`/bin`よりも前に`/opt/homebrew/bin`を移動させる。

```:/etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
```

また、chshの実行結果が`chsh: no changes made`となる場合は、Macのシステム環境設定から変更する。
（確認すると変わっている場合もある）

- https://www.softantenna.com/wp/mac/change-login-shell-to-zsh-on-os-x/

# SDKMAN!のインストール

```
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
```

# Javaのインストール

インストールするだけなら`sdk install java`を実行すると最新のOpenJDKが入る。

```
$ sdk install java
==== BROADCAST =================================================================
* 2019-04-02: Vertx 3.7.0 released on SDKMAN! #vertx
* 2019-03-28: Micronaut 1.1.0.RC2 released on SDKMAN! #micronautfw
* 2019-03-28: Gradle 5.3.1 released on SDKMAN! #gradle
================================================================================

Downloading: java 11.0.2-open

In progress...

######################################################################## 100.0%

Repackaging Java 11.0.2-open...

Done repackaging...
Cleaning up residual files...

Installing: java 11.0.2-open
Done installing!


Setting java 11.0.2-open as default.
```

必要に応じてJAVA_HOMEを設定する。

```sh:.bashrc
export JAVA_HOME=$HOME/.sdkman/candidates/java/current
export PATH=$JAVA_HOME/bin:$PATH
```


## バージョンを選択したい

### 1. 探す
インストールしたいバージョンを探して、Javaをインストールする

```
$ sdk list java
================================================================================
Available Java Versions
================================================================================
     13.ea.14-open       8.0.202-amzn                                           
     12.0.0-zulu         8.0.202.j9-adpt                                        
     12.0.0-open         8.0.202.hs-adpt                                        
     11.0.2-sapmchn      8.0.202-zulufx                                         
     11.0.2-zulu         8.0.201-oracle                                         
 > * 11.0.2-open         7.0.181-zulu                                           
     11.0.2-amzn         1.0.0-rc-14-grl                                        
     11.0.2.j9-adpt      1.0.0-rc-13-grl                                        
     11.0.2.hs-adpt      1.0.0-rc-12-grl                                        
     11.0.2-zulufx       1.0.0-rc-11-grl                                        
     10.0.2-zulu         1.0.0-rc-10-grl                                        
     10.0.2-open         1.0.0-rc-9-grl                                         
     9.0.7-zulu          1.0.0-rc-8-grl                                         
     9.0.4-open                                                                 
     8.0.202-zulu                                                               

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

```

### 2. インストールする

```
$ sdk install java 8.0.202-amzn
```

### 3. バージョンを設定する

特定のターミナルだけ変える

```
$ sdk use java 8.0.202-amzn
```

使用するJDKのデフォルトを変える

```
$ sdk default java 8.0.202-amzn
```