はじめに
記事作成時点で新しいLTSであるJDK25がリリースされましたね。
既存業務のJDKはそのまま使いながら、新しいJDKも検証したい、といった複数バージョンの使い分けは悩ましい問題です。
当記事では、Windows向けパッケージマネージャー「Scoop」を使い、なるべく簡単にJDKの導入と切り替えを行う手順をまとめます。
Scoop
Scoopは、Windows向けのCUI(CLI)パッケージマネージャーです。Windowsには公式のWingetというパッケージマネージャーもありますが、Scoopは特にバージョンの切り替え(scoop resetコマンド)が容易という特徴を持ちます。当記事の目標である「複数JDKの管理」には、この機能が非常に適しています。
Scoopのインストール
公式ページのトップに記載されているコマンドを、PowerShellで実行してインストールします。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
JDKの管理
当記事では、IBMが提供するJDKであるSemeru Runtimeを中心に解説します。
インストール可能なJDKの確認
scoop search semeru
少し時間がかかりますが、名前にsemeruを含むパッケージのリストが表示されます。
記事作成時点ではこのような選択肢があります。JDK25はまだ登録されていないようです。
リストは公式ページのAppsからも確認可能です。
バケットの作成
Scoopにはパッケージの管理単位として「バケット (Bucket)」という仕組みがあります。多くのアプリはmainというデフォルトのバケットに存在しますが、JDKはjavaという専用バケットが用意されており、ここに様々なJDK(をインストールするためのマニフェストファイル)が登録されています。
今回はJDKをインストールするため、このjavaバケットを追加します。
scoop bucket add java
JDKのインストール
利用可能なJDKの名前を指定して、次のコマンドでインストールを行います。
scoop install java/semeru17-jdk
scoop install java/semeru21-jdk
JDKのインストール先は、デフォルトでは次のパスになります。
C:\Users\(UserName)\scoop\apps
JDKの切り替え
次のコマンドで、利用するJDKの切り替えが可能です。JAVA_HOMEなどの環境変数も自動で設定されます。
scoop reset semeru17-jdk
インストール済JDKの確認
切り替え時の名前確認など、インストール済みのJDK(Scoop管理下のパッケージ)リストは次のコマンドで表示します。
scoop list
リストされないJDKのインストール
冒頭に記載したJDK 25は、記事作成時点ではjavaバケットに登録されていません。このようにリストされていないJDKの場合でも、マニフェストファイルを自作することでScoopの管理に含めることができます。
Semeru Runtimeのダウンロード
Semeruのダウンロードサイトから、必要なJDKのZipファイルを取得してください。
その際、「SHA256」リンクから表示されるハッシュ値も控えておいてください。
マニフェストファイルの作成
Scoopに登録するためのマニフェストファイル(JSON)を作成します。 例としてsemeru25-jdk.jsonというファイル名で、以下のようなJSONファイルを作成します。(パスやハッシュ値はご自身の環境に合わせてください)
{
"version": "25+36-0.55.0",
"license": "GPLv2+CE",
"url": "file:///C:/temp/ibm-semeru-open-jdk_x64_windows_25_36_openj9-0.55.0.zip",
"hash": "c970eb6fb221069dac0a7cfa75a3d058005bc23b2035a05d54fab0174190a2fd",
"extract_dir": "jdk-25+36",
"env_add_path": "bin",
"env_set": {
"JAVA_HOME": "$dir"
}
}
マニフェスト内の値は次の要領で作成します。
| キー | 値 |
|---|---|
| version | バージョンを把握するための文字列です。 値はScoopの挙動に影響しないため、任意の値で大丈夫です。 ダウンロード画面のテキストなどが妥当でしょう。 |
| license | ライセンス形態を把握するための文字列です。 値はScoopの挙動に影響しないため、任意の値で大丈夫です。 ダウンロード画面のテキストなどが妥当でしょう。 |
| url | ダウンロードしたZIPファイルの絶対パスを指定します。 file:///プレフィックスを忘れないよう注意してください。 |
| hash | ダウンロード時に控えたSHA256ハッシュ値を設定します。 |
| extract_dir | JDKのZIPファイル構造の、第一階層のフォルダ名を指定します。 ZIPを展開して確認のうえ設定してください。 |
Scoopへのインストール
次のコマンドで、作成したマニフェストファイルを指定してインストールします。マニフェストファイルのファイル名(拡張子除く)がそのままScoop上の名前として扱われます。
scoop install C:\temp\semeru25-jdk.json
登録後のパッケージのリストは次のようになります。

これでscoop reset semeru25-jdkのように、他のバージョンと同様に切り替えが可能になります。
おわりに
複数JDKを使い分ける方法は、他にもIDE(統合開発環境)側で設定したり、仮想開発環境を利用したりと様々です。 Scoopを使った方法は、OSの環境変数をシンプルに管理できるためおすすめです。 ぜひカジュアルに新しいJDKの世界にチャレンジしてみてください。