📘
MacでマルチJavaバージョン(Temurin)の切替
前描き
現在LTSのJavaバージョンでは四つがあります。
- 21
- 17(2023年12月の現在のメイジャーバージョン)
- 11
- 8(新規プロジェクトには殆ど使わない)
案件によりますが、使用するバージョンが違うかも知れません。コマンドラインからビルドする時、JAVA_HOMEを指定しての実施ではないかと思います。
しかし、手でコマンドを打つ時、一時的にバージョンを切り替えたい場合、インストールしたパスを暗記しないと無理です。
この時、Java切替のアリスを用意すれば、ストレスがなく切り替えられると思います。
Javaのベンダーが沢山ありますが、Eclipse Temurinを愛用しています。
以降説明はEclipse Temurinをベースに説明します。
メジャーバージョンのJDKのインストール
v17のインストール
brew tap homebrew/cask-versions
brew install --cask temurin21
v17のインストール
brew tap homebrew/cask-versions
brew install --cask temurin17
v11のインストール
brew tap homebrew/cask-versions
brew install --cask temurin11
v8のインストール
brew tap homebrew/cask-versions
brew install --cask temurin8
インストール済みのバージョンの確認
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
21.0.1 (x86_64) "Eclipse Adoptium" - "OpenJDK 21.0.1" /Users/gekal/Library/Java/JavaVirtualMachines/temurin-21.0.1/Contents/Home
21.0.1 (x86_64) "Eclipse Adoptium" - "OpenJDK 21.0.1" /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
17.0.9 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 17" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
17.0.9 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 17" /Users/gekal/Library/Java/JavaVirtualMachines/temurin-17.0.9/Contents/Home
11.0.21 (x86_64) "Eclipse Adoptium" - "OpenJDK 11.0.21" /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
11.0.14.1 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 11" /Users/gekal/Library/Java/JavaVirtualMachines/temurin-11.0.14.1/Contents/Home
1.8.0_392 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
/Users/gekal/Library/Java/JavaVirtualMachines/temurin-21.0.1/Contents/Home
バージョンの切替
切替の事前準備
下記のスクリプトをBASHのリソースに追加します。
zshの場合、~/.zshrc
に下記のコマンドを追記してください。
# 各バージョンのJAVA_HOMEを設定
export JAVA_21_HOME=$(/usr/libexec/java_home -v 21)
export JAVA_17_HOME=$(/usr/libexec/java_home -v 17)
export JAVA_11_HOME=$(/usr/libexec/java_home -v 11)
export JAVA_8_HOME=$(/usr/libexec/java_home -v 1.8)
# Java Versionの切替アリスを設定
alias java21="export JAVA_HOME=$JAVA_21_HOME"
alias java17="export JAVA_HOME=$JAVA_17_HOME"
alias java11="export JAVA_HOME=$JAVA_11_HOME"
alias java8="export JAVA_HOME=$JAVA_8_HOME"
バージョンの切替確認
$ java8
$ java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.322-b06, mixed mode)
$ java11
$ java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)
$ java17
$ java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode, sharing)
$ java21
$ java -version
openjdk version "21.0.1" 2023-10-17 LTS
OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode)
Discussion