SDKMAN! メモ
久々更新です。 新しいテーブルとイスとキーボードによりモチベが高まっています。
SDKMAN! is 何
公式サイトより引用
The Software Development Kit Manager
だそうです。うん、そっか。
初心者的に解釈すると、Javaの言語自体のバージョンを管理できるツールです。 Rubyのrbenvを参考にしているのだとか。Pythonでいうとpyenv、Node.jsでいうとnvm、、、 どの言語にも大体ありますね。
SDKMAN!はScala、Kotlin等のJVMを使う言語や、Maven、Spling Boot等の主要なライブラリのSDKも提供しています。
何故SDKMAN!を使うのか
最近はDocker等によりその必要性が薄くなってきている感もありますが、コマンド一発でマイナーアップデートが取得出来たり、バージョン変えられたりしたらやはり便利です。
JavaだとIDE(IntelliJ IDEA)がその辺の面倒も見てくれるので今まで使用していなかったのですが、コマンドでちょちょいとJavaやScala使うことも多くなってきたのでインストールする気になりました。
今の使い方の想定としては、Java,Scala等の言語についてはSDKMAN!で管理して、Maven等は今まで通りなんも考えずにIDEに一任しようと思ってます。
SDKMAN!導入
公式サイトの通りにコピペすれば簡単です。
$ curl -s "https://get.sdkman.io" | bash $ source "$HOME/.sdkman/bin/sdkman-init.sh" $ sdk version
SDKMAN!ができること
JDK(Java Development Kit)のインストール
$ sdk install java #stableかつfomalなJavaがインストールできます。 $ sdk install java 19-tem #Temurinというコミュニティ版JDK。バージョンも指定します。
インストールできるJavai一覧
$sdk list java $ sdk list scala #scalaなんかもこんな感じで
想像以上に色んなJDKがありますね。GraalVMでネイティブ化するのもたのしそう。。
使用するJDKを設定
$ sdk use 19-tem
普段使うJDKを設定(グローバル)
$ sdk default 19-tem
普段使うJDKを設定(フォルダごと)
$ cd ~/work/sdkman_test # ここで使うバージョンを設定する。 $ sdk env init # これで初期設定。`.sdkmanrc`というファイルができる。 $ cat .sdkmanrc # Enable auto-env through the sdkman_auto_env config # Add key=value pairs of SDKs to use below java=17.0.4.1-tem $ sdk env # ただディレクトリに入るだけじゃダメで、このコマンドでバージョンが入れ替わる。
もしcd
だけでバージョンを切り替えたいなら、$ sdk config
でエディタが開くので、sdkman_auto_env=true
とする。
管理下のパッケージをアップグレード
$ sdk upgrade
SDKMAN!自体をアップデート
$ sdk selfupdate
なんか困ったとき
$ sdk update # なんかメタデータを更新してくれるらしい $ sdk flush # キャッシュを削除してくれるらしい $ sdk flush archives # 古いパッケージを削除してくれるらしい $ sdk flush tmp # 古いSDKMAN!のインストーラを削除してくれるらしい
その他
$ sdk broadcast # なんか新機能とかのニュースが見れるらしい
IDEとの連携
~/.sdkman $ tree -L 3 . ├── bin │ └── sdkman-init.sh ├── candidates │ └── java │ ├── 17.0.4.1-tem │ ├── 19-tem │ └── current -> 19-tem
~/.sdkman/candidates
にJDKの本体が収まっていました。これ使えばよさそうです。
まとめ
SDKMAN!は機能がシンプルで使いやすい印象です。 カジュアルにJavaを楽しめるようになったかなぁ。