OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava

# はじめに
この記事は、2020年3月13日に正式出版された共著『[みんなのJava](https://gihyo.jp/book/2020/978-4-297-11199-1)』タイアップ企画としてお送りします。:grin:
英語版の記事は「*[Summary of information about OpenJDK and JDK Distributions](https://qiita.com/yamadamn/items/54b17cd92546ed308457)*」を参照ください。(リンク先も若干異なる箇所があります。)

https://x.com/gihyo_hansoku/status/1230682834408312833

簡単に紹介したときの[ブログ記事はこちら](https://yamadamn.hatenablog.com/entry/2020minjava-jdk)ですが、私の担当した2章のうち、2-4節「最新JDKディストリビューション大全」の最後に、動向把握用の情報源をまとめています。

電子版の場合はリンクを辿れると思いますが、紙版の書籍を購入いただいた方には厳しいでしょうし、今後にリンク先が変わる可能性もあるため、記事としてまとめておきます。
その他、2-4節にある注目しておきたいJDKへのリンクや、参考資料・追加情報も若干補足します。
2-5節にある各ディストリビューションのアップデート提供期間(EOL)は、ライフサイクルのリンクから最新情報を確認いただくのがよいですが、@YujiSoftware さんの記事「[Java のリリース日とEOLのまとめ](https://qiita.com/YujiSoftware/items/2f912af3c857e827ff95)」にまとまっています。

# OpenJDK Project の動向把握用の基礎情報源
|種類・名称|URL|用途・備考|
|:--|:--|:--|
|サイトTOP|https://openjdk.org/|OpenJDK 開発者用のため、少し構成が複雑|
|JDK Enhancement Proposal（JEP）|https://openjdk.org/jeps/0|JDK バージョンごとに入る機能確認。2011 年に策定され、[JCP](https://jcp.org/) による [JSR](https://jcp.org/en/jsr/overview) を牽引|
|JDK Project|https://openjdk.org/projects/jdk/|JDK リリース時期と含まれるJEPを記載|
|OCTLA Signatories List|https://openjdk.org/groups/conformance/JckAccess/jck-access.html|Javaの正式実装を証明する技術互換キット（TCK/JCK）にアクセスできる署名者一覧|
|OpenJDK Vulnerability Advisories|https://openjdk.org/groups/vulnerability/advisories/|[OpenJDK Vulnerability Group](https://openjdk.org/groups/vulnerability/)で共有・公表している脆弱性情報|
|SNS|[@OpenJDK](https://x.com/OpenJDK), [Mastodon](https://mastodon.social/@openjdk)|   |
|メーリングリスト（ML）|https://mail.openjdk.org/|興味があるトピックを参照・購読・投稿|
|JDK Bug System（JBS）|https://bugs.openjdk.org/|JIRA によるIssue のトラッキング（Bugだけでなく、機能拡張や互換性確認なども含む）|
|ソースコード管理|https://github.com/openjdk|以前は[Mercurialにて管理](https://hg.openjdk.org/)されていたが、Project SkaraにてGitHubへ移行|

# 主要なマルチプラットフォーム対応JDK
ここで紹介する内容は一般公開されている情報をもとにしており、商用サポートがある場合、専用サイトでは更に詳しい情報などもあると思います。
基本的には初の正式リリースが出た順番で記載しますが、Oracle JDK・Oracle OpenJDKは関連性が深いため、続けて記載します。

## Oracle JDK (Oracle Java SE)
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://www.oracle.com/jp/java/technologies/documentation.html （Oracleだけではなく他のJDKを使う場合も必要）|
|   |リリースノート|https://www.oracle.com/java/technologies/javase/jdk-relnotes-index.html|
|   |脆弱性関連|https://www.oracle.com/security-alerts/|
|   |ライフサイクル|https://www.oracle.com/jp/java/technologies/java-se-support-roadmap.html|
|   |動作環境|https://www.oracle.com/java/technologies/javase-subscription/documentation.html#sysconfig|
|動向把握|SNS|[@Java](https://x.com/Java)（OracleだけではなくJavaの各種情報源）|
|   |ブログ|https://blogs.oracle.com/java/|
|ダウンロード|個人・開発用|https://www.oracle.com/java/technologies/downloads/ ※最新版以外は要アカウント認証（[java.com](https://java.com/) のJRE は現状認証不要）|
|   |商用契約者向け|https://support.oracle.com/epmos/faces/DocContentDisplay?id=1439822.1|
|ライセンス|Oracle Binary Code License（BCL for Java SE）|https://www.oracle.com/downloads/licenses/binary-code-license.html ※～10、～8u201/202|
|   |Oracle Technology Network License Agreement（OTNLA） for Oracle Java SE|https://www.oracle.com/downloads/licenses/javase-license1.html ※11～、8u211/212～、(17以降)*.0.13～ : 次LTSの1年後から|
|   |Oracle No-Fee Terms and Conditions (NFTC)|https://www.oracle.com/downloads/licenses/no-fee-license.html ※(17以降)～*.0.12 : 次LTS後1年間まで|

- もともと[Java SE Embeddedは開発無償、配備はロイヤリティが必要](https://www.oracle.com/java/technologies/javase-embedded/embedded-faq.html)でしたので、JDK 11で同様になったとも言えます
- JDK 17から再度ライセンスが変更になり、限定的に無償になりましたが、詳細は「[Oracle Java SEライセンスに関するFAQ](https://www.oracle.com/jp/java/technologies/javase/jdk-faqs.html)」を参照ください 
  - Oracle JDKに関するライセンスは分かりづらい部分も多いため @hoka-shino さんの記事「[\[Javaの有償・無償ライセンス\] Oracle JDK ライセンス・サポート解説](https://qiita.com/hoka-shino/items/aafb0aba6840136b23e1)」を併せて参照ください

## Oracle OpenJDK
|一般向け情報|説明|
|:--|:--|
|導入・運用|Oracle JDKと同じだが、ライフサイクルは半年のみ（次期機能リリースまで）|
|動向把握|Oracle JDK と同じだが、ダウンロードページからも各種リンクあり|
|ダウンロード|https://jdk.java.net/ ※JDK9～。認証不要|
|ライセンス|GPLv2 + Classpath Exception（GNU General Public License, version 2, with the Classpath Exception）|

- ライセンスはOpenJDK ソースコードと同じ： https://openjdk.org/legal/gplv2+ce.html
- 参考資料: [今、あらためてOracle提供のJDKを語る](https://www.slideshare.net/oracle4engineer/oracle-jdk-20190827-oraclejdk)

## Red Hat build of OpenJDK
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://docs.redhat.com/documentation/ja-jp/red_hat_build_of_openjdk/|
|   |リリースノート|(上記参照)|
|   |ライフサイクル|https://access.redhat.com/ja/articles/1457743|
|   |動作環境|(上記参照)|
|動向把握|SNS|[@RedHatJava](https://x.com/RedHatJava), [@rhdevelopers](https://x.com/rhdevelopers)|
|   |ブログ|https://developers.redhat.com/topics/java/all|
|ダウンロード|開発者用|https://developers.redhat.com/products/openjdk/download ※要アカウント認証|
|   |商用|https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=core.service.openjdk&downloadType=distributions ※JBoss 製品などのサブスクリプション必要。別途RHEL 用のyum リポジトリあり|
|ライセンス|GPLv2 + Classpath Exception|   |

- 参考資料: [Red HatのOpenJDK](https://speakerdeck.com/agetsuma/red-hatfalseopenjdk)

## Azul Zulu
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://docs.azul.com/core/|
|   |リリースノート|https://docs.azul.com/core/release-notes.html|
|   |ライフサイクル|https://www.azul.com/ja/azul-support-roadmap/|
|   |動作環境|https://docs.azul.com/core/supported-platforms.html|
|動向把握|SNS|[@AzulSystems](https://x.com/AzulSystems)|
|   |ブログ|https://www.azul.com/blog/|
|   |GitHub|https://github.com/zulu-openjdk ※現状、ほぼDockerfile 用|
|ダウンロード|   |https://www.azul.com/downloads/ ※認証不要|
|ライセンス|GPLv2 + Classpath Exception|   |

## BellSoft Liberica JDK
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://docs.bell-sw.com/liberica-jdk/|
|   |リリースノート|https://docs.bell-sw.com/liberica-jdk/latest/general/release-notes/|
|   |ライフサイクル|https://bell-sw.com/support/#roadmap|
|   |動作環境|https://bell-sw.com/pages/supported-configurations/|
|動向把握|SNS|[@bellsoftware](https://x.com/bellsoftware)|
|   |ブログ|https://bell-sw.com/blog/|
|   |GitHub|https://github.com/bell-sw/Liberica|
|ダウンロード|   |https://bell-sw.com/pages/downloads/ ※認証不要|
|ライセンス|GPLv2 + Classpath Exception|   |

## SAP SapMachine
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://github.com/SAP/SapMachine/wiki|
|   |リリースノート|（見当たらず）|
|   |ライフサイクル|https://github.com/SAP/SapMachine/wiki/Maintenance-and-Support|
|   |動作環境|https://github.com/SAP/SapMachine/wiki/Certification-and-Java-Compatibility|
|動向把握|SNS|[@SweetSapMachine](https://x.com/SweetSapMachine)|
|   |ブログ|https://community.sap.com/t5/c-khhcw49343/SAP+Java+Virtual+Machine/pd-p/01200615320800003576|
|   |GitHub|https://github.com/SAP/SapMachine|
|ダウンロード|   |https://sap.github.io/SapMachine/ ※認証不要（GitHubからダウンロード）|
|ライセンス|GPLv2 + Classpath Exception|   |

## Amazon Corretto
|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://docs.aws.amazon.com/corretto/|
|   |リリースノート（Corretto 8）|https://github.com/corretto/corretto-8/blob/develop/CHANGELOG.md|
|   |リリースノート（Corretto 11）|https://github.com/corretto/corretto-11/blob/develop/CHANGELOG.md|
|   |リリースノート（Corretto 17）|https://github.com/corretto/corretto-17/blob/develop/CHANGELOG.md|
|   |リリースノート（Corretto 21）|https://github.com/corretto/corretto-21/blob/develop/CHANGELOG.md|
|   |ライフサイクル|https://aws.amazon.com/jp/corretto/faqs/#support|
|   |動作環境|https://aws.amazon.com/jp/corretto/faqs/#Using_Amazon_Corretto|
|動向把握|SNS|[@AWSOpen](https://x.com/AWSOpen)|
|   |ブログ|https://aws.amazon.com/jp/blogs/opensource/category/programing-language/java/|
|   |GitHub|https://github.com/corretto/|
|ダウンロード|   |https://downloads.corretto.aws/ ※認証不要|
|ライセンス|GPLv2 + Classpath Exception|   |

## Microsoft Build of OpenJDK
執筆時には発表されていなかったため、書籍には記載されていません。

|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://learn.microsoft.com/ja-jp/java/openjdk/|
|   |リリースノート|https://learn.microsoft.com/ja-jp/java/openjdk/release-notes|
|   |ライフサイクル|https://learn.microsoft.com/ja-jp/java/openjdk/support|
|   |動作環境|(上記参照)|
|動向把握|SNS|[@JavaAtMicrosoft](https://x.com/JavaAtMicrosoft)|
|   |ブログ|https://devblogs.microsoft.com/java/|
|   |GitHub|https://github.com/microsoft/openjdk|
|ダウンロード|   |https://learn.microsoft.com/ja-jp/java/openjdk/download ※認証不要|
|ライセンス|GPLv2 + Classpath Exception|   |

## Eclipse Temurin (Adoptium)
以前には[AdoptOpenJDKでしたが2021年8月に移行が完了しました](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/)。

|一般向け情報|種類・名称|参照先|
|:--|:--|:--|
|導入・運用|ドキュメント|https://adoptium.net/docs/|
|   |リリースノート|（見当たらず）|
|   |ライフサイクル|https://adoptium.net/support/|
|   |動作環境|https://adoptium.net/supported-platforms/|
|動向把握|SNS|[@adoptium](https://x.com/adoptium), [Slack](https://adoptium.slack.com/)|
|   |ブログ|https://adoptium.net/blog/|
|   |GitHub|https://github.com/adoptium|
|ダウンロード|   |https://adoptium.net/temurin/releases ※認証不要（GitHub からダウンロード）|
|ライセンス|GPLv2 + Classpath Exception|   |

- Eclipse Adoptiumには、本記事で紹介するJDKベンダーのいくつかが[戦略的メンバー](https://adoptium.net/members/)になっています。

# その他注目しておきたいJDK
以下は基本的なリンクのみとします。
## OpenJDK with HotSpot VMベース
### 各LinuxディストリビューションのOpenJDK
- [Ubuntu](https://help.ubuntu.com/community/Java)
- [Debian](https://wiki.debian.org/Java)
- [Fedora](https://fedoraproject.org/wiki/Java)
- [Gentoo Linux](https://wiki.gentoo.org/wiki/Java/ja)
- [Arch Linux](https://wiki.archlinux.jp/index.php/Java)

※その他、LinuxディストリビューションのOpenJDKパッケージへのリンクは適宜追記しますので、コメントなどでご指摘ください。

### 国内ベンダJDK
- [富士通OpenJDK](https://software.fujitsu.com/jp/manual/manualfiles/m200009/b1fw6080/01z200/index.html) (FUJITSU Software Enterprise Application Platform用)
    - 以前の [富士通Interstage用FJVM](https://software.fujitsu.com/jp/manual/manualfiles/m180005/b1ws1303/02z200/b1303-00-09-01-03.html)
- [日立JavaVM](https://itpfdoc.hitachi.co.jp/manuals/link/cosmi_v1110/03J0820D/HJ080066.HTM) (日立Cosminexus用)

### その他
- [Alibaba Dragonwell](https://dragonwell-jdk.io/)
- [ojdkbuild](https://github.com/ojdkbuild/ojdkbuild) (廃止)
- [JetBrains Runtime](https://github.com/JetBrains/JetBrainsRuntime)
- [VMware Tanzu Spring](https://tanzu.vmware.com/spring)

以降は書籍では言及していません。

- [Huawei BiSheng JDK](https://www.hikunpeng.com/developer/devkit/download/jdk)
- [Tencent Kona](https://cloud.tencent.com/document/product/1149)
- [OpenLogic's OpenJDK](https://www.openlogic.com/openjdk-downloads)
- [J-Class Solutions SegueJDK](https://www.j-class.com/java-jvm-solutions)

## OpenJDK with *NOT* HotSpot VM
- [IBM Semeru Runtimes](https://developer.ibm.com/languages/java/semeru-runtimes/)
    - 以前の [AdoptOpenJDK with OpenJ9](https://adoptopenjdk.net/releases.html?jvmVariant=openj9) で [2021年8月から移行](https://developer.ibm.com/blogs/introducing-the-ibm-semeru-runtimes/) (参考資料: [OpenJ9 + OpenJDK](https://www.slideshare.net/takakiyo/openj9openjdk))
- [IBM SDK Java Technology Edition](https://www.ibm.com/docs/ja/sdk-java-technology)
    - 参考資料: [OpenJ9 VMとIBM Javaについて](https://www.slideshare.net/takakiyo/jvmopenj9-vmibm-java)
- [Azul Platform Prime](https://www.azul.com/ja/prime/) (以前のZing)
- [GraalVM](https://www.graalvm.org/)
    - 正確にはHotSpotベースだがJITコンパイラが異なる (詳細は書籍の5章を参照)
- [Mandrel](https://github.com/graalvm/mandrel) (書籍では言及していません)
    - 参考資料: [Mandrel：Quarkusに特化したGraalVMのディストリビューション](https://rheb.hatenablog.com/entry/mandrel-a-specialized-distribution-of-graalvm-for-quarkus)