プロジェクト

全般

プロフィール

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 21, 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月です。

https://adoptium.net/

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氏のブログ)

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

https://javaalmanac.io/

JDKのバージョン間での違いを分かりやすく示しているサイトです。

  • JDKのバージョン間でのAPIの差異
  • 言語仕様の追加
  • Javaコードの近代化コード断片

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

OpenJDK Disco API

https://github.com/foojayio/discoapi
ディストリビューション情報をWebサービスで提供している。

JDK Butler

Disco APIを使うクライアントツール。

JDK Butlerの操作イメージ

Windowsインストーラでインストールした場合、ショートカットがスタートメニューにもデスクトップにもどこにも生成されません。
そこで、インストールされたディレクトリ下(C:\Program Files\JDKButler)のexeファイルをスタートにピン留めする等します。

JDK Mon

PCにインストールされているOpenJDKを検出・一覧化し、新しいバージョンが存在するかをチェックするツールです。

https://www.infoq.com/jp/news/2021/08/jdkmon-java/

JDKMon画面