SlideShare a Scribd company logo
#codetokyo19B3 & #ccc_l5
最適なOpenJDKディストリビューションの選び方
- How to choose the best OpenJDK distribution -
Takahiro YAMADA
2019-05
#codetokyo19B3 & #ccc_l5
自己紹介
• お仕事: SIerの片隅でマルチベンダーのミドルウェア技術サポート
- Oracle Fusion Middleware
- Red Hat JBoss Middleware
- その他 Java を一部利用するミドルウェア製品
• コミュニティ
- Twitter: @yamadamn
- 元: Oracle ACE (Middleware)
- 現在: 日本GlassFishユーザー会 監事
- 本日: OpenJDK警察 OpenJDKソムリエ
2
#codetokyo19B3 & #ccc_l5
免責事項
• Oracle と Java は、Oracle Corporation およびその子会社・関連会社
の米国およびその他の国における登録商標です。文中の社名・商品名
などは、各社の商標または登録商標である場合があります。
• 発表する内容は個人の見解であり、所属する組織や団体の公式な見解
ではありません。
• 本資料に記載している内容は2019年5月前半時点の情報に基づきます。
また、本資料を使用したことにより被った直接的、間接的な損害等に
ついて、いかなる責任も負いかねます。
3
#codetokyo19B3 & #ccc_l5
本日メインで紹介するJDKディストリビューション
• Oracle JDK
• Oracle OpenJDK
• Red Hat OpenJDK
• Azul Zulu
• SapMachine
• BellSoft Liberica JDK
• AdoptOpenJDK with HotSpot
• Amazon Corretto
4
#codetokyo19B3 & #ccc_l5
なぜマルチプラットフォーム対応の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は若干古かったり、パッケージ更新に依存
• 例: 改元「令和」対応
5
(例)
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
6
#codetokyo19B3 & #ccc_l5
その前に: 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
7
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
8
#codetokyo19B3 & #ccc_l5
OpenJDKの歴史
• 最初に開発中のJDK 7がOSS化 (Sun時代)
• 開発中のJDK 7の開発途中からOpenJDK 6が派生
• JDK 7からはコードベースが OpenJDK 7に一本化
『アプリケーション実行基盤としてのOpenJDKの評価』
https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf
実際はその後
Oracle JDKとして
リリース
9
#codetokyo19B3 & #ccc_l5
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にも対応
10
#codetokyo19B3 & #ccc_l5
時代の変化
11
進化への追従
セキュリティ対応
の重要性
クラウドやコンテナ
環境の台頭
#codetokyo19B3 & #ccc_l5
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)
12
#codetokyo19B3 & #ccc_l5
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
13
#codetokyo19B3 & #ccc_l5
Oracle JDK/JRE 8までとOpenJDKの違い
『JDK:新しいリリースモデル解説』
https://www.slideshare.net/oracle4engineer/jdk-127825124
詳細はこちら『Oracle JDK 8にあってOpenJDKにない機能』
https://qiita.com/yamadamn/items/bb813dccaa1dc5585c9b
『How Do We Define Java? 』
https://www.azul.com/how-
do-we-define-java/
14
#codetokyo19B3 & #ccc_l5
Java 8と11の互換性
• Oracle JDK/JRE 11から削除された内容
- Javaプラグイン(アプレット), Java Web Start
- Public JRE+自動更新
- JavaFX (OpenJFXに移管)
- 32bit版バイナリ (Windows, Linux) ※Oracle JDK/JRE 9~
➡ クライアント環境に影響 (特にレガシーな環境)
• モジュール・システム(Project Jigsaw)による壁
- 内部APIに対するアクセス制限
- JAXBなどJava EE関連モジュール削除
➡ ミドルウェア、JVM言語、ライブラリ、フレームワーク、ツールなどに影響
15
#codetokyo19B3 & #ccc_l5
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)以降にも適用
16
#codetokyo19B3 & #ccc_l5
OpenJDKを中心として各ディストリビューションが競う時代に
ソースコード
複数のディストリビューター
JDKディストリビューション• 商用機能を寄贈
• その他固有機能を削除/OSS化
17
コミュニティ・プロジェクト
#codetokyo19B3 & #ccc_l5
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
12.0.1
2019-04
2018-05
AdoptOpenJDK
8u172
2018-03
SapMachine 10
2019-02
Amazon Corretto
8u212
Oracle JDK/OpenJDK
8u212, 11.0.3 (LTS)
2019-04
Oracle JDK/JRE 8
Public Updates 延長発表
2017-10
※各ディストリビューションの
正式と見られるリリース年月
18
• Red Hat OpenJDK
Windows版サポート発表
• Azul ZuluFXリリース
2018-12
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
19
#codetokyo19B3 & #ccc_l5
マルチベンダーによる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%)
20
#codetokyo19B3 & #ccc_l5
マルチベンダーによる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%)
21
#codetokyo19B3 & #ccc_l5
マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-openjdk8u212.txt – [Distribution by email/name] から独自集計
Total Issue: 112
1. Red Hat (64%)
2. Amazon (18%)
3. Oracle (12%)
4. SAP (4%)
5. 個人 (2%)
6. Azul (1%)
従来もOracle JDKのPublic Updates終了後は
Red HatがOpenJDKの修正を主導
※OpenJDK 8u212であって、
Oracle JDK 8u212ではないことに注意
72
20
13
4 2
1
Issues fixed in OpenJDK 8u212
Red Hat Amazon Oracle SAP 個人 Azul
22
#codetokyo19B3 & #ccc_l5
マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.3.txt – [Distribution by email/name] から独自集計
Total Issue: 185
1. Red Hat (45%)
2. SAP (31%)
3. Oracle (12%)
4. 個人 (4%)
5. Google (4%)
6. Amazon (3%)
7. BellSoft (1%)
8. Intel (1%)
※OpenJDK 11.0.3であって、
Oracle JDK 11.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
23
#codetokyo19B3 & #ccc_l5
マルチベンダーによる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
24
#codetokyo19B3 & #ccc_l5
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
25
#codetokyo19B3 & #ccc_l5
改元対応でのバックポート例
[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版で確認可)
26
#codetokyo19B3 & #ccc_l5
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などを通じて状況も明らかなので分断を招く訳ではない
27
#codetokyo19B3 & #ccc_l5
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
28
#codetokyo19B3 & #ccc_l5
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
29
#codetokyo19B3 & #ccc_l5
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配下にリポジトリ移管
30
Shenandoah GCなどをOpenJDKに寄贈
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
31
#codetokyo19B3 & #ccc_l5
その前に: 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さん
32
#codetokyo19B3 & #ccc_l5
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への最大の貢献者
• エンドユーザーへの慣れ・安心感があるが、ライセンス変更での混乱あり
• 日本語を含めて情報量が最も豊富
33
#codetokyo19B3 & #ccc_l5
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)
34
#codetokyo19B3 & #ccc_l5
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)
35
#codetokyo19B3 & #ccc_l5
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対応を重視
36
#codetokyo19B3 & #ccc_l5
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 を別に持つ
37
#codetokyo19B3 & #ccc_l5
BellSoft Liberica JDK
一般向け情報 種類・名称 参照先
導入・運用 ドキュメント 各リリースのダウンロードページから [installation guide]参照
リリースノート 各リリースのダウンロードページから [Release Notes]参照
* 修正内容はOracle JDKのリリースノートにリンク
ライフサイクル 8/11 LTSは最低2026年まで *非公式な確認であり、サイト準備中とのこと
動作環境 リリースノート参照
動向把握 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)との統合に強み
『AdoptOpenJDKにOpenJFXをバンドルして欲しい要望に対してのまとめ』
• JetBrainsとの戦略的提携、Oracleとの提携?(ビルド番号などから推測)
38
#codetokyo19B3 & #ccc_l5
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, etc.)
• TCK/JCKを通せていないが、独自のテストスイートで対応
39
#codetokyo19B3 & #ccc_l5
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)に注力
40
#codetokyo19B3 & #ccc_l5
その他注目しておきたい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 (JITにGraal採用でネイティブイメージ対応)
41
直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
42
#codetokyo19B3 & #ccc_l5
Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ)
大半の修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努力はされている
43
#codetokyo19B3 & #ccc_l5
JVMエコシステムアンケート (海外)
https://snyk.io/blog/jvm-ecosystem-report-2018/ (2018年10月レポート)
Which Java SE version do you use in
production for your main application?
Which Java vendor’s JDK do you use in
production for your main applications?
※実際には2018年9月より前のアンケートと想定される
44
#codetokyo19B3 & #ccc_l5
JVM言語利用者向け簡易アンケート (日本)
『 (2019年4月時点) JVM言語を使う方がどのJDK/JVMを使うか?アンケートと考察まとめ』
https://togetter.com/li/1340853
Q1. 商用環境でScala, Kotlin, Clojure, Groovy
などのJVM言語を使う方はJDK/JREは何を利用
しますか?
Q2. 商用環境でJVM言語を使う方はJDK/JVM
バージョンとして何をメインで使いますか?
?
45
#codetokyo19B3 & #ccc_l5
判断軸
• サポート
- アップデート提供期間
- 商用サポートの有無
- 関連製品との動作保証
• 使いやすさ
- インストーラ (特にWindowsクライアント)
- 開発環境
- コンテナ対応
• どこで運用するか
- サーバー (クラウド, オンプレミス)
- クライアント
- コンテナ
- 組み込み
46
#codetokyo19B3 & #ccc_l5
[参考] 判断軸によるディストリビューションの比較(例)
ディストリビューション
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-12 2026-12 2019-09 英語 ? ライフタイムは非公式に確認
AdoptOpenJDK 2023-09 2022-09 2019-09 英語 △ 利用増加中だがTCKが難点
Amazon Corretto 2023-06 2024-08 - - △ 利用増加中?
最低期間なので、今後延長
される可能性は大いにありサポート
• Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSに依存
• Azul Zuluは、コミュニティ版でのアップデート提供期間の保証はなし
• 総じて以前からのディストリビューションが強そうだが、将来は不明
47
#codetokyo19B3 & #ccc_l5
[参考] 判断軸によるディストリビューションの比較(例)
ディストリビューション
インストーラ sdkman &
chocolatey
コンテナ
(Docker)
備考
8 11
Oracle JDK ◎ ○ - △
Docker Storeのイメージは古い
(Oracle Container RegistryもServer JRE 8 のみ)
Oracle OpenJDK - - ◎ ○ LTSはないが最新版を利用可能
Red Hat OpenJDK ○ ○ - △ Red Hat Container Catalogで利用
Azul Zulu △ ◎ ◎ ◎ インストーラ・Dockerとも各種環境に注力
SapMachine - ○ ◎ ○ DockerのベースOSはUbuntuのみ
BellSoft Liberica JDK ○ ◎ ○ ○ 現状AlpineのDockerイメージは中途半端
AdoptOpenJDK △ ○ ○ ◎ 一通り利用可能
Amazon Corretto ○ ◎ ○ ○
DockerのベースOSはAmazon Linux2のみ
(Alpine対応は保留されている)
使いやすさ
• JDK 8のインストーラは、既存のWindow用Oracle JRE 8との互換性を基準に評価
• JDK 11のインストーラは、多くのプラットフォームに対応しているかに注目
48
#codetokyo19B3 & #ccc_l5
[参考] 判断軸によるディストリビューションの比較(例)
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
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) ○ △ ◎ ○
Amazon Corretto AWS ○ △ ○ -
どこで運用するか
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
49
#codetokyo19B3 & #ccc_l5
アジェンダ
1. OpenJDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各OpenJDKディストリビューションの特徴
4. OpenJDKディストリビューションの選び方
5. OpenJDKの支え方
50
#codetokyo19B3 & #ccc_l5
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を利用する (民法改正の影響なども考慮)
- アプリケーションに応じて適切なプラットフォームを検討する
51
#codetokyo19B3 & #ccc_l5
[参考] JDKディストリビューションの他の選び方(例)
• 例えば、好きなベンダー(ディストリビューター)のJDKを利用する
e.g. OpenJDK本体に貢献しているベンダーを応援したい
- Oracle JDK/Oracle OpenJDK
- Red Hat OpenJDK
- SapMachine
- BellSoft Liberica JDK
- IBM
- Amazon Corretto
• ディストリビューションの応援の仕方の例
- まずは使ってみる
- 意見を伝えたり、フィードバックして改善してみる
- Oracle Java SE Desktop Subscriptionを個人購入してみる
52
#codetokyo19B3 & #ccc_l5
コミュニティへの参加
• 勉強会、セミナーへの参加
- 各現場での啓蒙
- 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 さん
53
#codetokyo19B3 & #ccc_l5
Java/JVMエコシステムはこれまでと変わらず重要
• Javaはこれからますます進化を続ける
- 半年単位での機能リリース
- Project Panama, Valhalla, Loom
- Quarkus, MicronautなどGraalVMを利用したフレームワーク
• エコシステムは強力で重要不可欠
- 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で
Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273
- 『SunからOracleに変わって10年経ったけど第三者から見てもJavaは心配ない
よというポエム』https://togetter.com/li/1342209
54
#codetokyo19B3 & #ccc_l5
まとめ
• 最適なOpenJDKディストリビューションは環境・状況に応じて異なる
- 時代の変化にどれだけ追従していくか
• セキュリティやライフサイクルの考慮
• サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み
- サポートや動作保証をどう捉えるか
• 利用するミドルウェアやライブラリ、JVM言語など
• 有償サポートの利用有無や、法改正の影響を考慮
- どこで利用するか
• 開発環境と運用環境のJDK種類・バージョンの統一
• クラウド、オンプレミス、クライアント、コンテナ、組み込み
• - Java/JVMコミュニティやエコシステムの重要性
- Oracle JDK/JRE一強時代ではなく、個々に判断・選択する必要性
- 求められるのはディストリビューション利用者側の意識の変化
- OpenJDKなどのOSSは皆で参加し、育てていくもの
55
#codetokyo19B3 & #ccc_l5
ご清聴ありがとうございました
本セッションや資料は、Java関連コミュニティの方々や関係者各位も含め、
多くの皆様のご協力によって生まれたものです。改めて感謝を申し上げます。
56

More Related Content

最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5

  • 1. #codetokyo19B3 & #ccc_l5 最適なOpenJDKディストリビューションの選び方 - How to choose the best OpenJDK distribution - Takahiro YAMADA 2019-05
  • 2. #codetokyo19B3 & #ccc_l5 自己紹介 • お仕事: SIerの片隅でマルチベンダーのミドルウェア技術サポート - Oracle Fusion Middleware - Red Hat JBoss Middleware - その他 Java を一部利用するミドルウェア製品 • コミュニティ - Twitter: @yamadamn - 元: Oracle ACE (Middleware) - 現在: 日本GlassFishユーザー会 監事 - 本日: OpenJDK警察 OpenJDKソムリエ 2
  • 3. #codetokyo19B3 & #ccc_l5 免責事項 • Oracle と Java は、Oracle Corporation およびその子会社・関連会社 の米国およびその他の国における登録商標です。文中の社名・商品名 などは、各社の商標または登録商標である場合があります。 • 発表する内容は個人の見解であり、所属する組織や団体の公式な見解 ではありません。 • 本資料に記載している内容は2019年5月前半時点の情報に基づきます。 また、本資料を使用したことにより被った直接的、間接的な損害等に ついて、いかなる責任も負いかねます。 3
  • 4. #codetokyo19B3 & #ccc_l5 本日メインで紹介するJDKディストリビューション • Oracle JDK • Oracle OpenJDK • Red Hat OpenJDK • Azul Zulu • SapMachine • BellSoft Liberica JDK • AdoptOpenJDK with HotSpot • Amazon Corretto 4
  • 5. #codetokyo19B3 & #ccc_l5 なぜマルチプラットフォーム対応の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は若干古かったり、パッケージ更新に依存 • 例: 改元「令和」対応 5 (例)
  • 6. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 6
  • 7. #codetokyo19B3 & #ccc_l5 その前に: 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 7
  • 8. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 8
  • 9. #codetokyo19B3 & #ccc_l5 OpenJDKの歴史 • 最初に開発中のJDK 7がOSS化 (Sun時代) • 開発中のJDK 7の開発途中からOpenJDK 6が派生 • JDK 7からはコードベースが OpenJDK 7に一本化 『アプリケーション実行基盤としてのOpenJDKの評価』 https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf 実際はその後 Oracle JDKとして リリース 9
  • 10. #codetokyo19B3 & #ccc_l5 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にも対応 10
  • 12. #codetokyo19B3 & #ccc_l5 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) 12
  • 13. #codetokyo19B3 & #ccc_l5 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 13
  • 14. #codetokyo19B3 & #ccc_l5 Oracle JDK/JRE 8までとOpenJDKの違い 『JDK:新しいリリースモデル解説』 https://www.slideshare.net/oracle4engineer/jdk-127825124 詳細はこちら『Oracle JDK 8にあってOpenJDKにない機能』 https://qiita.com/yamadamn/items/bb813dccaa1dc5585c9b 『How Do We Define Java? 』 https://www.azul.com/how- do-we-define-java/ 14
  • 15. #codetokyo19B3 & #ccc_l5 Java 8と11の互換性 • Oracle JDK/JRE 11から削除された内容 - Javaプラグイン(アプレット), Java Web Start - Public JRE+自動更新 - JavaFX (OpenJFXに移管) - 32bit版バイナリ (Windows, Linux) ※Oracle JDK/JRE 9~ ➡ クライアント環境に影響 (特にレガシーな環境) • モジュール・システム(Project Jigsaw)による壁 - 内部APIに対するアクセス制限 - JAXBなどJava EE関連モジュール削除 ➡ ミドルウェア、JVM言語、ライブラリ、フレームワーク、ツールなどに影響 15
  • 16. #codetokyo19B3 & #ccc_l5 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)以降にも適用 16
  • 18. #codetokyo19B3 & #ccc_l5 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 12.0.1 2019-04 2018-05 AdoptOpenJDK 8u172 2018-03 SapMachine 10 2019-02 Amazon Corretto 8u212 Oracle JDK/OpenJDK 8u212, 11.0.3 (LTS) 2019-04 Oracle JDK/JRE 8 Public Updates 延長発表 2017-10 ※各ディストリビューションの 正式と見られるリリース年月 18 • Red Hat OpenJDK Windows版サポート発表 • Azul ZuluFXリリース 2018-12
  • 19. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 19
  • 20. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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%) 20
  • 21. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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%) 21
  • 22. #codetokyo19B3 & #ccc_l5 マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-openjdk8u212.txt – [Distribution by email/name] から独自集計 Total Issue: 112 1. Red Hat (64%) 2. Amazon (18%) 3. Oracle (12%) 4. SAP (4%) 5. 個人 (2%) 6. Azul (1%) 従来もOracle JDKのPublic Updates終了後は Red HatがOpenJDKの修正を主導 ※OpenJDK 8u212であって、 Oracle JDK 8u212ではないことに注意 72 20 13 4 2 1 Issues fixed in OpenJDK 8u212 Red Hat Amazon Oracle SAP 個人 Azul 22
  • 23. #codetokyo19B3 & #ccc_l5 マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-11.0.3.txt – [Distribution by email/name] から独自集計 Total Issue: 185 1. Red Hat (45%) 2. SAP (31%) 3. Oracle (12%) 4. 個人 (4%) 5. Google (4%) 6. Amazon (3%) 7. BellSoft (1%) 8. Intel (1%) ※OpenJDK 11.0.3であって、 Oracle JDK 11.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 23
  • 24. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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 24
  • 25. #codetokyo19B3 & #ccc_l5 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 25
  • 26. #codetokyo19B3 & #ccc_l5 改元対応でのバックポート例 [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版で確認可) 26
  • 27. #codetokyo19B3 & #ccc_l5 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などを通じて状況も明らかなので分断を招く訳ではない 27
  • 28. #codetokyo19B3 & #ccc_l5 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 28
  • 29. #codetokyo19B3 & #ccc_l5 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 29
  • 30. #codetokyo19B3 & #ccc_l5 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配下にリポジトリ移管 30 Shenandoah GCなどをOpenJDKに寄贈
  • 31. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 31
  • 32. #codetokyo19B3 & #ccc_l5 その前に: 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さん 32
  • 33. #codetokyo19B3 & #ccc_l5 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への最大の貢献者 • エンドユーザーへの慣れ・安心感があるが、ライセンス変更での混乱あり • 日本語を含めて情報量が最も豊富 33
  • 34. #codetokyo19B3 & #ccc_l5 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) 34
  • 35. #codetokyo19B3 & #ccc_l5 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) 35
  • 36. #codetokyo19B3 & #ccc_l5 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対応を重視 36
  • 37. #codetokyo19B3 & #ccc_l5 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 を別に持つ 37
  • 38. #codetokyo19B3 & #ccc_l5 BellSoft Liberica JDK 一般向け情報 種類・名称 参照先 導入・運用 ドキュメント 各リリースのダウンロードページから [installation guide]参照 リリースノート 各リリースのダウンロードページから [Release Notes]参照 * 修正内容はOracle JDKのリリースノートにリンク ライフサイクル 8/11 LTSは最低2026年まで *非公式な確認であり、サイト準備中とのこと 動作環境 リリースノート参照 動向把握 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)との統合に強み 『AdoptOpenJDKにOpenJFXをバンドルして欲しい要望に対してのまとめ』 • JetBrainsとの戦略的提携、Oracleとの提携?(ビルド番号などから推測) 38
  • 39. #codetokyo19B3 & #ccc_l5 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, etc.) • TCK/JCKを通せていないが、独自のテストスイートで対応 39
  • 40. #codetokyo19B3 & #ccc_l5 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)に注力 40
  • 41. #codetokyo19B3 & #ccc_l5 その他注目しておきたい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 (JITにGraal採用でネイティブイメージ対応) 41 直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん
  • 42. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 42
  • 43. #codetokyo19B3 & #ccc_l5 Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ) 大半の修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努力はされている 43
  • 44. #codetokyo19B3 & #ccc_l5 JVMエコシステムアンケート (海外) https://snyk.io/blog/jvm-ecosystem-report-2018/ (2018年10月レポート) Which Java SE version do you use in production for your main application? Which Java vendor’s JDK do you use in production for your main applications? ※実際には2018年9月より前のアンケートと想定される 44
  • 45. #codetokyo19B3 & #ccc_l5 JVM言語利用者向け簡易アンケート (日本) 『 (2019年4月時点) JVM言語を使う方がどのJDK/JVMを使うか?アンケートと考察まとめ』 https://togetter.com/li/1340853 Q1. 商用環境でScala, Kotlin, Clojure, Groovy などのJVM言語を使う方はJDK/JREは何を利用 しますか? Q2. 商用環境でJVM言語を使う方はJDK/JVM バージョンとして何をメインで使いますか? ? 45
  • 46. #codetokyo19B3 & #ccc_l5 判断軸 • サポート - アップデート提供期間 - 商用サポートの有無 - 関連製品との動作保証 • 使いやすさ - インストーラ (特にWindowsクライアント) - 開発環境 - コンテナ対応 • どこで運用するか - サーバー (クラウド, オンプレミス) - クライアント - コンテナ - 組み込み 46
  • 47. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション 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-12 2026-12 2019-09 英語 ? ライフタイムは非公式に確認 AdoptOpenJDK 2023-09 2022-09 2019-09 英語 △ 利用増加中だがTCKが難点 Amazon Corretto 2023-06 2024-08 - - △ 利用増加中? 最低期間なので、今後延長 される可能性は大いにありサポート • Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSに依存 • Azul Zuluは、コミュニティ版でのアップデート提供期間の保証はなし • 総じて以前からのディストリビューションが強そうだが、将来は不明 47
  • 48. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション インストーラ sdkman & chocolatey コンテナ (Docker) 備考 8 11 Oracle JDK ◎ ○ - △ Docker Storeのイメージは古い (Oracle Container RegistryもServer JRE 8 のみ) Oracle OpenJDK - - ◎ ○ LTSはないが最新版を利用可能 Red Hat OpenJDK ○ ○ - △ Red Hat Container Catalogで利用 Azul Zulu △ ◎ ◎ ◎ インストーラ・Dockerとも各種環境に注力 SapMachine - ○ ◎ ○ DockerのベースOSはUbuntuのみ BellSoft Liberica JDK ○ ◎ ○ ○ 現状AlpineのDockerイメージは中途半端 AdoptOpenJDK △ ○ ○ ◎ 一通り利用可能 Amazon Corretto ○ ◎ ○ ○ DockerのベースOSはAmazon Linux2のみ (Alpine対応は保留されている) 使いやすさ • JDK 8のインストーラは、既存のWindow用Oracle JRE 8との互換性を基準に評価 • JDK 11のインストーラは、多くのプラットフォームに対応しているかに注目 48
  • 49. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考 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) ○ △ ◎ ○ Amazon Corretto AWS ○ △ ○ - どこで運用するか • オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第) • 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か 49
  • 50. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 50
  • 51. #codetokyo19B3 & #ccc_l5 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を利用する (民法改正の影響なども考慮) - アプリケーションに応じて適切なプラットフォームを検討する 51
  • 52. #codetokyo19B3 & #ccc_l5 [参考] JDKディストリビューションの他の選び方(例) • 例えば、好きなベンダー(ディストリビューター)のJDKを利用する e.g. OpenJDK本体に貢献しているベンダーを応援したい - Oracle JDK/Oracle OpenJDK - Red Hat OpenJDK - SapMachine - BellSoft Liberica JDK - IBM - Amazon Corretto • ディストリビューションの応援の仕方の例 - まずは使ってみる - 意見を伝えたり、フィードバックして改善してみる - Oracle Java SE Desktop Subscriptionを個人購入してみる 52
  • 53. #codetokyo19B3 & #ccc_l5 コミュニティへの参加 • 勉強会、セミナーへの参加 - 各現場での啓蒙 - 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 さん 53
  • 54. #codetokyo19B3 & #ccc_l5 Java/JVMエコシステムはこれまでと変わらず重要 • Javaはこれからますます進化を続ける - 半年単位での機能リリース - Project Panama, Valhalla, Loom - Quarkus, MicronautなどGraalVMを利用したフレームワーク • エコシステムは強力で重要不可欠 - 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273 - 『SunからOracleに変わって10年経ったけど第三者から見てもJavaは心配ない よというポエム』https://togetter.com/li/1342209 54
  • 55. #codetokyo19B3 & #ccc_l5 まとめ • 最適なOpenJDKディストリビューションは環境・状況に応じて異なる - 時代の変化にどれだけ追従していくか • セキュリティやライフサイクルの考慮 • サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み - サポートや動作保証をどう捉えるか • 利用するミドルウェアやライブラリ、JVM言語など • 有償サポートの利用有無や、法改正の影響を考慮 - どこで利用するか • 開発環境と運用環境のJDK種類・バージョンの統一 • クラウド、オンプレミス、クライアント、コンテナ、組み込み • - Java/JVMコミュニティやエコシステムの重要性 - Oracle JDK/JRE一強時代ではなく、個々に判断・選択する必要性 - 求められるのはディストリビューション利用者側の意識の変化 - OpenJDKなどのOSSは皆で参加し、育てていくもの 55