OpenJDKディストリビューション情報を取得する
OpenJDKコミュニティでオープンソース開発され、GPLv2クラスパス例外で提供されるOpenJDKソースをいくつかの組織がビルドしOpenJDKバイナリを提供しています。組織としては、Oracleを始め、Eclipseファウンデーション、Azul Systems、Red Hat、Amazon、Microsoft、BellSoft、SAPなどかなりの数に上っています。
これらの情報を、提供元サイトを巡って集めるのは結構大変な作業となります。
Disco API
JavaとOpenJDKに関するコミュニティ foojay.io から、OpenJDKの様々なディストリビューションを見つける汎用のAPI(Web API)が提供されています。
例えば、JDK 16でWindows OS用、Intelプロセッサ、JavaFX同梱、zip形式配布のOpenJDKディストリビューションに関する情報を入手するには、次のようにWeb APIにリクエストします。
D:\work> curl -o result.json "https://api.foojay.io/disco/v2.0/packages? package_type=jdk&operating_system=windows&latest=available& javafx_bundled=true&version=16&architecture=x64&archive_type=zip"
- https://api.foojay.io/disco/v2.0/packages
Disco APIのRESTエンドポイントの1つでJDK(JRE)パッケージの情報を取得する際に使用 - package_type
JDKを指定(他にJRE指定可) - operating_system
windowsを指定(他にはmacos, linux, aixなど) - latest
指定したJDKバージョンの最新マイナーバージョンを対象 - javafx_bundled
JavaFXを同梱しているJDKを指定 - version
JDKバージョン(メジャーバージョン)を指定 - architecture
CPU種類を指定 - archive_type
JDK配布パッケージの形式を指定
Disco API への呼び出し結果は次となりました。 ディストリビューションが2つ該当(zulu、liberica)、バージョンは 16.0.2です。
{ "result": [{"id":"0d09e5c63678ab962efc9988b65c9f50", "archive_type":"zip", "distribution":"zulu", "major_version":16, "java_version":"16.0.2+7", "distribution_version":"16.32.15", "latest_build_available":true, "release_status":"ga", "term_of_support":"sts", "operating_system":"windows", "lib_c_type":"c_std_lib", "architecture":"x64", "package_type":"jdk", "javafx_bundled":true, "directly_downloadable":true, "filename":"zulu16.32.15-ca-fx-jdk16.0.2-win_x64.zip", "ephemeral_id":"a3b40394e66ee48a1937e844b2ad89b6030cd796", "links":{ "pkg_info_uri":"https://api.foojay.io/disco/v2.0/ephemeral_ids/a3b40394e66ee48a1937e844b2ad89b6030cd796" }, "free_use_in_production":true, "feature":[] }, {"id":"e7ffd61f0b054a386784bb6cd322b473", "archive_type":"zip", "distribution":"liberica", "major_version":16, "java_version":"16.0.2+7", "distribution_version":"16+7", "latest_build_available":true, "release_status":"ga", "term_of_support":"sts", "operating_system":"windows", "lib_c_type":"c_std_lib", "architecture":"amd64", "package_type":"jdk", "javafx_bundled":true, "directly_downloadable":true, "filename":"bellsoft-jdk16.0.2+7-windows-amd64-full.zip", "ephemeral_id":"e2179bcc00206df48e94432454d7602c67d177ba", "links":{ "pkg_info_uri":"https://api.foojay.io/disco/v2.0/ephemeral_ids/e2179bcc00206df48e94432454d7602c67d177ba" }, "free_use_in_production":true, "feature":[] }], "message":"2 package(s) found" }
Disco API を呼び出すクライアントツールがいくつか提供されています。
主要なIDEのプラグイン、主要なブラウザのプラグインが提供されるほか、スタンドアロンツールも提供されています。
JDK Butler
Disco APIを呼び出すスタンドアロンのクライアントツールです。
Windows、macOS、Linux 用のインストーラが提供されます。また、同各OS用の実行可能JARファイルが提供されます。 JavaFXでGUIを作成しているJavaアプリケーションです。
GUIでJDKメジャーバージョン、マイナーバージョン、ディストリビューション名、OS、libc種類、CPU種類、アーカイブ種類と選択していくことでOpenJDKディストリビューションをダウンロードします。
JDKMon
PCにインストールされているOpenJDKディストリビューションを検出・一覧表示し、アップデートがあるかどうかを確認するツールです。
Windows、macOS、Linux 用のインストーラが提供されます。また、同各OS用の実行可能JARファイルが提供されます。 JavaFXでGUIを作成しているJavaアプリケーションです。
Windowsでは、デフォルトでC:¥Program Files¥Java ディレクトリ下を検索、他のディレクトリにインストールしたJDKは手動で検索パスを設定することで検出されます。