ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

SDKMANによるJava系言語開発環境の構築

だいぶん昔にJavaでデスクトップ・アプリを作ったことがあるが、本格的にAndroidアプリ開発に取り組むようになって、Javaプログラミングをまたやるようになった(JavaよりKotlinの方を使うことが多いが)。

Pythonほどではないが、Javaも複数のバージョンを使い分けなければならない場合があり、以前はUbuntuでは複数のバージョンのOpenJDKをインストールしてupdate-alternativesを使って切り替えていたが、SDKMANの存在を知ってから、これを利用するようになった。

SDKMANはJVMベース言語のバージョン管理ツールで、JavaだけでなくKotlinやScalaなどにも対応している。Java系言語はこれだけで複数のバージョンの開発環境を構築することができる。

sdkman.io

言語バージョン管理ツールを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/USERNAME/.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/USERNAME/.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/USERNAME/.sdkman/candidates/maven/current
Java version: 17.0.8, vendor: Eclipse Adoptium, runtime: /home/USERNAME/.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/USERNAME/.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/USERNAME/.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)

【参照リンク】

sdkman.io