1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows環境でscoopを使った複数JDK管理

Posted at

はじめに

記事作成時点で新しい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はまだ登録されていないようです。

qiita-square

リストは公式ページの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ファイルを取得してください。

qiita-square

その際、「SHA256」リンクから表示されるハッシュ値も控えておいてください。

マニフェストファイルの作成

Scoopに登録するためのマニフェストファイル(JSON)を作成します。 例としてsemeru25-jdk.jsonというファイル名で、以下のようなJSONファイルを作成します。(パスやハッシュ値はご自身の環境に合わせてください)

semeru25-jdk.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

登録後のパッケージのリストは次のようになります。
qiita-square
これでscoop reset semeru25-jdkのように、他のバージョンと同様に切り替えが可能になります。

おわりに

複数JDKを使い分ける方法は、他にもIDE(統合開発環境)側で設定したり、仮想開発環境を利用したりと様々です。 Scoopを使った方法は、OSの環境変数をシンプルに管理できるためおすすめです。 ぜひカジュアルに新しいJDKの世界にチャレンジしてみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?