📘

UbuntuでマルチJavaバージョン(Temurin)の切替

2022/12/05に公開約2,900字

前描き

現在LTSのJavaバージョンでは三つがあります。

  1. 11(2022年12月の現在のメイジャーバージョン)
  2. 8
  3. 17

案件によりますが、使用するバージョンが違うかも知れません。コマンドラインからビルドする時、JAVA_HOMEを指定しての実施ではないかと思います。
しかし、手でコマンドを打つ時、一時的にバージョンを切り替えたい場合、インストールしたパスを暗記しないと無理です。
この時、Java切替のアリスを用意すれば、ストレスがなく切り替えられると思います。

Javaのベンダーが沢山ありますが、Eclipse Temurinを愛用しています。
以降説明はEclipse Temurinをベースに説明します。

メジャーバージョンのJDKのインストール

リポジトリの追加

sudo apt-get install -y wget apt-transport-https
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list

sudo apt-get update # update if you haven't already

v17のインストール

sudo apt-get install temurin-17-jdk

v11のインストール

sudo apt-get install temurin-11-jdk

v8のインストール

sudo apt-get install temurin-8-jdk

インストール済みのバージョンの確認

$ ll /usr/lib/jvm/
total 12K
drwxr-xr-x 9 root root 4.0K Dec  2 10:51 temurin-11-jdk-amd64
drwxr-xr-x 9 root root 4.0K Dec  2 10:50 temurin-17-jdk-amd64
drwxr-xr-x 8 root root 4.0K Dec  2 10:52 temurin-8-jdk-amd64

バージョンの切替

切替の事前準備

下記のスクリプトをBASHのリソースに追加します。
zshの場合、~/.zshrcに下記のコマンドを追記してください。

# Jave Environment
export JAVA_17_HOME="/usr/lib/jvm/temurin-17-jdk-amd64"
export JAVA_11_HOME="/usr/lib/jvm/temurin-11-jdk-amd64"
export JAVA_8_HOME="/usr/lib/jvm/temurin-8-jdk-amd64"

# Default Java Version
export JAVA_HOME="${JAVA_17_HOME}"
sudo ln -sf ${JAVA_17_HOME}/bin/java /etc/alternatives/java

# Change Java Version
alias java17="export JAVA_HOME=$JAVA_17_HOME && sudo ln -sf ${JAVA_17_HOME}/bin/java /etc/alternatives/java"
alias java11="export JAVA_HOME=$JAVA_11_HOME && sudo ln -sf ${JAVA_11_HOME}/bin/java /etc/alternatives/java"
alias java8="export JAVA_HOME=$JAVA_8_HOME && sudo ln -sf ${JAVA_8_HOME}/bin/java /etc/alternatives/java"

バージョンの切替確認

$ java8
$ java -version
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.352-b08, mixed mode)
$ java11       
$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
$ java17       
$ java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment Temurin-17.0.5+8 (build 17.0.5+8)
OpenJDK 64-Bit Server VM Temurin-17.0.5+8 (build 17.0.5+8, mixed mode, sharing)

参照資料

  1. Eclipse Temurin
  2. Linux (RPM/DEB/APK) installer packages
  3. Upgrade to OpenJDK Temurin using Homebrew

Discussion

ログインするとコメントできます