torutkのブログ

ソフトウェア・エンジニアのブログ

OpenJDKディストリビューション情報

OpenJDKディストリビューション情報を取得する

OpenJDKコミュニティでオープンソース開発され、GPLv2クラスパス例外で提供されるOpenJDKソースをいくつかの組織がビルドしOpenJDKバイナリを提供しています。組織としては、Oracleを始め、Eclipseファウンデーション、Azul Systems、Red HatAmazonMicrosoft、BellSoft、SAPなどかなりの数に上っています。

これらの情報を、提供元サイトを巡って集めるのは結構大変な作業となります。

Disco API

JavaとOpenJDKに関するコミュニティ foojay.io から、OpenJDKの様々なディストリビューションを見つける汎用のAPI(Web API)が提供されています。

github.com

例えば、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を呼び出すスタンドアロンのクライアントツールです。

github.com

WindowsmacOSLinux 用のインストーラが提供されます。また、同各OS用の実行可能JARファイルが提供されます。 JavaFXGUIを作成しているJavaアプリケーションです。

GUIJDKメジャーバージョン、マイナーバージョン、ディストリビューション名、OS、libc種類、CPU種類、アーカイブ種類と選択していくことでOpenJDKディストリビューションをダウンロードします。

画面操作例

JDKMon

PCにインストールされているOpenJDKディストリビューションを検出・一覧表示し、アップデートがあるかどうかを確認するツールです。

github.com

WindowsmacOSLinux 用のインストーラが提供されます。また、同各OS用の実行可能JARファイルが提供されます。 JavaFXGUIを作成しているJavaアプリケーションです。

Windowsでは、デフォルトでC:¥Program Files¥Java ディレクトリ下を検索、他のディレクトリにインストールしたJDKは手動で検索パスを設定することで検出されます。