だいぶん昔にJavaでデスクトップ・アプリを作ったことがあるが、本格的にAndroidアプリ開発に取り組むようになって、Javaプログラミングをまたやるようになった(JavaよりKotlinの方を使うことが多いが)。
Pythonほどではないが、Javaも複数のバージョンを使い分けなければならない場合があり、以前はUbuntuでは複数のバージョンのOpenJDKをインストールしてupdate-alternatives
を使って切り替えていたが、SDKMANの存在を知ってから、これを利用するようになった。
SDKMANはJVMベース言語のバージョン管理ツールで、JavaだけでなくKotlinやScalaなどにも対応している。Java系言語はこれだけで複数のバージョンの開発環境を構築することができる。
言語バージョン管理ツールをasdfに代えてから、新しいPCの開発環境ではSDKMANを利用していないが、古いPCの開発環境にはSDKMANが残っている。自分の備忘録として、SDKMANのインストールと使い方の要点を本記事に書いておく。
SDKMANのインストール
SDKMANのサイトに書いてあるとおり、以下のコマンドを実行するとインストールできる。
$ curl -s "https://get.sdkman.io" | bash
このコマンドを実行すると、~/.bashrc
に以下の記述が追加される(~/.zshrc
が存在する場合はそれにも)。
#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"
インストール後、下のコマンドを実行すればSDKMANが利用できるようになる。
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
SDKMANによるJavaのインストール
SDKMANによって利用可能なJavaのバージョンを知るには、下のコマンドを実行する。
$ sdk list java
上のコマンドによって表示されるバージョンの中から任意のものを選択して、Javaをインストールできる。
$ sdk install 17.0.8-tem Downloading: java 17.0.8-tem In progress... ################################################################################################################################################################################################# 100.0% Repackaging Java 17.0.8-tem... Done repackaging... Installing: java 17.0.8-tem Done installing! Setting java 17.0.8-tem as default.
SDKMANが対応している各言語にはデフォルトのインストール対象バージョンが設定されており、下のコマンドによって、そのデフォルトバージョンのJavaをインストールすることもできる。言語は使用するがバージョンは特に決めていない場合は、これをインストールしておけば良いだろう。
$ sdk install java
選択したバージョンのJavaがインストールできていることを確認しておく。
$ java --version openjdk 17.0.8 2023-07-18 OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7) OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)
いずれかのバージョンのJavaをインストールした後、再ログインすると、環境変数JAVA_HOME
が設定される。
$ exec $SHELL -l $ echo $JAVA_HOME /home/LOGINUSER/.sdkman/candidates/java/current
SDKMANによるKotlinのインストール
利用可能バージョン一覧の表示
$ sdk list kotlin
言語のインストール
- 指定バージョンのインストール
$ sdk install kotlin 1.9.0 $ kotlin -version Kotlin version 1.9.0-release-358 (JRE 17.0.8+7)
- デフォルトバージョンのインストール
$ sdk install kotlin $ kotlin -version
再ログインによる環境変数設定の確認
$ exec $SHELL -l $ echo $KOTLIN_HOME /home/LOGINUSER/.sdkman/candidates/kotlin/current
SDKMANによるMavenのインストール
利用可能バージョン一覧の表示
$ sdk list maven
言語のインストール
- 指定バージョンのインストール
$ sdk install maven 3.9.4 $ mvn -version Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9) Maven home: /home/yuhri/.sdkman/candidates/maven/current Java version: 17.0.8, vendor: Eclipse Adoptium, runtime: /home/yuhri/.sdkman/candidates/java/17.0.8-tem Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "5.16.15-76051615-generic", arch: "amd64", family: "unix"
- デフォルトバージョンのインストール
$ sdk install maven $ mvn -version
再ログインによる環境変数設定の確認
$ exec $SHELL -l $ echo $MAVEN_HOME /home/LOGINUSER/.sdkman/candidates/maven/current
SDKMANによるScalaのインストール
利用可能バージョン一覧の表示
$ sdk list scala
言語のインストール
- 指定バージョンのインストール
$ sdk install scala 3.3.0 $ scala -version Scala code runner version 3.3.0 -- Copyright 2002-2023, LAMP/EPFL
- デフォルトバージョンのインストール
$ sdk install scala $ scala -version
再ログインによる環境変数設定の確認
$ exec $SHELL -l $ echo $SCALA_HOME /home/LOGINUSER/.sdkman/candidates/scala/current
言語バージョンの設定
システム全体に適用されるグローバルな言語バージョンは以下のコマンドによって設定できる。
$ sdk default java 17.0.8-tem
$ java --version openjdk 17.0.8 2023-07-18 OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7) OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)
ターミナルの中で下のようなコマンドを実行すると、そのセッション限定で言語バージョンを変更することもできる。
$ sdk use java 17.0.8-tem
$ java --version openjdk 17.0.8 2023-07-18 OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7) OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)
【参照リンク】