Más contenido relacionado La actualidad más candente La actualidad más candente (20) Similar a これからのJDK/JVM 何を選ぶ?どう選ぶ? Similar a これからのJDK/JVM 何を選ぶ?どう選ぶ? (20) これからのJDK/JVM 何を選ぶ?どう選ぶ?2. ⾃⼰紹介
• CTCテクノロジー所属: マルチベンダーのミドルウェア技術サポート
- Oracle Fusion Middleware
- Red Hat JBoss Middleware
- その他 Java を⼀部利⽤するミドルウェア製品
• コミュニティ
- Twitter: @yamadamn
- 元: Oracle ACE (Middleware)
- 現在: ⽇本GlassFishユーザー会 監事
- 本⽇: OpenJDK警察 OpenJDKソムリエ
#kanjava #okajug #jjug #OpenJDKソムリエ
3. 免責事項
• Oracle と Java は、Oracle Corporation およびその⼦会社・関連会社
の⽶国およびその他の国における登録商標です。⽂中の社名・商品名
などは、各社の商標または登録商標である場合があります。
• 発表する内容は個⼈の⾒解であり、所属する組織や団体の公式な⾒解
ではありません。
• 本資料に記載している内容は2019年7⽉中旬時点の情報に基づきます。
※2019年5⽉中旬に開催されたOracle Code Tokyo, JJUG CCCのセッションでの
『OpenJDKディストリビューションの選び⽅』https://togetter.com/li/1356223 を
ベースとして、修正を加えています。
#kanjava #okajug #jjug #OpenJDKソムリエ
4. 本⽇メインで紹介するJDKディストリビューション
• Oracle JDK
• Oracle OpenJDK
• Red Hat OpenJDK
• Azul Zulu
• SapMachine
• BellSoft Liberica JDK
• AdoptOpenJDK with HotSpot
• Amazon Corretto
#kanjava #okajug #jjug #OpenJDKソムリエ
5. なぜマルチプラットフォーム対応のJDKに着⽬するか
• ⼿動でビルドするのは⾯倒⼿間や動作保証などの観点から困難
- 開発環境とテスト・本番環境でのJDK種類・バージョンによる差異を極⼒なくす
• 開発環境: Windows 10, macOS X, Ubuntu, Docker
• テスト環境: CentOS, Windows Server, Docker, クラウド, Raspberry Pi
• 本番環境: RHEL, Windows Server, Solaris, Docker, クラウド, Raspberry Pi
• 各JDKディストリビューターが⼒を⼊れている
- Oracle, Red Hat, Azul Systems, SAP, BellSoft, AdoptOpenJDK, Amazon
- リリースも早い
• Oracleが最初にリリース後に、各ディストリビューターが競ってリリース
• ゼロデイ脆弱性への対応を考慮
- Linux distroに含まれるOpenJDKは若⼲古かったり、パッケージ更新に依存
• 例: 改元「令和」対応、Mystery meat問題
(例)
#kanjava #okajug #jjug #OpenJDKソムリエ
7. その前に: Javaが有償化されたと思っている⽅いないですよね︖
• Javaは誰のもの︖
- 「Javaはオラクルのもの︖」、「いいえ、これからもJavaコミュニティのもので
す︕」(2011年頃 by @yoshioterada さん: 現Java Champion)
• 「Java有償化」ではなく「Java⾃由化」の⽅が正しい理解
- Linuxのようなディストリビューションモデルに変更
- 現状の主流は、OpenJDK with HotSpot JVMであり、そこまで差異はない
• 関連ツイートまとめ
- 『「Java 有償化」で誤解する⼈になるべく分かりやすく説明するためのまとめ』
https://togetter.com/li/1343743
- 『Oracle JREの商⽤無償版EOLの話をするには、政府CIOの「Javaのサポートポリシー変更等に関
する技術レポート」がオススメ』 https://togetter.com/li/1342198
- 『JJUG ナイトセミナー 「緊急特集︕ Javaの無償版はなくならないぞ︕」 #jjug』
https://togetter.com/li/1239234
#kanjava #okajug #jjug #OpenJDKソムリエ
8. ⽇本各地の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 さん
#kanjava #okajug #jjug #OpenJDKソムリエ
10. OpenJDKの歴史
• 最初に開発中のJDK 7がOSS化 (Sun時代)
• 開発中のJDK 7の開発途中からOpenJDK 6が派⽣
• JDK 7からはコードベースが OpenJDK に⼀本化
『アプリケーション実⾏基盤としてのOpenJDKの評価』
https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf
実際はその後
Oracle JDKとして
リリース
#kanjava #okajug #jjug #OpenJDKソムリエ
11. OpenJDKディストリビューションの歴史: 前編
• JDK 6リリース〜JDK 8リリース当初 (7年3ヶ⽉)
3つの主要ディストリビューションで、実質的にSun/Oracle JDK⼀強
Sun JDK 6
2006-12
Oracle JDK 7
2011-07
Oracle JDK 8
2014-03
2009-01
Red Hat OpenJDK
(OpenJDK 6 on RHEL5.3)
2013-09
Azul Zulu
(Zulu 7 for Windows)
Oracle
buys Sun
2010-01
その後、RHEL 6/7などにも搭載
2012-06 OpenJDK 7 on RHEL6.3
2014-10 OpenJDK 8 on RHEL6.6
Oracle
buys BEA
2008-04
旧BEA JRockit JDKについては
その後、Project HotRockitとして
Oracle JDK 7に機能マージ
その後、LinuxやmacOSにも対応
#kanjava #okajug #jjug #OpenJDKソムリエ
13. 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)
#kanjava #okajug #jjug #OpenJDKソムリエ
14. JDKリリースモデルの変更
• LTSとnon-LTSモデル
- 近年は様々な製品が採⽤: https://en.wikipedia.org/wiki/Long-term_support
- 数年かけてのメジャーリリースではなく、半年単位の機能リリースによる継続的な変更
• 共有ランタイム(Public JRE)ではなく、カスタムJREをアプリに組込むことを推奨
- モジュール・システム (Project Jigsaw) により実現
- jlinkを使って作成し、将来的にはjpackage(旧:javapackager)を利⽤
• ライセンス変更
- 以前のSun/Oracle JDKのBCLライセンスではJRE単独の再配布が不可
• Oracle JDK: OTNLA for Oracle Java SE
• Oracle OpenJDK: GPLv2 + Classpath Exception
『JDKの新しいリリース・モデル、および提供ライセンスについて』
https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
#kanjava #okajug #jjug #OpenJDKソムリエ
16. Java 8と11の⾮互換性
• Oracle JDK 11から削除された内容
- Javaプラグイン(アプレット), Java Web Start
- Public JRE+⾃動更新
- JavaFX (OpenJFXに移管)
- 32bit版バイナリ (Windows, Linux) ※Oracle JDK/JRE 9~
➡ クライアント環境に影響 (特にレガシーな環境)
• モジュール・システム(Project Jigsaw)による壁
- 内部APIに対するアクセス制限
- JAXBなどJava EE関連モジュール削除
➡ ミドルウェア、JVM⾔語、ライブラリ、フレームワーク、ツールなどに影響
#kanjava #okajug #jjug #OpenJDKソムリエ
17. Java 11以降はOpenJDKとOracle JDKが実質的に同⼀
• Oracleが商⽤機能をOpenJDKに寄贈 (JFR/JMC, AppCDS, ZGC)
• プロプライエタリな機能(JavaプラグインやJava Web Start)を削除
• 3rd-partyライセンスのライブラリ(フォントや描画など)をOSSベースに変更
『JDK:新しいリリース
モデル解説』
https://www.slideshare
.net/oracle4engineer/jd
k-127825124
2019年4⽉のOracle JDK 8
(8u211/8u212)以降にも適⽤
#kanjava #okajug #jjug #OpenJDKソムリエ
19. OpenJDKディストリビューションの歴史: 後編
• JDK 9リリース〜実質的に初のLTSとなる11.0.3登場 (1年7ヶ⽉)
- 既存3ベンダーを含む計7つのディストリビューターで戦国時代に突⼊(?)
OpenJDK 9
2017-09
OpenJDK 10
2018-03
OpenJDK 12
2019-03
2018-04
BellSoft Liberica JDK
10 for Raspberry Pi
Oracle JDK/JRE 8
Public Updates終了
2019-01
OpenJDK 11 (LTS)
2018-09
2019-07
8u221/222
11.0.4
12.0.2
2018-05
AdoptOpenJDK
8u172
2018-03
SapMachine 10
2019-02
Amazon Corretto
8u212
Oracle JDK/OpenJDK
8u212, 11.0.3 (LTS),
12.0.1
2019-04
Oracle JDK/JRE 8
Public Updates 延⻑発表
2017-10
※各ディストリビューションの
正式と⾒られるリリース年⽉
• Red Hat OpenJDK
Windows版サポート発表
• Azul ZuluFXリリース
2018-12
#kanjava #okajug #jjug #OpenJDKソムリエ
21. マルチベンダーによる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%)
#kanjava #okajug #jjug #OpenJDKソムリエ
22. マルチベンダーによる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%)
#kanjava #okajug #jjug #OpenJDKソムリエ
23. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212/222)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-openjdk8u212.txt, pushes-openjdk8u222.txt
– [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/222であって、Oracle JDK 8u212/222ではないことに注意
72
20
13
4 2
1
Issues fixed in OpenJDK 8u212
Red Hat Amazon Oracle SAP 個人 Azul
#kanjava #okajug #jjug #OpenJDKソムリエ
Total Issue: 152
1. Red Hat (70.4%)
2. SAP (15.1%)
3. Amazon (9.2%)
4. IBM (2.6%)
5. Azul (1.3%)
6. Oracle (0.7%)
7. 個⼈ (0.7%)
107
23
14
4
2 1
Issues fixed in OpenJDK 8u222
Red Hat SAP Amazon IBM Azul Oracle
24. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3/11.0.4)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.3.txt, pushes-11.0.4.txt
– [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.4であって、Oracle JDK 11.0.3/11.0.4ではないことに注意
83
58
23
7
7 5
1
1
Issues fixed in OpenJDK 11.0.3
Red Hat SAP Oracle 個人
Google Amazon BellSoft Intel
#kanjava #okajug #jjug #OpenJDKソムリエ
124
96
8 7 7
2 2 1
Issues fixed in OpenJDK 11.0.4
SAP Red Hat Amazon
Azul Google Oracle Huawei
Total Issue: 247
1. SAP (50.2%)
2. Red Hat (38.9%)
3. 個⼈ (3.2%)
4. Amazon (2.8%)
5. Azul (2.8%)
6. Google (0.8%)
7. Oracle (0.8%)
8. Huawei (0.4%)
25. マルチベンダーによる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ヵ⽉間
OpenJDK 12.0.1 はデータが⾒つからないが
Oracle主導と想定
つまり、Oracleは最新版OpenJDKに注⼒し、
OpenJDK 11 LTSは他のベンダーに委任
50
20
18
2 2
Issues fixed in OpenJDK 11.0.2
Oracle SAP Red Hat 個人 Google
#kanjava #okajug #jjug #OpenJDKソムリエ
26. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 13-ea)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-13.txt – [Distribution by email/name] から独⾃集計 (7⽉頭時点)
Total Issue: 2284
1. Oracle (75.9%)
2. Red Hat (10.1%)
3. SAP (5.4%)
4. Google (3.4%)
5. 個⼈ (2.8%)
6. BellSoft (0.6%)
7. ARM (0.5%)
8. Huawei (0.5%)
9. Intel (0.3%)
10.IBM (0.2%)
11.Amazon (0.1%)
12.Azul (0.1%)
#kanjava #okajug #jjug #OpenJDKソムリエ
※JDK 13は9⽉中旬リリース予定のため、確定した内容ではない
1733
230
123
77 65
Issues Fixed in 13-ea
Oracle Red Hat SAP Google BellSoft
ARM Huawei Intel IBM Amazon Azul
27. OpenJDK 8u212/11.0.3 LTSがリリースされて⾒えてきたこと
• 2019年4⽉のリリース前後から⾒えたこと
- Red HatがOpenJDK 8u212/11.0.3以降 LTSのアップデートを主導
• 『Red HatがOpenJDK 8/11 LTSの修正を主導することへの⾒解や反響』
https://togetter.com/li/1342856
- (補⾜) Oracle JDK/Oracle OpenJDK 12にはRed Hat由来のShenandoah GCは⼊らず
- Oracle JDK 8u212/11.0.3 と OpenJDK 8u212/11.0.3 は似て⾮なるもの
• 『OpenJDK 11.0.3/8u212 LTS以降でのリリースノートや脆弱性の追い⽅』
https://togetter.com/li/1342936
• 『改元(新元号)対応に⾒るOracle JDKとOpenJDKの攻防あるいは協⼒ #令和』
https://togetter.com/li/1343228
#kanjava #okajug #jjug #OpenJDKソムリエ
28. 改元対応でのバックポート例
[JDK-8205432] Replace the placeholder Japanese era name - Java Bug System
OpenJDKとOracle JDK
共通の修正
• 12.0.1/12.0.2
(non-LTS/最初の6ヵ⽉)
Oracle JDK 固有の修正
• 11.0.x-oracle
• 8uXXX
Red Hatが主導する
OpenJDKへの修正
• 11.0.x
• openjdk8uXXX
最初に実装されるのは
開発中のリリース
• 13 (EA版で確認可)
#kanjava #okajug #jjug #OpenJDKソムリエ
29. LTSリリースはOracle JDKとRed Hat主導のOpenJDKで差異あり
Red Hat主導の
OpenJDK LTS
• 11.0.3以降
• 8u212以降
Oracle JDK LTS
• 11.0.3以降
• 8u211/212以降
Oracle JDK/OpenJDK LTS
共通の修正
• セキュリティ脆弱性
• その他重⼤な不具合
• 影響の⼤きい修正
最新版(non-LTS含む)は共通であり、Java Bug Systemなどを通じて状況も明らかなので分断を招く訳ではない
#kanjava #okajug #jjug #OpenJDKソムリエ
30. 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
#kanjava #okajug #jjug #OpenJDKソムリエ
数が⼤きいほうが多くの修正
を含んでいる訳ではない
31. [参考] 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)
#kanjava #okajug #jjug #OpenJDKソムリエ
『JavaのリリースにはCPUとPSUの2種類があります』by @jyukutyo さん
https://www.sakatakoichi.com/entry/2015/07/22/173205
(Amazon Correttoの例だが他も基本的に同様)
32. 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
#kanjava #okajug #jjug #OpenJDKソムリエ
33. [参考] 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
#kanjava #okajug #jjug #OpenJDKソムリエ
(AdoptOpenJDKの例だが他も基本的に同様)
OpenJDKのビルド番号
とは無関係
34. 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エコシステムを安定的に維持する狙いも⼤きいと⾒られる
旧BEA社のJRockit JDK機能を統合
商⽤機能はすべてOpenJDKに寄贈
素のOpenJDKに⾜りない機能は
IceadTeaで⼀部補完
Web Start代替のIceadTea-Webは
AdoptOpenJDK配下にリポジトリ移管
Shenandoah GCなどをOpenJDKに寄贈
#kanjava #okajug #jjug #OpenJDKソムリエ
36. その前に: OpenJDK Projectの動向把握⽤の基礎情報源
種類・名称 URL ⽤途・備考
Webサイト http://openjdk.java.net/ OpenJDK開発者⽤のため少し構成が複雑
JDK Enhancement Proposal
(JEP)
http://openjdk.java.net/jeps/0 JDKバージョンごとに⼊る機能確認
2011年に策定されJSRを牽引
JDK Project http://openjdk.java.net/projects/jdk/ JDKリリース時期と含まれるJEP
OCTLA Signatories List https://openjdk.java.net/groups/conf
ormance/JckAccess/jck-access.html
Javaの正式実装を証明する技術互換キット
(TCK/JCK)にアクセスできる署名者⼀覧
Twitter @OpenJDK
メーリングリスト (ML) http://mail.openjdk.java.net/ 興味があるトピックを参照・購読・投稿
Java Bug System (JBS) https://bugs.openjdk.java.net/ JIRAによるIssueのトラッキング (Bugだけ
でなく、機能拡張や互換性確認なども含む)
ソースコード管理 http://hg.openjdk.java.net/ Mercurialにて管理
Project SkaraにてGitHubへの移⾏も検証中
https://github.com/openjdk
『JSRとJEPとJBSの⾒⽅や調べ⽅について』
https://www.slideshare.net/AyaEbata/jsrjepjbs by Aya Ebataさん
#kanjava #okajug #jjug #OpenJDKソムリエ
37. Oracle JDK
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Java SE API & ドキュメント (Oracleだけではなく他のJDKを使う場合も必要)
リリースノート JDK Release Notes
脆弱性関連 Critical Patch Updates and Security Alerts
ライフサイクル Oracle Java SE サポート・ロードマップ
動作環境 Java SE Subscription ドキュメント - システム要件
動向把握 Twitter @Java (OracleだけではなくJavaの各種情報源)
Blog Oracle Java Platform Group, Product Management Blog
ダウンロード Java SE - Downloads | Oracle Technology Network *要アカウント認証 (java.comのJREは現状認証不要)
ライセンス Oracle Binary Code License (BCL for Java SE): ~JDK 10, ~8u201/202
Oracle Technology Network License Agreement (OTNLA) for Oracle Java SE: JDK 11~, 8u211/212~
* 組み込み⽤途は元々開発無償、配備はロイヤリティ必要
• 従来からのメインディストリビューターであり、OpenJDKへの最⼤の貢献者
• エンドユーザーへの慣れ・安⼼感があったが、ライセンス変更で⼤混乱
『4⽉からのOracle JDK/JREライセンスの変更に関するまとめ』
• ⽇本語を含めて情報量が最も豊富
#kanjava #okajug #jjug #OpenJDKソムリエ
38. Oracle OpenJDK
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ Oracle JDKと同じだが、ライフサイクルは半年のみ (次期機能リリースまで)
動向把握 Oracle JDKと同じだが、ダウンロードページからも各種リンクあり
ダウンロード JDK Builds from Oracle: https://jdk.java.net/ (JDK 9~)
* 認証不要
ライセンス GPLv2 + Classpath Exception
(GNU General Public License, version 2, with the Classpath Exception)
[参考] OpenJDKソースコードと同じ: https://openjdk.java.net/legal/gplv2+ce.html
• 汎⽤プラットフォームで最新版へ追従 (JDK8は未対応)
• アーリーアクセス(EA)版の評価・検証にも利⽤
• インストーラなし (tar.gz/zip)
#kanjava #okajug #jjug #OpenJDKソムリエ
39. Red Hat OpenJDK
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Product Documentation for OpenJDK
* Windows⽤で現状英語のみ、JBossユーザ向けにRHELでのインストールガイドは別途あり
リリースノート
ライフサイクル OpenJDK Life Cycle and Support Policy
* ⽇本語翻訳は https://access.redhat.com/ja/articles/1457743動作環境
動向把握 Twitter @rhdevelopers (他、個⼈アカウントも適宜確認)
Blog https://developers.redhat.com/blog/category/java/
ダウンロード Red Hat Developer | OpenJDK Download
https://developers.redhat.com/products/openjdk/download/ (開発者⽤Windows版で要アカウント認証)
ライセンス GPLv2 + Classpath Exception
• Oracleに次ぐOpenJDKの貢献者であり、以前からPublic Updates終了後に主導
• RHEL/CentOSで豊富な実績を持ち、従来はIceadTeaで機能拡張
• 今後はWindows版OpenJDKも正式サポート (例: Icead-Tea Web)
#kanjava #okajug #jjug #OpenJDKソムリエ
40. Azul Zulu
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Zulu user documentation
リリースノート Zulu Community Release Notes
ライフサイクル Azul Product Support Lifecycle
動作環境 Tested and Validated Platforms
動向把握 Twitter @AzulSystems
Blog https://www.azul.com/blog/
GitHub https://github.com/zulu-openjdk (現状ほぼDockerfile⽤)
ダウンロード https://www.azul.com/downloads/zulu/ *認証不要
ライセンス GPLv2 + Classpath Exception
• JDK/JVM専業ベンダーで、異なるJVMであるAzul Zingを持つ
• Microsoft Azureで以前から利⽤され、商⽤のZulu Enterprise相当を提供
• 以前は素のOpenJDKビルドに近かったが、最近は機能拡張やDocker対応を重視
#kanjava #okajug #jjug #OpenJDKソムリエ
41. SapMachine
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント https://github.com/SAP/SapMachine/wiki
リリースノート (⾒当たらず) * 基本はOracle OpenJDKやAdoptOpenJDKと同じはず
ライフサイクル https://github.com/SAP/SapMachine/wiki/Security-Updates,-Maintenance-
and-Support
動作環境 https://github.com/SAP/SapMachine/wiki/Supported-platforms
動向把握 Twitter @SweetSapMachine
GitHub https://github.com/SAP/SapMachine
ダウンロード https://sap.github.io/SapMachine/ *認証不要(GitHubからダウンロード)
ライセンス GPLv2 + Classpath Exception
• アーリーアクセス(EA)版を含めた最新リリースへの追従 (JDK8は未対応)
• サーバーサイドで実⾏するうえでの診断機能の強化
• 元々モニタリングに強い SAP JVM を別に持つ
#kanjava #okajug #jjug #OpenJDKソムリエ
42. BellSoft Liberica JDK
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント 各リリースのダウンロードページから [installation guide]参照
リリースノート 各リリースのダウンロードページから [Release Notes]参照
* 修正内容はOracle JDKのリリースノートにリンク
ライフサイクル https://support.bell-sw.com/support
動作環境 リリースノート参照
動向把握 Twitter @bellsoftware
Blog https://www.bell-sw.com/index.html
GitHub https://github.com/bell-sw/Liberica
ダウンロード https://www.bell-sw.com/ *認証不要
ライセンス GPLv2 + Classpath Exception
• AdoptOpenJDKに次ぎ、広範なプラットフォームに対応
• JavaFX/OpenJFXとの統合 (11以降は含まないLite版もあり)
『Liberica JDKやExecutable Jarの是⾮に対するJavaFXガチ勢とのやり取りまとめ』
• JetBrainsとの戦略的提携、Oracleとの提携?(ビルド番号などから推測)
#kanjava #okajug #jjug #OpenJDKソムリエ
43. AdoptOpenJDK with HotSpot
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント https://adoptopenjdk.net/installation.html
リリースノート https://adoptopenjdk.net/release_notes.html
ライフサイクル https://adoptopenjdk.net/support.html
動作環境 https://adoptopenjdk.net/supported_platforms.html
動向把握 Twitter @adoptopenjdk
Blog https://blog.adoptopenjdk.net/
GitHub https://github.com/AdoptOpenJDK/openjdk-build
Slack https://adoptopenjdk.net/slack
ダウンロード https://adoptopenjdk.net/ *認証不要(GitHubからダウンロード)
ライセンス GPLv2 + Classpath Exception
• ビルドファームによる広範なプラットフォームに対応
• コミュニティに最も近い存在で、スポンサーとも協⼒関係
(Platinum Sponsors: IBM, Microsoft Azure, Azul Systems, Pivotal, Red Hat, etc.)
• TCK/JCKを通せていないが、独⾃のテストスイートで対応
#kanjava #okajug #jjug #OpenJDKソムリエ
44. Amazon Corretto
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Corretto 8 User Guide / Corretto 11 User Guide
リリースノート Change Log for Amazon Corretto 8
Change Log for Amazon Corretto 11
ライフサイクル https://aws.amazon.com/corretto/faqs/#support
動作環境 https://aws.amazon.com/corretto/faqs/#Using_Amazon_Corretto
動向把握 Twitter @AWSOpen
Blog https://aws.amazon.com/blogs/opensource/category/devops/aws-java-
development/
GitHub https://github.com/corretto/
ダウンロード https://aws.amazon.com/corretto/ *認証不要、英語に切り替えないと古いモジュールが⾒える場合がある
ライセンス GPLv2 + Classpath Exception
• AWSおよびJava Fatherの強⼒なネームバリュー
• ドキュメントに⼒を⼊れている (⽇本語翻訳などもあるが遅れる)
• 独⾃バックポートありで、ダウンストリーム(LTS)に注⼒
#kanjava #okajug #jjug #OpenJDKソムリエ
45. その他注⽬しておきたいJDKディストリビューション
• OpenJDK with HotSpot JVMベース
- Linux distroバンドル : 各Linuxディストリビューションで対応に差異あり
- 国内ベンダーJDK : 富⼠通、⽇⽴などの各製品でサポート
- Alibaba Dragonwell : 現状LinuxのJDK8専⽤で、JWarmupや独⾃のJFRバックポートあり
- ojdkbuild : Red Hat OpenJDK Windows版のベースでFedora的扱い
• OpenJDK with NOT HotSpot JVM
- AdoptOpenJDK with OpenJ9 : フットプリントのよさをうたうEclipse OpenJ9ベース
- IBM SDK Java Technology Edition : 最近はOpenJ9ベース+IBM独⾃機能
- Azul Zing : Linux x64に特化し、C4 GCやFalcon JITで⾼速化をうたう
- GraalVM : Oracleが中⼼に開発する多⾔語対応VM (HotSpotだがAOTでネイティブイメージ対応)
直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん
#kanjava #okajug #jjug #OpenJDKソムリエ
50. JVM⾔語利⽤者向け簡易アンケート (⽇本)
『 (2019年4⽉時点) JVM⾔語を使う⽅がどのJDK/JVMを使うか︖アンケートと考察まとめ』
https://togetter.com/li/1340853
Q1. 商⽤環境でScala, Kotlin, Clojure, Groovy
などのJVM⾔語を使う⽅はJDK/JREは何を利⽤
しますか︖
Q2. 商⽤環境でJVM⾔語を使う⽅はJDK/JVM
バージョンとして何をメインで使いますか︖
︖
#kanjava #okajug #jjug #OpenJDKソムリエ
51. Java/JVM⾔語利⽤者向けアンケート (⽇本)
『 (2019年7⽉時点) Java/JVM⾔語を商⽤で使っている⽅向けのアンケートと考察まとめ』
https://togetter.com/li/1376545
Q1. 回答者の⽴場 Q2. メインで利⽤するJDKバージョン
#kanjava #okajug #jjug #OpenJDKソムリエ
Q3. メインで利⽤するJDKの種類
Q4. どこでJDK/JVMを実⾏するか Q5. JDK/JVMの商⽤サポートの必要性
52. 判断軸
• サポート
- アップデート提供期間
- 商⽤サポートの有無
- 関連製品との動作保証
• 使いやすさ
- インストーラ (特にWindowsクライアント)
- 開発環境
- コンテナ対応
• どこで運⽤するか
- サーバー (クラウド, オンプレミス)
- クライアント
- コンテナ
- 組み込み
#kanjava #okajug #jjug #OpenJDKソムリエ
53. [参考] 判断軸によるディストリビューションの⽐較(例)
ディストリビューション
8 (LTS)
EOL
11 (LTS)
EOL
12 EOL
(non-LTS)
商⽤
サポート
関連製品の
動作保証
備考
Oracle JDK 2025-03 2026-09 2019-09 ⽇本語可 ◎→︖ 既存では強いが今後不明
Oracle OpenJDK - 2019-03 2019-09 - △ 追従できる製品は限定
Red Hat OpenJDK 2023-06 2024-10 - ⽇本語可 △→︖ Windows対応で増える︖
Azul Zulu 2026-03 2027-09 2019-09 英語 ○ 奇数リリースで商⽤はMTS
SapMachine - 2022-09 2019-09 - ︖ SAP製品内に限定︖
BellSoft Liberica JDK 2026-01 2027-03 2019-09 英語 ︖ 知名度はまだ低い
AdoptOpenJDK 2023-09 2022-09 2019-09 ⽇本語︖ △ 利⽤増加中だがTCKが難点
Amazon Corretto 2023-06 2024-08 - - △ 利⽤増加中︖
最低期間なので、今後延⻑
される可能性は⼤いにありサポート
• Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSに依存
• 商⽤サポートがあるディストリビューションは、そのEOLを記載
• 総じて以前からのディストリビューションが強そうだが、将来は不明
#kanjava #okajug #jjug #OpenJDKソムリエ
54. [参考] 判断軸によるディストリビューションの⽐較(例)
ディストリビューション
インストーラ SDKMAN &
Scoop
コンテナ
(Docker)
備考
8 11
Oracle JDK ◎ ○ △ △
Docker Storeのイメージは古い
(Oracle Container RegistryもServer JRE 8 のみ)
Oracle OpenJDK - - ◎ ○ LTSはないが最新版を利⽤可能
Red Hat OpenJDK ○ ○ - △
Red Hat Container Catalogで利⽤
再配布⾃由なRed Hat Universal Base Imageに今後注⽬
Azul Zulu △ ◎ ○ ◎ インストーラ・Dockerとも各種環境に注⼒
ZuluFXコミュニティ版にはあまり⼒を⼊れていない
SapMachine - ○ ○ ◎ Docker公式イメージもあり (ベースOSはUbuntu)
BellSoft Liberica JDK ○ ◎ ○ ○ 現状AlpineのDockerイメージは中途半端
AdoptOpenJDK △ ○ ◎ ◎ IDEバンドルも含めて⼀通り利⽤可能
Amazon Corretto ○ ◎ ○ ○
DockerのベースOSはAmazon Linux2のみ
(Alpine対応は保留されている)
使いやすさ
• JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価
• JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬
#kanjava #okajug #jjug #OpenJDKソムリエ
55. [参考] 判断軸によるディストリビューションの⽐較(例)
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
Oracle JDK Oracle ○ ◎ △ ○
クライアント⽤のJava Web
Start (アプレットは⾮推奨)
Oracle OpenJDK (any) ○ △ ○ -
Red Hat OpenJDK OpenShift ○ ○ △ -
IceadTea-Web for Windows
正式サポート予定
Azul Zulu Azure ○ △ ◎ ○
ZuluFXコミュニティ版はイン
ストーラなし
SapMachine (any) ○ △ ○ -
BellSoft Liberica JDK (any) ○ ○ ○ ○ JavaFX/OpenJFXバンドル
AdoptOpenJDK (any) ○ ○ ◎ ○
IceadTea-Web for Windows
バンドル(オプション)
Amazon Corretto AWS ○ △ ○ -
8のみOpenJFXバンドルだが
Webkit周りで難あり
どこで運⽤するか
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
#kanjava #okajug #jjug #OpenJDKソムリエ
56. コストをどう考えるか
• 環境・状況次第で⼤きく変わる (⾃社開発⽤途や個⼈利⽤は無償がほとんど)
- Oracle JDK
• Oracle Cloud InfrastructureやOracle製品とともに使う場合、多くは追加費⽤なし
- Red Hat OpenJDK
• RHELやRed Hat Middleware製品とともに使う場合は追加費⽤なし
- その他のJDKディストリビューション
• 利⽤は無償が多いが、商⽤(技術)サポートは有償
• ITライフサイクルを通じて考える
- 調達・購買コストだけではない
- 開発〜運⽤時含めトラブル時など対応コストも考慮
- バランスの⾒極めや何かしらのトレードオフは必要
企画・
設計
調達・
購買
開発・
構築
導⼊・
移⾏
保守・
運⽤
ITライフサイクル
および継続的改善
#kanjava #okajug #jjug #OpenJDKソムリエ
58. JDKディストリビューションにどう接していくか
• 開発者
- 複数のJDKの特徴を把握し、必要に応じて使い分ける
• 基本的には運⽤環境と合わせる
• ⾃社製品や⾃社サービスでどのディストリビューションを利⽤するかは要検討
- 新しい機能リリース(できればEA版)やディストリビューションを試しておく
• 必要時はBug/Issue報告やPull Requestなどして改善に協⼒
- 例: [JDK-8218287] jshell tool: input behavior unstable after 12-ea+24 on Windows
- 例: Easy identification x86/x64 in Apps & Features of Windows · Issue #37 · corretto/corretto-8
• 構築・運⽤担当者
- 各製品のライフサイクルやOpenJDKのリリース/更新スケジュールを把握する
- 動作保証に適したJDKを利⽤する (⺠法改正の影響なども考慮)
- アプリケーションに応じて適切なプラットフォーム・JDKを検討する
#kanjava #okajug #jjug #OpenJDKソムリエ
59. [参考] JDKディストリビューションの他の選び⽅(例)
• 例えば、好きなベンダー(ディストリビューター)のJDKを利⽤する
e.g. OpenJDK本体に貢献しているベンダーを応援したい
- Oracle JDK/Oracle OpenJDK
- Red Hat OpenJDK
- SapMachine
- BellSoft Liberica JDK
- IBM SDK Java Technology Edition
- Amazon Corretto
• ディストリビューションの応援の仕⽅の例
- まずは使ってみる
- 意⾒を伝えたり、フィードバックして改善してみる
- Oracle Java SE Desktop Subscription, IBM Runtimes for Java Desktopを個⼈購⼊してみる
#kanjava #okajug #jjug #OpenJDKソムリエ
60. Java/JVMエコシステムはこれまでと変わらず重要
• Javaはこれからますます進化を続ける
- 半年単位での機能リリース
- Project Panama, Valhalla, Loom
- Quarkus, Micronaut, HelidonなどGraalVMに対応したWebフレームワーク
『Introduction to GraalVM / GraalVMが照らす未来』by @jyukutyo さん
『Javaは今でも無償ですという話と最近のJava Webフレームワーク』by @kis さん
• エコシステムは強⼒で重要不可⽋
- 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で
Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273
- 『SunからOracleに変わって10年経ったけど第三者から⾒てもJavaは⼼配ない
よというポエム』https://togetter.com/li/1342209
#kanjava #okajug #jjug #OpenJDKソムリエ
61. コミュニティへの参加
• 勉強会・セミナーへの参加
- 各現場での啓蒙
- Twitterでの感想やブログ記事などでの情報発信
• OpenJDKコミュニティへの参加
- 気になるMLやBug/Issueをウォッチしてみる
- Bug Reportを上げたり、MLで報告してみる
• JDKディストリビューションへの参加
- まずは使ってみる
- Twitter/GitHubでウォッチしてみる
- Twitter/Slackで聞いてみたり、GitHubでIssueをあげてみる
- Pull Requestしてみる
https://www.slideshare.net/yusuke/java-98886920
by @yusuke_arclamp さん
『エンタープライズ、アーキテクチャ、アジャイルのこれから』
by @yusuke_arclamp さん ©Growth Architectures & Teams, Inc
#kanjava #okajug #jjug #OpenJDKソムリエ
62. まとめ
• 最適なOpenJDKディストリビューションは環境・状況に応じて異なる
- 時代の変化にどれだけ追従していくか
• セキュリティやライフサイクルの考慮
• サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み
- サポートや動作保証をどう捉えるか
• 利⽤するミドルウェアやライブラリ、JVM⾔語など
• 有償サポートの利⽤有無や、法改正の影響を考慮
- どこで利⽤するか
• 開発環境と運⽤環境のJDK種類・バージョンの統⼀
• クラウド、オンプレミス、クライアント、コンテナ、組み込み
• Java/JVMコミュニティやエコシステムの重要性
- Oracle JDK/JRE⼀強時代ではなく、個々に判断・選択する必要性
- 求められるのはディストリビューション利⽤者側の意識の変化
- OpenJDKなどのOSSは皆で参加し、育てていくもの
#kanjava #okajug #jjug #OpenJDKソムリエ