概要
今回はJavaのバージョンを切り替えできることを前提とする。
仕事で使う場合はバージョンの切り替えがよく必要になるからだ。
流れとしては、NodeやPython、Rubyの環境構築でよくやるパッケージマネージャーをインストールし、
それ経由でJavaのOpenJDKをインストールする。
SDKMAN!のインストール
まずは、パッケージマネージャーであるSDKMAN!をインストールする。
これはrbenvなどと同じように、Javaのバージョン切り替えをかんたんにするものなので
これを使ってインストールするのが一番楽である。
Installation | SDKMAN! the Software Development Kit Manager
上記のドキュメントに従い、インストールする。
curl -s "https://get.sdkman.io" | bash
インストールが終わると、 .zshrc
もしくは .bash_profile
に以下の処理が追加されているのを確認できる。
これで次からターミナルを起動したときに、SDKMAN!のコマンドのパスが通っている形になる。
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
インストールしたばかりは↑の情報が反映されていないので、手動で反映する。
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdkコマンドを確認
sdkコマンドが使えるようになっているか確認。
$ sdk version
SDKMAN!
script: 5.19.0
native: 0.5.0
インストール可能なバージョンを確認
以下のコマンドでインストール可能なJavaのバージョン一覧を確認することができる。
sdk list java
このように、複数のベンダーと、そこから提供されているバージョンを確認することができる。
================================================================================
Available Java Versions for macOS 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 23.0.2 | amzn | | 23.0.2-amzn
| | 23.0.1 | amzn | | 23.0.1-amzn
| | 21.0.6 | amzn | | 21.0.6-amzn
| | 21.0.5 | amzn | | 21.0.5-amzn
| | 17.0.14 | amzn | | 17.0.14-amzn
| | 17.0.13 | amzn | | 17.0.13-amzn
| | 11.0.26 | amzn | | 11.0.26-amzn
| | 11.0.25 | amzn | | 11.0.25-amzn
| | 8.0.442 | amzn | | 8.0.442-amzn
| | 8.0.432 | amzn | | 8.0.432-amzn
Gluon | | 22.1.0.1.r17 | gln | | 22.1.0.1.r17-gln
| | 22.1.0.1.r11 | gln | | 22.1.0.1.r11-gln
| | 22.0.0.3.r17 | gln | | 22.0.0.3.r17-gln
| | 22.0.0.3.r11 | gln | | 22.0.0.3.r11-gln
GraalVM CE | | 23.0.2 | graalce | | 23.0.2-graalce
| | 23.0.1 | graalce | | 23.0.1-graalce
| | 21.0.2 | graalce | | 21.0.2-graalce
| | 17.0.9 | graalce | | 17.0.9-graalce
# 略
インストール
sdk install java <Identifier>
で特定のバージョンを指定してインストールすることができる。
今回は、temurinのバージョン23と、LTSの21をインストールしてみる。
■23をインストール
$ sdk install java 23.0.2-tem
Downloading: java 23.0.2-tem
In progress...
######################################################################################################################################################################### 100.0%
Repackaging Java 23.0.2-tem...
Done repackaging...
Cleaning up residual files...
Installing: java 23.0.2-tem
Done installing!
Setting java 23.0.2-tem as default.
■21をインストール
$ sdk install java 21.0.6-tem
Downloading: java 21.0.6-tem
In progress...
######################################################################################################################################################################### 100.0%
Repackaging Java 21.0.6-tem...
Done repackaging...
Cleaning up residual files...
Installing: java 21.0.6-tem
Done installing!
Do you want java 21.0.6-tem to be set as default? (Y/n): y # ここでYESを選択したので、デフォルトが21になった
Setting java 21.0.6-tem as default.
今使っているバージョンを確認
期待通り、21が選択されていることを確認できた。
$ sdk current java
Using java version 21.0.6-te
$ java --version
openjdk 21.0.6 2025-01-21 LTS
OpenJDK Runtime Environment Temurin-21.0.6+7 (build 21.0.6+7-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.6+7 (build 21.0.6+7-LTS, mixed mode)
パスもsdkmanを用いたものを参照することができている。
$ echo $JAVA_HOME
/Users/username/.sdkman/candidates/java/current
デフォルトで使うバージョンを指定
デフォルトで利用したいバージョンを指定する場合は、以下のように指定する。
$ sdk default java 23.0.2-tem
setting java 23.0.2-tem as the default version for all shells.
今どんなバージョンがローカルにインストールされているか確認
インストール可能なSDKを確認するコマンドで、確認することができる。
sdk list java
インストール済みのものは installed
が表示される。
Semeru | | 21.0.5 | sem | | 21.0.5-sem
| | 17.0.13 | sem | | 17.0.13-sem
| | 11.0.25 | sem | | 11.0.25-sem
| | 8.0.432 | sem | | 8.0.432-sem
Temurin | | 23.0.2 | tem | installed | 23.0.2-tem
| | 23.0.1 | tem | | 23.0.1-tem
| >>> | 21.0.6 | tem | installed | 21.0.6-tem
| | 21.0.5 | tem | | 21.0.5-tem
ディレクトリごとで使うバージョンを指定
env
コマンドを使うと、プロジェクトごとにバージョンを指定することが可能。
初期設定
以下のコマンドで、そのディレクトリに .sdkmanrc
が作られる。
$ sdk env init
.sdkmanrc created.
中身はこんな感じ。
$ cat .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=23.0.2-tem
現在のバージョン確認
$ sdk env
Using java version 23.0.2-tem in this shell.
設定をインストール
.sdkmanrc
が既に存在するプロジェクトで、そのプロジェクトに関するSDKを自動でインストールするには、以下のコマンド。
sdk env install