これは、なにをしたくて書いたもの?
自分の使い方というと、最新のJavaや開発中のJavaの情報を追うというよりも、リリースされてから(今のご時世だとLTS)
ちょっと間を空けて使い始めることが多いです。
で、以前はOpenJDKのソースリポジトリを見ることはそんなになかったのですが、勉強している時にたまに見たり、
エントリを書く時にソースコードへリンクをつけるようなこともたまにするようになりました。
今までソースコードをまったく見ていなかったということはないのですが、JDKに含まれているsrc.zip
を
見ていた感じですね。
OpenJDKのソースリポジトリがGitHubに移ったというのも、やりやすくなったなぁと。
OpenJDKのソースコード、GitHubへの移行を完了 - Publickey
GitHub - openjdk/jdk: JDK main-line development
ただ、自分のように「最新のJavaや開発中のJavaの情報を追うというよりも、リリースされてから(今のご時世だとLTS)
ちょっと間を空けて使い始めることが多い」という文脈でこのリポジトリを見ると、ちょっと違うかも?と思ったので
ちゃんと見てみることにしました。
※ AdoptOpenJDKとかは考えないことにします
環境
具体的なバージョンがあった方がよいだろうということで、まずは手元の環境で使っているJavaのバージョンを。
$ java --version openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Ubuntu Linux 20.04 LTSにインストールした、OpenJDK 11です。2020年11月4日と日付も出ています。
こちらのパッケージからインストールしたものですね。
11.0.9.1+1-0ubuntu1~20.10 : openjdk-lts package : Ubuntu
https://git.launchpad.net/ubuntu/+source/openjdk-lts?h=ubuntu%2Ffocal-devel
https://git.launchpad.net/ubuntu/+source/openjdk-lts/tree/?h=applied/11.0.9.1%2b1-0ubuntu1_20.04
OpenJDK 11のリポジトリを探す
ところで、OpenJDK 11をOpenJDKのサイトからダウンロードしようとすると、build 11+28
が置かれています。
Java Platform, Standard Edition 11 Reference Implementations
最終リリースは2018年9月だとも書かれていますが、このサイトから配布されているOpenJDKのリリースモデルからすると、
そりゃあそうだという感じですね。
OpenJDKのソースリポジトリのOpenJDK 11のタグを確認してみると、最後に作られているものは
同じですね。
Release jdk-11+28 · openjdk/jdk · GitHub
OpenJDK 11のリリースは、2018年8月でした。
Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 - Publickey
というわけで、jdk.java.net
で配布されているものはさておき、今の自分が使っているOpenJDK 11は明らかにこれでは
ありません。
ところで、GitHubを見るとOpenJDK 11らしきリポジトリが3つ見つかります。いずれもリードオンリーなミラーだと書かれています。
Read-only mirror of https://hg.openjdk.java.net/jdk/jdk11/
GitHub - openjdk/jdk11: Read-only mirror of https://hg.openjdk.java.net/jdk/jdk11/
Read-only mirror of https://hg.openjdk.java.net/jdk-updates/jdk11u/
GitHub - openjdk/jdk11u: Read-only mirror of https://hg.openjdk.java.net/jdk-updates/jdk11u/
Read-only mirror of https://hg.openjdk.java.net/jdk-updates/jdk11u-dev/
GitHub - openjdk/jdk11u-dev: Read-only mirror of https://hg.openjdk.java.net/jdk-updates/jdk11u-dev/
これらは、Mercurialが本体なんですね。
ちなみに、ここで結論を書いておくと自分の用途では以下を見るのが良さそうです。
GitHub - openjdk/jdk11u: Read-only mirror of https://hg.openjdk.java.net/jdk-updates/jdk11u/
また、今の環境で見ているのは
$ java --version openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
こちらのタグ相当だ、ということになりそうです。
Release jdk-11.0.9.1+1 · openjdk/jdk11u · GitHub
見たいOpenJDKのリリース直後なら、こちらでも良いかもです。
GitHub - openjdk/jdk: JDK main-line development
GitHub - openjdk/jdk11: Read-only mirror of https://hg.openjdk.java.net/jdk/jdk11/
OpenJDK 11の各リポジトリを見てみる
最初にこちら。
タグの一覧を見てみると、最後に出てくるのはjdk.java.net
のOpenJDK 11の最終リリースと同じものです。
Releases · openjdk/jdk11 · GitHub
2018年8月ですね。まさにこの内容です。
Java Platform, Standard Edition 11 Reference Implementations
ここで、「JDK Update Releases」というページを見てみます。
こちらは、JDKのアップデートリリースに関する情報が書かれているようです。
OpenJDK 11のアップデートページに行くと、2018年8月以降の更新が書かれています。
JDK11u - JDK11u - OpenJDK Wiki
このページを見ると、jdk11u
とjdk11u-dev
の違いがわかります。
Development takes place in the jdk11u-dev Mercurial repository and should be the primary place for OpenJDK committers to submit their work.
Code from the development repository is regularly tagged and promoted to the master jdk11u repository, which is used to stabilize and deliver the quarterly releases. Distributors should use this as their primary source for creating OpenJDK builds.
つまり、開発はjdk11u-dev
で行われ、定期的にタグ付けされてjdk11u
に反映されます、と。
リポジトリのセクションにも、同じような説明がありますね。
jdk11u-dev: Always open repository for development of upcoming JDK 11 Update releases. Pushes after jdk11u-fix-yes approval. Check here for clearance.
jdk11u: Repository used for Rampdown of JDK 11 Update releases. Pushes only during 4-weeks rampdown period after jdk11u-critical-yes approval. Check here for clearance.
なので、自分のようにリリース済みのOpenJDKの特定のバージョンのソースコードを見る場合は、jdk11u
の方を見るのが
正解のようです。
リリース直後なら、このあたりを見ていても良さそうですね。
GitHub - openjdk/jdk: JDK main-line development
GitHub - openjdk/jdk11: Read-only mirror of https://hg.openjdk.java.net/jdk/jdk11/