OpenJDK¶
はじめに¶
本記事は、2018年9月にリリースされた Java SE 11以降の状況を記載しています。
OpenJDKとは¶
OpenJDKは、Java Platform, Second Edition仕様に基づくJava の実行環境と開発環境である Java SE Development Kit のオープンソース開発プロジェクトで、Oracleにスポンサーされています。
ライセンスはGPLv2+Classpath Exceptionで提供されます。
LTSと非LTS¶
OpenJDKのリリースには、長期間サポート対象となるLTS(Long Term Support)と、次のバージョンがリリースされるまでの間のみサポートされる非LTSとがあります。
OpenJDK バージョン | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LTS | ✔ | ✔ | ✔ | ✔ |
- OpenJDK 25 のLTSは予定
LTSは当初3年に1回(OpenJDK 11, 2018年9月、OpenJDK 17, 2021年9月)でしたが、OpenJDK 17の次のLTSは2年後のOpenJDK 21にするとアナウンスがありました。
OpenJDKバイナリ¶
OpenJDKはオープンソース開発プロジェクトでありソースコードが公開されています。利用者がこのソースコードを入手してビルドすることでJavaの実行環境と開発環境を利用できるようになりますが、手間がかかります。そこで、いくつかの組織がOpenJDKのソースコードを主要なOS用にビルドし手バイナリとして提供しており、利用者はバイナリを入手してすぐにJavaの実行環境と開発環境を利用できるようになっています。
OpenJDKバイナリ提供組織と内容一覧¶
この OpenJDK のソースコードをビルドしたバイナリ版が様々な組織から提供されています。
組織名 | OpenJDK バイナリ名 | Linux | Windows | MacOS | ライセンス | 長期サポート | JavaFX同梱 |
---|---|---|---|---|---|---|---|
Oracle | Oracle JDK | ✓ | ✓ | ✓ | 有償1/無償2ライセンス | ✓ | N/A |
(Oracle)OpenJDK | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | N/A | N/A | |
Eclipse | Temurin | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | N/A |
Azul Systems | Zulu | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | N/A |
ZuluFX | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | ✓ | |
Red Hat | (Red Hat)OpenJDK | ✓ | ✓ | N/A | 商用ライセンス3 | ✓ | N/A |
Amazon | Corretto | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | N/A |
BellSoft | Liberica JDK | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | ✓ |
Microsoft | Microsoft Build OpenJDK | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | N/A |
SAP | SapMachine | ✓ | ✓ | ✓ | GPLv2 クラスパス例外 | ✓ | N/A |
1 有償の商用ライセンスとして、Oracle Java SE Advanced(/Desktop)、Oracle Java SE (Desktop) Subscription が提供されており、Extended Support期限までの間、四半期毎のアップデート、商用ライセンスのみ提供される機能の利用および24時間サポートが提供される。
2 JDK 17から、No-Fee Terms and Conditions(NFTC)ライセンスの下、商用利用および配布可能な無償ライセンスが提供された。ただし期限は次のLTSバージョンが提供開始されてから1年後までと限定されている。NFTCライセンスの期限を過ぎた以降は、個人利用または組織での開発用途で無償利用可能な OTNライセンス(Oracle Technology Network License Agreement for Oracle Java SE)で無償提供の計画となっている。
https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html
3 Linux(RHEL)上でのOpenJDKは、RHELサブスクリプションに基づく使用。Red Hatミドルウェア以外でWindows上での実行(Java workload)には追加のサブスクリプション必要。Java workloadに開発用途が含まれるかどうかは調査中。
Oracle JDK¶
オープンソースのOpenJDKをOracle社がビルドしたバイナリを、有償のJava SEサブスクリプションで技術サポートと共に提供しています。
https://www.oracle.com/technetwork/java/javase/downloads/index.html
LTS版(JDK 11)は、4半期毎のアップデートも上述の条件で提供され、非LTS版(JDK 12~16)は次のバージョンが出るまでの半年間に適用されるアップデートが提供されています。
LTS版(JDK 17)は、有償のJava SEサブスクリプションの他、無償で商用利用可能な No-Fee Terms and Conditions(NFTC)ライセンスでも提供されるようになりました。NFTCライセンスはJDK 17のライフサイクルより短い期限が設定されています(次のLTS版がリリースされてから1年後まで)。
Java SEドキュメントの英語・日本語サイトへのリンク、日本語ダウンロード版の提供が次のサイトで提供されています。
https://www.oracle.com/jp/java/technologies/documentation.html
サブスクリプション種類と価格¶
https://www.oracle.com/java/java-se-subscription/
- Oracle Java SE Desktop Subscription
Named User Plus
3600円/年・ユーザー
1000ユーザー以上は人数により割引あり - Oracle Java SE Subscription
Processor
36,000円/年・プロセッサー(Intelプロセッサーの場合、総コア数×0.5)
100プロセッサー以上はプロセッサー数により割引あり
OTNライセンス¶
なお、個人利用と開発用途(開発・試験・プロトタイプ・デモ)は別途 OTN License Agreement for Oracle Java SE で無償利用できます。
NFTCライセンス¶
Oracle No-Fee Terms and Conditions(NFTC)ライセンスは、Oracle JDK 17以降で適用される商用利用も無償で可能なライセンスです。
https://blogs.oracle.com/cloud-infrastructure/post/introducing-free-java-license
NTFCライセンスの注意点として、ライセンス有効期限と商用利用の範囲の2点があります。
ライセンス有効期限¶
NTFCライセンスは、LTS版については、次のLTS版がリリースされた日から1年後が有効期限となります。例えば、Oracle JDK 17は2021年9月にリリースされました。次のLTS版となるOracle JDK 21が2023年9月にリリースされたとします。この場合、Oracle JDK 17のNTFCライセンスは2024年9月までの期限となります。
一方で、Oracle JDK 17のサポート期間は、Premier Supportが2026年9月まで、Extended Supportが2029年9月までとなっています。NTFCライセンスで利用できる期間の方が短いため、NTFCを適用する場合は早めに次のLTS版に(次のLTSがリリースされてから1年以内に)移行する必要があります。
非LTS版のNTFCライセンスは、半年間となります。
商用利用の範囲¶
NTFCで商用利用の範囲を示す文書は次です。
(a) internally use the unmodified Programs for the purposes of developing, testing, prototyping and demonstrating your applications, and running the Program for Your own personal use or internal business operations; and
前半の、"developing, testing, prototyping and demonstrating your applications"はOTNライセンスが適用される範囲と同じで、後半の "internal business operations"が商用利用が適用される記述になります。
商用利用がどこまでかがこの記述だけでは明確ではない用途がありそうです。
Oracle OpenJDK¶
オープンソースのOpenJDKをOracle社がビルドしたバイナリを無償提供しています。
Oracle の OpenJDKビルド トップページ
OpenJDKバイナリの過去アーカイブ(OpenJDK 9以降)
Zulu, ZuluFX(Azul Systems社)¶
オープンソースのOpenJDKをAzul Systems社が自前ビルドしたバイナリを無償提供し、また有償の技術サポートを提供しています。
https://www.azul.com/products/zulu-and-zulu-enterprise/
https://www.azul.com/downloads/zulu-community/
- Oracle JDK、OpenJDK公式では提供されていない32bit版も用意されています。
- JavaFXを同梱したOpenJDKが提供されています。2019年2月3日時点で、OpenJDK 8およびOpenJDK 11のJavaFX同梱版が提供されています。
LTS版のアップデート、および半年リリースの最新版がダウンロード可能です。
Temurin JDK (Eclipse Foundation)¶
元は、AdoptOpenJDK Foundationが提供していたAdoptOpenJDKが、Eclipse Foundationに移行しました。
Eclipse Foundationの下、オープンソースのOpenJDKをAdoptiumプロジェクト傘下でTemurin JDKとして自前ビルドしたバイナリが無償提供されています。
最初のリリースは 2021年8月です。
LTS版のアップデート、および半年リリースの最新版がダウンロード可能です。
Liberica JDK (BellSoft社)¶
オープンソースのOpenJDKをBellSoft社が自前ビルドしたバイナリを無償提供し、また有償の技術サポートを提供しています。
https://bell-sw.com/java.html
- JavaFXを同梱しています。
- Windows, Linux x86, Linux ARM OS向けには64bit版に加えて32bit版を提供しています。
LTS版のアップデート、および半年リリースの最新版、また非LTSの過去のバージョンがダウンロード可能です。
Red Hat OpenJDK (Red Hat社)¶
オープンソースのOpenJDKをRed Hat社が自前ビルドしたバイナリを、Red Hat Enterprise Linux ディストリビューションに含めています。
OpenJDK 8は2026年5月まで、OpenJDK 11は2024年10月までのサポートです。
その他、Windows版のOpenJDKを提供しています。こちらはサブスクリプション契約が必要になる模様
For other Java workloads on Windows (non-Red Hat Middleware), an additional subscription for OpenJDK on Windows is required.
https://developers.redhat.com/products/openjdk/download/
Amazon Corretto¶
オープンソースのOpenJDKをAmazon社が自前ビルドしたバイナリを無償提供しています。
https://aws.amazon.com/jp/corretto/
提供バージョンは、LTSとなる8、11と、最新の非LTSバージョンです。OpenJDK 8相当のCorretto 8が2026年5月まで、OpenJDK 11相当のCorretto 11が2027年9月までのサポートです。
Microsoft Build OpenJDK¶
オープンソースのOpenJDKをMicrosoft社が自前ビルドしたバイナリを無償提供しています。
https://www.microsoft.com/openjdk
提供バージョンは、LTSとなる11と、最新の非LTSバージョンです。
SAP SapMachine¶
オープンソースのOpenJDKをSAP社が自前ビルドしたバイナリを無償提供しています。
https://sap.github.io/SapMachine/
提供バージョンは、LTSとなる11および17と、最新の非LTSバージョンです。
OpenJDKの情報¶
アップデート情報源¶
Azul Systems社(S. Ritter氏のブログ)¶
- Simon Ritter(2021). 67 New Features in JDK 16
https://www.azul.com/blog/67-new-features-in-jdk-16/ - Simon Ritter(2020). JDK 15 Release: 64 New Features and APIs
https://www.azul.com/jdk-15-release-64-new-features-and-apis/ - Simon Ritter(2020). What's New In JDK 14 Latest Release? 80 New Features & APIs
https://www.azul.com/whats-new-in-jdk14-latest-release/ - Simon Ritter(2019). 81 New Features and APIs in JDK 13
https://www.azul.com/81-new-features-and-apis-in-jdk-13/ - Simon Ritter(2019). 39 New Features (and APIs) in JDK 12
https://www.azul.com/39-new-features-and-apis-in-jdk-12/ - Simon Ritter(2018). 90 New Features (and APIs) in JDK 11
https://www.azul.com/90-new-features-and-apis-in-jdk-11/ - Simon Ritter(2018). 109 New Features in JDK 10
https://www.azul.com/109-new-features-in-jdk-10/ - Simon Ritter(2017). 55 New Features in JDK 9
https://www.azul.com/presentation/55-new-features-jdk-9/
InfoQ Javaニュース総まとめ¶
https://www.infoq.com/jp/search.action?queryString=Javaニュース総まとめ
Java Magazine オンライン¶
https://blogs.oracle.com/javamagazine/
https://blogs.oracle.com/otnjp/java-magazine-2 (日本語訳)
The Java Version Almanac¶
JDKのバージョン間での違いを分かりやすく示しているサイトです。
- JDKのバージョン間でのAPIの差異
- 言語仕様の追加
- Javaコードの近代化コード断片
ディストリビューション情報¶
OpenJDK Disco API¶
https://github.com/foojayio/discoapi
ディストリビューション情報をWebサービスで提供している。
JDK Butler¶
Disco APIを使うクライアントツール。
Windowsインストーラでインストールした場合、ショートカットがスタートメニューにもデスクトップにもどこにも生成されません。
そこで、インストールされたディレクトリ下(C:\Program Files\JDKButler
)のexeファイルをスタートにピン留めする等します。
JDK Mon¶
PCにインストールされているOpenJDKを検出・一覧化し、新しいバージョンが存在するかをチェックするツールです。
https://www.infoq.com/jp/news/2021/08/jdkmon-java/