LoginSignup
5
11

More than 5 years have passed since last update.

OpenJDKのキャッチアップのメモ

Last updated at Posted at 2018-06-17

概要

2018年9月にリリース予定のOpenJDK 11に備えて、OpenJDKについてキャッチアップした結果のメモです。

OpenJDKについて

参考

ライセンス

GNU General Public License, version 2, with the Classpath Exception

GPLリンク例外を持つGNU General Public License (GNU GPL 2および2+)

OpenJDK FAQ

Licensing
What open-source license is OpenJDK published under?

GPL v2 for almost all of the virtual machine, and GPL v2 + the Classpath exception for the class libraries and those parts of the virtual machine that expose public APIs.

バイナリの配布

OracleがビルドしたバイナリがJDK Builds from Oracleからダウンロードできます。

アーカイブの配布

Archived OpenJDK GA Releasesから入手できます。

ソースコード

ソースコードはMercurialという分散型VCSで管理され、OpenJDK Mercurial Repositoriesにホスティングされています。
なお、OpenJDKをインストールしたディレクトリ直下のlibディレクトリにsrc.zipが同梱されていますが完全なソースコードを含んでいません。

バグ管理

JDK BUG System (JBS)、およびOpenJDK Wikiで管理されています。

コードベースでOpenJDKとOracle JDKに違いがあるか

下記に引用するOpenJDKのFAQでは、Oracle JDKはOpenJDKのソースコードをベースにしていると説明されています。

OpenJDK FAQ

Oracle JDK and OpenJDK
Is Oracle JDK based on OpenJDK?

Yes. Oracle JDK is based on the OpenJDK source code. In addition, it contains closed-source components. The final result is licensed under a Binary Code License.

他にOracleの公式情報を探したのですが見つからなかったので、代わりにStackOverflowの「Differences between Oracle JDK and OpenJDK」に付いた回答の一部を下記に引用します。

Both OpenJDK and Oracle JDK are created and maintained currently by Oracle only.

API JavaDoc

バイナリのダウンロードページにリンクがありますが、リンク先はOracleのサイトになっています。
JDK 11 Early-Access Builds版も用意されています。(GA版も閲覧できるかどうかは確認していません。)

Community Code Review

ソースコードだけでなくAPIドキュメントの変更についてもレビューが行われています。

Draft2 AnnexesのA2 API Specification differencesで「Java SE 10 (build 45)」と「Java SE 11 (build 17)」のAPIの差分が確認できます。

Docker OFFICIAL REPOSITORY

AdoptOpenJDKについて

AdoptOpenJDK Communityが提供するOSSのJDKです。コミュニテーのTier-1スポンサーに、IBM、London Java Community (LJC)、Microsoft Azure、Packetがあります(2018年8月現在)。

正直なところ、今回のOracle JDKの有償化を受けて初めてAdoptOpenJDKを知りましたが、今後、Oracle JDK以外を選択する場合は、OpenJDKよりAdoptOpenJDKを推奨される方が結構いるような印象を受けました。

ライセンス

GPL v2 with Classpath Exception

OpenJDK code itself is licensed under GPL v2 with Classpath Exception.

バイナリの配布

Latest release | AdoptOpenJDKから入手できます。

アーカイブの配布

Archive | AdoptOpenJDKから入手できます。

バグ管理

AdoptOpenJDK自体のバグ管理は行われていないようですが、build scriptに関する問題はGitHubのIssueで管理されています。

Docker OFFICIAL REPOSITORY

adoptopenjdk AdoptOpenJDK Community Project

Oracle JDKについて

参考

ライセンス

Binary Code License (BCL)

Oracleが配布するJDKのバイナリ

JDK Builds from OracleよりOracleがビルドしたバイナリをダウンロードできます。
2018年6月17日時点で、JDK 10とJDK 11 Early-Access Buildsがダウンロードできます。

JDK 11以降もOracleがビルドしたバイナリが提供されますが、無償配布はOpenJDKをビルドしたバイナリで、Oracle JDKは有償契約のユーザーにのみ配布されます。

Oracle JDKは、JDK 11以降は3年ごとにメジャーバージョンがリリースされます。なのでOracle JDK 11 (2018年9月)の次は、Oracle JDK 17 (2021年9月)の予定です。

OpenJDKは、JDK 11以降は6カ月ごとに12,13,14とマイナーバージョンがリリースされます。こちらはLTSはないようなのでJDK 11でも次のバージョンのJDK 12がリリースされればサポート終了となります。
(OpenJDKにもLTSが導入される可能性があるというニュースもありますがまだ確定ではないようです。)

JDK 11 Early-Access Builds

図のように無償提供のOpenJDK buildsと、GAより有償提供となるOracle JDK buildsの両方がダウンロードできます。(ダウンロードするには、Early Adopter Development License Agreement (アーリーアダプター開発ライセンス契約)に同意する必要があります)

契約内容に一部、太字で強調されている箇所があったので下記に引用します。
意訳すると

1) 本プログラムはGAではなく、欠陥、セキュリティ脆弱性があっても修正しないことがある。
2) 本プログラムをリリース目的のプロダクト開発に使用できない。

Oracle Technology Network Early Adopter Development License Agreement

You acknowledge that (1) the Programs are not generally available and may have defects, security vulnerabilities, or other deficiencies that may not and/or cannot be corrected by Us and are subject to change at Our sole discretion; and (2) We may not produce a production release version of the Programs and any development efforts undertaken by You are at Your own risk. We may audit Your use of the Oracle Technology.

jdk11_0.png

OpenJDK builds

ダウンロードファイル: openjdk-11-ea+18_windows-x64_bin.zip

Windows/x64版はzip形式のアーカイブファイルで提供されるようになっています。(以前はtar.gz)
下記のようにバージョン情報には"openjdk"と出力されます。

> java -version
openjdk version "11-ea" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11-ea+18)
OpenJDK 64-Bit Server VM 18.9 (build 11-ea+18, mixed mode)

ちなみにOpenJDK 10のバージョン情報

> java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode)

Oracle JDK builds

ダウンロードファイル: jdk-11-ea+18_windows-x64_bin.exe

Oracle JDK 10までと同様にexe形式のインストーラーで提供されています。

> java -version
java version "11-ea" 2018-09-25
Java(TM) SE Runtime Environment 18.9 (build 11-ea+18)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11-ea+18, mixed mode)

ちなみにOracle JDK 10のバージョン情報

> java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

OTNのダウンロードページ

Java SE - DownloadsからダウンロードできるJDKはOracle JDK 10.xで最後になる予定です。
有償契約したユーザーに配布されるOracle JDK 11がどこから入手できるかは調べ切れていません。

コメントで教えて頂きましたところ、有償サポート契約を結ぶと、My Oracle Supportよりダウンロードできるようになるようです。(私自身、有償サポート契約を結んでいないので確認できていません)

My Oracle Supportを利用するにはOracle AccountにサポートIDを紐づける必要があります。
サポートIDは、サポート契約締結時に送られてくるWelcome Letterというメールに記載されているそうです。

アーカイブの配布

Oracle Java Archiveから入手できます。

ソースコード

Oracle JDKのソースコードは公開されていません。
下記に引用した通り(JDK 8のものです)、Oracle JDKをインストールしたディレクトリ直下のlibディレクトリにあるsrc.zipには完全なソースコードは含まれておらず、これからJDKをビルドすることはできません。

JDK 8 README

Source Code

(In src.zip) Java programming language source files for all classes that make up the Java core API (that is, sources files for the java., javax. and some org.* packages, but not for com.sun.* packages). This source code is provided for informational purposes only, to help developers learn and use the Java programming language. These files do not include platform-specific implementation code and cannot be used to rebuild the class libraries. To extract these file, use any common zip utility. Or, you may use the Jar utility in the JDK's bin/ directory:

jar xvf src.zip

ちなみにJDK 10のREADMEからはこの段落は無くなっていました。

有償サポート契約

Q. Javaの有償サポート・サービスについて教えて下さい。

このFAQを読む限り個人での契約はできないようです。

Oracle Java SE Subscriptions

2018年6月21日に発表がありました。

従来の”Java SE Advanced”、”Java SE Advanced Desktop”、”Java SE Suite”はJava SE Subscriptionsに移行し、商用のJava SEライセンス、サポートを希望する顧客は”Java SE Subscription”か”Java SE Desktop Subscription”を選択できます。

補足

JDK API Diff Report Generator

AdoptOpenJDK/jdk-api-diff - GitHub

Adopt OpenJDKが公開している指定する2つの異なるJDKのAPI差分をレポートしてくれるツールです。
OpenJDK 9とOpenJDK 10やOracle JDK 9とOpenJDK 9といった指定ができるそうです。

ローカルにチェックアウトしてREADMEの説明の通り実行してみました。
比較対象はOpenJDK 9.0.4とOpenJDK 10.0.1です。
処理が終了するとtargetディレクトリにjdk-api-diff.htmlというレポートが生成されます。

r0.png

r1.png

Support Java 11

5
11
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11