Magnolia Tech

いつもコードのことばかり考えている人のために。

OpenJDKのメンテナンス状況について

JDKのメンテナンス状況、バイナリの提供状況に関する覚え書き。

OpenJDKの開発サイクル

OpenJDKプロジェクトは、半年に一回JDKのメジャーバージョンをリリースしている。2021年11月時点での最新版としてJDK 17がリリースされている。LinuxWindowsmacOS用のバイナリは、Oracleのサイトから入手可能。

JDK 17.0.1 GA Release

OracleはOpenJDKのバイナリを最新のメジャーバージョンのみ提供する。つまり、JDK 17がリリースされた以降はJDK 16以前のバイナリをOracleは提供しない。アーカイブとして過去のリリースへのリンクは貼られているが、アップデートされていない旨の記載が有る。

JDK 16 Releases

一方で過去のJDKはそれぞれ別のリポジトリにコピーされ、それぞれソースコードのメンテナンスが続けられている。

Main - Main - OpenJDK Wiki

OpenJDK: JDK Updates Project

JDK8, 11, 13, 14, 15, 16のリポジトリはメンテナンスが続いていて、最新のJDKに反映された修正のバックポートされて取り込まれている。

例えば、JDK15のリポジトリのコミットログを見ると随時アップデートされていることが分かる。

JDK 15u - JDK 15u - OpenJDK Wiki

GitHub - openjdk/jdk15u: https://wiki.openjdk.java.net/display/JDKUpdates/JDK+15u

また、その成果が一定間隔でソースコード一式をGeneral-Availability Releasesとして提供している。

Tags · openjdk/jdk15u · GitHub

しかし、あくまでソースコードのみのリリースであるため、バイナリは提供されておらず、使いたい場合は自分でビルドする必要がある。

Oracle以外のベンダはOracleJDKのサポートポリシーに合わせてOpenJDK8, 11, 17のみを長期サポート(LTS)対象としているが、ベンダがその気になればこれらのソースコードを元に、他のJDKの長期サポートを提供することも可能????

HomebrewでインストールされるOpenJDKは独自ビルド

macOSのパッケージ管理ツールであるHomebrewでopenJDKをインストールすると、最新のJDKソースコードから独自にビルドされてインストールされる。2021年11月現在は最新バージョンのJDK 17がインストールされるが、JDKがメジャーバージョンアップすると差し替えられる。

homebrew-core/openjdk.rb at master · Homebrew/homebrew-core · GitHub

macOSのHomebrewには最新のJDK 17以外にもOpenJDK 11をインストールするFormulaが用意されているが、それらもJDK Update Releasesで提供されるソースコードを元にインストール時に独自にビルドされている(OpenJDK 8だけなぜかリンク先がGitHubではなく、Open Source Community Infrastructureになっている)。

homebrew-core/openjdk@11.rb at master · Homebrew/homebrew-core · GitHub

当然だが、独自にビルドされたバイナリなので、サポートなどは提供されない。自分でビルドして、分からなければ知っている人に聞くか、自分で調べるしかない。

なお、JDKをビルドするためには他のバージョンのJDKがインストールされている必要があるためフリーで入手可能なバイナリがダウンロードされるようになっているのが興味深い。

この記事を読むと、以前はOracleが提供するOpenJDKバイナリへのリンクが貼られていた模様。

OpenJDK 11 を Homebrew で macOS にインストールする - Qiita

バイナリの入手方法について

次回に続く...