AzulのプリンシパルエンジニアであるGerrit Grunwald氏が、インストールされているJDKの監視と更新を行う新ツールJDKMonを発表した。SDKMAN!やHomebrew、Chocolateyといった、既存のパッケージ管理システムを代替するものだ。現在、数多くのJDKディストリビューションが配布されており、ユーザのマシン上でそれらを常に最新に保つことが難しくなっている。JDKMonはインストール済のJDKディストリビューションを表示して、それぞれボタンひとつで最新バージョンをダウンロードできるようにしてくれる。
このツールは、各オペレーティングシステムの既定のディレクトリからJDKディストリビューションを検索する — WindowsではC:\Program Files\Java\
、MacOSでは/System/Volumes/Data/Library/Java/JavaVirtualMachines/
、Linuxでは/usr/lib/jvm
が対象だ。
以下のスクリーンショットは、既定のWindowsディレクトリにJDKディストリビューションが何もインストールされていない場合を想定している。
ツール内で右クリックすると、既定ディレクトリを再スキャンする、検索パスに他のディレクトリを追加する、既定の検索パスに戻る、という選択肢が提供される。最新のアップデートが3時間周期で自動的に取得される他、マニュアルで再検索することも可能である。検索パスの各フォルダは、ユーザのホームフォルダにあるjdkmon.properties
ファイルに格納される。
JDKMonは、検索パスを対応するディレクトリとともに表示する。検索パス内に見つかったすべてのJDKディストリビューションについて、現在のバージョンと入手可能な最新バージョンが一覧表示される。各ディストリビューションにはひとつ以上のボタンがあり、ダウンロードする公開中のパッケージを選択することができる。
ライセンス上の問題から、一部のディストリビューションは直接ダウンロードすることができない。その場合、JDKMonのダウンロードボタンは無効表示されている。JavaFXを含むディストリビューションには、名称に続いてテキスト(FX)
が、代替ディストリビューションが公開されている場合は、バージョン番号の代わりにアイコン(i)
が、それぞれ表示される。パッケージタイプボタンのひとつをクリックすると、ダウンロード先を選択するダイアログが表示される。ダウロードを開始すると、プログレスバーが表示される。ダウンロードが完了すれば、手作業によってパッケージのインストールが可能になる。
JDKMonの各リリースには、Windows、MacOS、Linux用のインストーラが用意されている。次のコマンドによって、プラットフォーム毎のJARファイルをJDK 16上で実行することも可能だ。
java -jar --enable-preview JDKMon-16.0.jar
.
JDKMonは、最新のJDKバージョンに関する情報を、さまざまなディストリビューションからOpenJDKのビルドを検出する汎用APIのDiscoAPIを使って取得している。現時点でJDKMonがサポートしているディストリビューションは以下のものだ — AdoptOpenJDK、AdoptOpenJDK OpenJ9、Corretto、Dragonwell、GraalVM CE、JetBrains、Liberica、Liberica Native、Mandrel、Microsoft、OJDKBuild、OpenLogic、Oracle、Oracle OpenJDK、Red Hat、SAP Machine、Temurin、Trava、Zulu、Zulu Prime。
JDKMonはJavaFXで記述されており、WindowsとMacOSのシステムトレイでアプリケーションを実行するFXTrayIconライブラリを使用している。ただし、システムトレイ機能はLinuxディストリビューションでは動作しないので、ドック経由で実行することになる。
JDKMonはフルGUIアプリケーションで、コマンドラインインターフェースは持っていない。この点は、コマンドライン専用のSDKMAN!やHomebrewと対照的だ。なお、Chocolateyは、GUIとコマンドラインインターフェースの両方を提供している。