Skip to content
Latchkey

SDKMAN vs asdf: JVM 特化かポリグロットか?

SDKMAN は JVM の SDK(Java、Kotlin、Gradle、sbt)に特化。asdf はプラグイン経由で多数の言語のバージョンを管理します。

SDKMAN は JVM の世界に注力し、Java ディストリビューション、Kotlin、Scala、Gradle、Maven などのツールを、ベンダーとバージョンをキュレーションしたカタログでインストール・切り替えします。asdf は言語非依存で、JVM ツールに加えて Node、Python、Ruby などをプラグインと単一の .tool-versions ファイルでカバーします。JVM 専用のチームには SDKMAN が深く便利で、ポリグロットなリポジトリには asdf がすべてを統一します。

SDKMANasdf
フォーカスJVM エコシステムポリグロット
Java ディストロ多数のベンダーをキュレーションプラグイン経由
設定ファイル標準ファイルなし.tool-versions
カバレッジJVM ツール多数の言語
最適な用途JVM 専用チーム多言語リポジトリ

CI では

SDKMAN は特定の Java ベンダーとバージョンの固定を容易にし、JVM 専用のパイプラインによく適合します。asdf は JVM ツールを他のすべてと一緒に1つの .tool-versions に固定するため、ポリグロットなモノレポではより整理されます。CI では多くの JVM チームは単に setup-java を使い、どちらのツールもローカルのパリティでより重要になります。

高速化

固定したバージョンをキーに、インストール済みの SDK やツールのディレクトリを cache しましょう。どちらも CI runner 上で動作し、より高速なマネージド runner は JDK とツールのインストール手順を短縮します。

結論

深くキュレーションされた Java ディストリビューションの選択肢がほしい JVM 中心のチームには SDKMAN。すべての言語で1つのツールと1つの設定にしたいポリグロットなコードベースには asdf。両者はうまく共存します - ローカルの JVM 作業には SDKMAN、リポジトリ全体のバージョン固定には asdf。

関連ガイド