Skip to content
Latchkey

jEnv vs SDKMAN: Java バージョンの管理

jEnv はすでにインストール済みの JDK 間を切り替えます。SDKMAN は JDK に加えて他の JVM ツールもインストール・管理します。

jEnv は薄いバージョン切り替えツールです。JDK は自分でインストールし(Homebrew、ベンダーパッケージ)、登録すると、jEnv が .java-version ファイルでプロジェクトごとに JAVA_HOME を設定します。SDKMAN はさらに進んで、多数のベンダーの JDK ディストリビューションをインストールし、Gradle、Maven、Kotlin などを1つのカタログから管理します。jEnv はミニマルで JDK をインストールする何かと組み合わせて使い、SDKMAN はオールインワンのインストーラ兼マネージャです。

jEnvSDKMAN
JDK のインストールしない(自分でインストール)する
JAVA_HOME の設定する、プロジェクトごとする
他の JVM ツールなしGradle、Maven、Kotlin など
設定ファイル.java-version標準ファイルなし
最適な用途既存 JDK の切り替えすべての JVM ツールのインストールと管理

CI では

CI では、JDK は通常 setup-java によって提供されるため、jEnv と SDKMAN はローカルのパリティの話が中心になります。jEnv はパッケージマネージャから JDK を取得しプロジェクトごとの切り替えだけを望む開発者に適し、SDKMAN は特定ベンダーの JDK と build ツールを1つのツールでインストールしたいチームに適します。いずれもローカルと CI の Java バージョンを揃えます。

高速化

固定したバージョンと lockfile をキーに、JDK のインストールと build ツールの cache を保存しましょう。どちらも CI runner 上で動作し、より高速なマネージド runner は JDK のセットアップと build の手順を短縮します。

結論

すでに別の方法で JDK をインストールしていて、プロジェクトごとの切り替えだけが必要なら jEnv。JDK ディストリビューションと JVM の build ツールをインストールする1つのツールがほしいなら SDKMAN。多くの JVM 開発者はインストールに SDKMAN を使い、別の切り替えツールを好む場合のみ jEnv 式の切り替えを使います。

関連ガイド