9. ⽇本各地のJavaコミュニティでも広がる「Java is Still Free」
『Javaは今でも無償です、という話 / Java is still free』
https://speakerdeck.com/kishida/java-is-still-free by @kis さん
『Java Do #osc19do Java有償化(していない件)について』
https://speakerdeck.com/gishi_yama/java-do-number-osc19do by @gishi_yama さん
9
14. Java 8から11で何が起こったか
『Java SE 8から11で何が起きた︖⼀気におさらいしてみよう︕ /java-se-8-to-11』
https://speakerdeck.com/miyakawataku/java-se-8-to-11 by @miyakawa_taku さん (CC BY 4.0)
14
22. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 11GA)
『Building JDK 11 Together』
https://blogs.oracle.com/java-platform-group/building-jdk-11-together
Total Issue: 2,468
1. Oracle (80%)
2. SAP (7%)
3. Red Hat (5%)
4. Google (3%)
5. 個⼈ (2%)
6. BellSoft (1%)
7. IBM (1%)
22
23. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 12GA)
『The arrival of Java 12!』
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-12
Total Issue: 1,919
1. Oracle (75%)
2. Red Hat (8%)
3. Google (6%)
4. SAP (4%)
5. 個⼈ (3%)
6. BellSoft (1%)
7. IBM (1%)
23
24. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 13GA)
『The arrival of Java 13!』
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13
『OpenJDK Backports Monitor』
https://builds.shipilev.net/backports-monitor/
pushes-13.txt – [Distribution by email/name] から独⾃集計
* 上記図とは若⼲異なるため、JBSをもとに補正
Total Issue: 2,127
1. Oracle (68%)
2. Red Hat (11%)
3. SAP (7%)
4. 個⼈ (4%)
5. Google (3%)
24
25. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212/232)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-openjdk8u212.txt, pushes-openjdk8u232.txt ※2019年7⽉の8u222は割愛
– [Distribution by email/name] から独⾃集計
Total Issue: 112
1. Red Hat (64.3%)
2. Amazon (17.9%)
3. Oracle (11.6%)
4. SAP (3.6%)
5. 個⼈ (1.8%)
6. Azul (0.9%)
従来もOracle JDKのPublic Updates終了後は、Red HatがOpenJDKの修正を主導
※OpenJDK 8u212/232であって、Oracle JDK 8u212/232ではないことに注意
Public Updates終了前はOracleが主導し、その後Oracleはプライベートリポジトリに反映
Total Issue: 81
1. Red Hat (91.4%)
2. Amazon (4.9%)
3. IBM (2.5%)
4. NTTデータ (1.2%)72
20
13
4 2
1
Issues fixed in OpenJDK 8u212
Red Hat Amazon Oracle SAP Azul
74
4 2
1
Issues fixed in OpenJDK 8u232
Red Hat Amazon IBM NTT
25
26. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3/11.0.5)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.3.txt, pushes-11.0.5.txt ※ 2019年7⽉の11.0.4は割愛
– [Distribution by email/name] から独⾃集計
Total Issue: 185
1. Red Hat (44.9%)
2. SAP (31.4%)
3. Oracle (12.4%)
4. 個⼈ (3.8%)
5. Google (3.8%)
6. Amazon (2.7%)
7. BellSoft (0.5%)
8. Intel (0.5%)
※OpenJDK 11.0.3/11.0.5であって、Oracle JDK 11.0.3/11.0.5ではないことに注意
OracleはLTSリリースについて、プライベートリポジトリにのみ基本的に反映
Total Issue: 287
1. Red Hat (53.0%)
2. SAP (40.1%)
3. 個⼈ (2.4%)
4. NTTデータ (1.4%)
5. Amazon (1.0%)
6. BellSoft (0.7%)
7. Google (0.7%)
8. Azul (0.3%)
9. IBM (0.3%)
83
58
23
7
7 5
1
1
Issues fixed in OpenJDK 11.0.3
Red Hat SAP Oracle
Google Amazon BellSoft Intel
152115
7
4
3 2 2
Issues fixed in OpenJDK 11.0.5
Red Hat SAP NTT
Amazon BellSoft Google
26
27. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.2)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.2.txt – [Distribution by email/name] から独⾃集計
Total Issue: 92
1. Oracle (54%)
2. SAP (22%)
3. Red Hat (20%)
4. 個⼈ (2%)
5. Google (2%)
OpenJDK 11.0.2 まではOracle主導
※次の機能リリースが出る6ヵ⽉間
つまり、Oracleは最新版OpenJDKに注⼒し、
OpenJDK LTSは他のベンダーに委任
50
20
18
2 2
Issues fixed in OpenJDK 11.0.2
Oracle SAP Red Hat Google
27
31. LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 8)
• ビルド番号≒該当バージョンでのソースコードのセットにつけるタグ
「$ java –version」での確認 (Java 9以降はAPIでも基本的に取得可能)
• 8u212 (java.runtime.version, java.vm.version システムプロパティから基本的に確認可能)
- Oracle JDK
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
- Red Hat OpenJDK
openjdk version "1.8.0_212-3-redhat"
OpenJDK Runtime Environment (build 1.8.0_212-3-redhat-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
ビルド番号: b10
ビルド番号: b04
数が⼤きいほうが多くの修正
を含んでいる訳ではない
31
32. [参考] 2019年7⽉以降はバージョンで識別可能 (JDK 8)
• Oracle JDK 8u221 (8u222はリリースされず)
- Critical Patch Updates (CPU) 相当
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
• その他 OpenJDK 8u222
- Patch Set Updates (PSU) 相当?
openjdk version "1.8.0_222"
OpenJDK Runtime Environment Corretto-8.222.10.1 (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM Corretto-8.222.10.1 (build 25.222-b10, mixed mode)
『JavaのリリースにはCPUとPSUの2種類があります』by @jyukutyo さん
https://www.sakatakoichi.com/entry/2015/07/22/173205
(Amazon Correttoの例だが他も基本的に同様)
32
33. LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 11)
• 11.0.3 (Runtime.Version クラスからも基本的に取得可能)
- Oracle JDK
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)
- Red Hat OpenJDK
openjdk version "11.0.3-redhat" 2019-04-16 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.3-redhat+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.3-redhat+7-LTS, mixed mode)
ビルド番号: 12
ビルド番号: 7
『Java 10 で変わる Java のバージョン表記』by @YujiSoftware さん
https://qiita.com/YujiSoftware/items/2c5a9117a577700ea540
33
34. [参考] 2019年7⽉以降はビルド番号で識別困難 (JDK 11)
• Oracle JDK 11.0.4
java version "11.0.4" 2019-07-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode)
修正数:104 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4-oracle
• その他 OpenJDK 11.0.4
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
修正数:251 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4
(AdoptOpenJDKの例だが他も基本的に同様)
OpenJDKのビルド番号
とは無関係
34
35. OpenJDKを利⽤したビジネスモデルの変遷例
• Oracle
- (旧Sun) Java SE for Business: ⻑期サポート
- Java SE Advanced: ⻑期サポートおよび商⽤機能を⾼付加価値として提供するライセンスモデル
- Java SE Subscription: ⽐較的安価に広く提供し、⻑期サポートするサブスクリプションモデル
• Red Hat
- Red Hat Subscription: RHEL利⽤ユーザーに⻑期アップデートを提供するサブスクリプションモデル
- OpenJDK Subscription for Windows: WindowsユーザーにもOpenJDKのサブスクリプションを提供
JDKリリースモデルの変更は、ビジネスモデル的には他のベンダー(ディストリビューター)に
負荷分散してOpenJDKエコシステムを安定的に維持する狙いも⼤きいと⾒られる
『各JDKのビジネスモデルに関するまとめ』 https://togetter.com/li/1404489
旧BEA社のJRockit JDK機能を統合
商⽤機能はすべてOpenJDKに寄贈
素のOpenJDKに⾜りない機能は
IcedTeaで⼀部補完
Web Start代替のIcedTea-Webは
AdoptOpenJDK配下にリポジトリ移管
Shenandoah GCなどをOpenJDKに寄贈
35
55. [参考] 判断軸による⽐較(例) – 使いやすさ
ディストリビューション
インストーラ SDKMAN
& Scoop
コンテナ
(Docker)
知名度 備考
8 11
Oracle JDK S A B B S Docker対応はServer JRE 8 のみ
Oracle OpenJDK - - S A A LTSはないが最新版を利⽤可能
Red Hat OpenJDK A A - B B
Red Hat Container Catalogで利⽤
再配布⾃由なUniversal Base Image(UBI)に今後注⽬
Azul Zulu B S A S B インストーラ・Dockerなども各種環境に注⼒
SapMachine - A A A - Docker公式イメージもあり (ベースOSはUbuntu)
BellSoft Liberica JDK A S A S - AlpineのDockerイメージはかなり軽量
AdoptOpenJDK B A S S A IDEバンドルも含めて⼀通り利⽤可能
Amazon Corretto A A A A A
DockerのベースOSはAmazon Linux2のみ
(Alpine対応は保留されている)
• JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価
• JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬
• 知名度は過去に実施したアンケートなどから判断
55
56. [参考] 判断軸による⽐較(例) -どこで運⽤するか
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
Oracle JDK OCI A S B A
クライアント⽤のJava Web
Start (アプレットは⾮推奨)
Oracle OpenJDK (any) A - A - 最新版はコンテナに適す
Red Hat OpenJDK OpenShift A A B B
IcedTea-Web for Windows
正式サポート予定
Azul Zulu Azure A B S A OpenJFXバンドル版や
IcedTea-Webも使われる︖
SapMachine (any) A - A - 基本はサーバ環境⽤途
BellSoft Liberica JDK Yandex A A S A JavaFX/OpenJFXバンドル
AdoptOpenJDK (any) A A S A
IcedTea-Web for Windows
バンドル(オプション)
Amazon Corretto AWS A - A B 8のみOpenJFXバンドルだが
古いのとWebkit周りで難あり
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
56