SlideShare a Scribd company logo
1 of 60
Download to read offline
JDKの選択肢とサーバーサイドでの選び⽅
- How to choose JDK for server-side apps -
Takahiro YAMADA
2019-10-04
#nifclounge #glassfish_jp
⾃⼰紹介
• CTCテクノロジー所属: マルチベンダーのミドルウェア技術サポート
- Oracle Fusion Middleware
- Red Hat JBoss Middleware
- その他 Java を⼀部利⽤するミドルウェア製品
• コミュニティ
- Twitter: @yamadamn
- 元: Oracle ACE (Middleware)
- 現在: ⽇本GlassFishユーザー会 監事
- 本⽇: OpenJDK警察 OpenJDKソムリエ
#nifclounge #glassfish_jp
免責事項
• Oracle と Java は、Oracle Corporation およびその⼦会社・関連会社
の⽶国およびその他の国における登録商標です。⽂中の社名・商品名
などは、各社の商標または登録商標である場合があります。
• 発表する内容は個⼈の⾒解であり、所属する組織や団体の公式な⾒解
ではありません。
• 本資料に記載している内容は2019年10⽉頭時点の情報に基づきます。
※2019年7⽉に開催した『これからのJDK 何を選ぶ︖どう選ぶ︖』のセッション
https://togetter.com/li/1373467 をベースとして、修正を加えています。
#nifclounge #glassfish_jp
本⽇メインで紹介するJDK
• Oracle JDK
• Oracle OpenJDK
• Red Hat OpenJDK
• Azul Zulu
• SapMachine
• BellSoft Liberica JDK
• AdoptOpenJDK with HotSpot
• Amazon Corretto
#nifclounge #glassfish_jp
なぜマルチプラットフォーム対応の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問題
(例)
#nifclounge #glassfish_jp
サーバサイドでの選び⽅ (いきなり結論)
1. 製品にJDKサポートが含まれていれば、そちらを最優先
- WebLogic Server → Oracle JDK
- JBoss EAP → Red Hat OpenJDK
- Payara → Azul Zulu
- WebSphere/Liberty → IBM SDK Java Technology Edition
- Interstage → FJVM
2. プラットフォームにJDKサポートが含まれていれば、そちらを利⽤
- AWS (Amazon Linux) → Amazon Corretto
- MS Azure → Azul Zulu
- OpenShift/RHEL → Red Hat OpenJDK
- Oracle Cloud → Oracle JDK
#nifclounge #glassfish_jp
現実的にはJDKサポートが含まれていない製品の利⽤が多数
#nifclounge #glassfish_jp
『2019年開発者エコシステムの状態インフォグラフィック』 - Java
https://www.jetbrains.com/ja-jp/lp/devecosystem-2019/java/
⼀番困るのは、Tomcat/Spring Framework + Windows環境︖
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
#nifclounge #glassfish_jp
その前に: 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の無償版はなくならないぞ︕」』
https://togetter.com/li/1239234
#nifclounge #glassfish_jp
⽇本各地の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 さん
#nifclounge #glassfish_jp
[参考] GlassFishユーザー会での昨年の取り組み
#nifclounge #glassfish_jp
https://togetter.com/li/1268269
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
#nifclounge #glassfish_jp
OpenJDKの歴史
• 最初に開発中のJDK 7がOSS化 (Sun時代)
• 開発途中のOpenJDK 7からOpenJDK 6が派⽣
• JDK 7からはコードベースが OpenJDK に⼀本化
『アプリケーション実⾏基盤としてのOpenJDKの評価』
https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf
実際はその後
Oracle JDKとして
リリース
#nifclounge #glassfish_jp
JDKディストリビューションの歴史: 前編
• 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にも対応
#nifclounge #glassfish_jp
時代の変化
進化への追従
セキュリティ対応
の重要性
クラウドやコンテナ
環境の台頭
#nifclounge #glassfish_jp
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)
#nifclounge #glassfish_jp
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
#nifclounge #glassfish_jp
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/
#nifclounge #glassfish_jp
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⾔語、ライブラリ、フレームワーク、ツールなどに影響
#nifclounge #glassfish_jp
Java EE/Jakarta EE環境では、JEP 320が⼤きく影響
#nifclounge #glassfish_jp
https://www.coppermine.jp/note/2018/12/nightmare-of-jep320/
『JEP 320: Remove the Java EE and CORBA Modules』 http://openjdk.java.net/jeps/320
※JBoss EAP/WildFlyは独⾃のモジュールクラスローダーを利⽤するため、
ほぼ影響を受けず、JDK 11に早めに対応済み
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)以降にも適⽤
#nifclounge #glassfish_jp
OpenJDKを中⼼として各JDKが競う時代に
ソースコード
複数のディストリビューター
JDKディストリビューション• 商⽤機能を寄贈
• その他固有機能を削除/OSS化
コミュニティ・プロジェクト
#nifclounge #glassfish_jp
JDKディストリビューションの歴史: 後編
• JDK 9リリース〜実質的に初のLTSとなる11.0.3登場 (1年7ヶ⽉)
- 既存3ベンダーを含む計7つのディストリビューターで戦国時代に突⼊(?)
JDK 9
2017-09
JDK 10
2018-03
JDK 12
2019-03
2018-04
BellSoft Liberica JDK
10 for Raspberry Pi
Oracle JDK/JRE 8
Public Updates終了
2019-01
JDK 11 (LTS)
2018-09
2019-10(予定)
8u231/232
11.0.5
13.0.1
2018-05
AdoptOpenJDK
8u172
2018-03
SapMachine 10
2019-02
Amazon Corretto
8u202
Oracle JDK/OpenJDK
8u212, 11.0.3 (LTS)
2019-04
Oracle JDK/JRE 8
Public Updates 延⻑発表
2017-10
※各ディストリビューションの
正式と⾒られるリリース年⽉
• Red Hat OpenJDK
Windows版サポート発表
• Azul ZuluFXリリース
2018-12
#nifclounge #glassfish_jp
JDK 13
2019-09
2018-11
Amazon Corretto
8u192 (Preview)
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
#nifclounge #glassfish_jp
マルチベンダーによる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%)
#nifclounge #glassfish_jp
マルチベンダーによる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%)
#nifclounge #glassfish_jp
マルチベンダーによるOpenJDKへの貢献/投資 (JDK 13GA)
『The arrival of Java 13!』
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13
#nifclounge #glassfish_jp
『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%)
マルチベンダーによる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
#nifclounge #glassfish_jp
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
マルチベンダーによる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
#nifclounge #glassfish_jp
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%)
マルチベンダーによる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
#nifclounge #glassfish_jp
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
#nifclounge #glassfish_jp
改元対応でのバックポート例
[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版で確認可)
#nifclounge #glassfish_jp
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などを通じて状況も明らかなので分断を招く訳ではない
また、JDKディストリビューション間でも独⾃バックポートによる差異は元々ある
#nifclounge #glassfish_jp
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に寄贈
#nifclounge #glassfish_jp
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
#nifclounge #glassfish_jp
その前に: 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_122 さん
#nifclounge #glassfish_jp
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ライセンスの変更に関するまとめ』
• ⽇本語を含めて情報量が最も豊富
#nifclounge #glassfish_jp
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)
#nifclounge #glassfish_jp
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終了後に主導
『Red HatのOpenJDK』by @nagetsum さん
• RHEL/CentOSで豊富な実績を持ち、従来はIcedTeaで機能拡張
• Windows版OpenJDKも正式サポート (例: IcedTea-Web)
#nifclounge #glassfish_jp
Azul Zulu
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Zulu user documentation
リリースノート Zulu Community Release Notes
ライフサイクル Azul Product Support Lifecycle
Zulu Community Roadmap
動作環境 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-community/ *Zulu Community版は認証不要
ライセンス GPLv2 + Classpath Exception
• JDK/JVM専業ベンダーで、異なるJVMであるAzul Zingを持つ
『Azul SystemsのOpenJDK』by @hkitamura7 さん
• Microsoft Azureで以前から利⽤され、商⽤のZulu Enterprise相当を提供
• 以前は素のOpenJDKビルドに近かったが、最近は機能拡張やDocker対応を重視
#nifclounge #glassfish_jp
SapMachine
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント https://github.com/SAP/SapMachine/wiki
リリースノート (⾒当たらず) * 基本はOracle OpenJDKやAdoptOpenJDKと同じはず
ライフサイクル Security Updates, Maintenance and Support
動作環境 Certification and Java Compatibility
動向把握 Twitter @SweetSapMachine
GitHub https://github.com/SAP/SapMachine
ダウンロード https://sap.github.io/SapMachine/ *認証不要(GitHubからダウンロード)
ライセンス GPLv2 + Classpath Exception
• アーリーアクセス(EA)版を含めた最新リリースへの追従 (JDK8は未対応)
• サーバーサイドで実⾏するうえでの診断機能の強化
• 元々モニタリングに強い SAP JVM を別に持つ
#nifclounge #glassfish_jp
BellSoft Liberica JDK
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント 各リリースのダウンロードページから [installation guide]参照
リリースノート 各リリースのダウンロードページから [Release Notes]参照
* 修正内容はOracle JDKのリリースノートにリンク
ライフサイクル https://support.bell-sw.com/support
動作環境 リリースノート参照
動向把握 Twitter @bellsoftware
Blog https://bell-sw.com/blog/
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との提携?(ビルド番号などから推測)
#nifclounge #glassfish_jp
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, MS Azure, Azul Systems, Pivotal, Red Hat, AWS, etc.)
• TCK/JCKを通せていないが、独⾃のテストスイートで対応
#nifclounge #glassfish_jp
Amazon Corretto
⼀般向け情報 種類・名称 参照先
導⼊・運⽤ ドキュメント Amazon Corretto Documentation
リリースノート 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 AWS Java Development | AWS Open Source Blog
GitHub https://github.com/corretto/
ダウンロード https://aws.amazon.com/corretto/ *認証不要、英語に切り替えないと古いモジュールが⾒える場合がある
ライセンス GPLv2 + Classpath Exception
• AWSおよびJava Fatherの強⼒なネームバリュー
• ドキュメントに⼒を⼊れている (⽇本語翻訳などもあるが遅れる)
• 独⾃バックポートありで、ダウンストリーム(LTS)に注⼒
#nifclounge #glassfish_jp
その他注⽬しておきたい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独⾃機能
『OpenJ9+OpenJDK』『OpenJ9 VMとIBM Javaについて』 by @TTakakiyo さん
- Azul Zing : Linux x64に特化し、C4 GCやFalcon JITで⾼速化をうたう
- GraalVM : Oracleが中⼼に開発する多⾔語対応VM (HotSpotだがAOTでネイティブイメージ対応)
『⼀体何モノなの? GraalVM⼊⾨編』 by @cotoc88 さん, @hhiroshell さん
直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん
#nifclounge #glassfish_jp
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
#nifclounge #glassfish_jp
Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ)
重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努⼒はされている
#nifclounge #glassfish_jp
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⽉より前のアンケートと想定される
#nifclounge #glassfish_jp
開発者エコシステムアンケート (グローバル)
『2019年開発者エコシステムの状態インフォグラフィック』
https://www.jetbrains.com/ja-jp/lp/devecosystem-2019/
#nifclounge #glassfish_jp
JVM⾔語利⽤者向け簡易アンケート (⽇本)
『 (2019年4⽉時点) JVM⾔語を使う⽅がどのJDK/JVMを使うか︖アンケートと考察まとめ』
https://togetter.com/li/1340853
Q1. 商⽤環境でScala, Kotlin, Clojure, Groovy
などのJVM⾔語を使う⽅はJDK/JREは何を利⽤
しますか︖
Q2. 商⽤環境でJVM⾔語を使う⽅はJDK/JVM
バージョンとして何をメインで使いますか︖
︖
#nifclounge #glassfish_jp
Java/JVM⾔語利⽤者向けアンケート (⽇本)
『 (2019年7⽉時点) Java/JVM⾔語を商⽤で使っている⽅向けのアンケートと考察まとめ』
https://togetter.com/li/1376545
Q1. 回答者の⽴場 Q2. メインで利⽤するJDKバージョン
#nifclounge #glassfish_jp
Q3. メインで利⽤するJDKの種類
Q4. どこでJDK/JVMを実⾏するか Q5. JDK/JVMの商⽤サポートの必要性
判断軸
• サポート
- アップデート提供期間
- 商⽤(技術)サポートの度合い
- 関連製品との動作保証
• 使いやすさ
- インストーラ (特にWindowsクライアント)
- 開発環境
- コンテナ対応
- 知名度
• どこで運⽤するか
- サーバー (クラウド, オンプレミス)
- クライアント
- コンテナ
- 組み込み
#nifclounge #glassfish_jp
[参考] 判断軸による⽐較(例) – サポート
ディストリビューション
8 (LTS)
EOL
11 (LTS)
EOL
13 EOL
(non-LTS)
商⽤(技術)
サポート
関連製品の
動作保証
備考
Oracle JDK 2025-03 2026-09 2020-03 多⾔語 S→︖ 既存では強いが今後不明
Oracle OpenJDK - 2019-03 2020-03 - B 追従できる環境は限定
Red Hat OpenJDK 2023-06 2024-10 - ⽇本語,英語 B→︖ Windows対応で増える︖
Azul Zulu 2026-03 2027-09 2023-05 英語 A→︖ 奇数リリースで商⽤はMTS
SapMachine - 2022-09 2020-03 - ︖ SAP製品内に限定︖
BellSoft Liberica JDK 2026-01 2027-03 2020-03 英語 ︖ 知名度はまだ低い
AdoptOpenJDK 2023-09 2022-09 2020-03 多⾔語 *IBM B 利⽤増加したがTCKが難点
Amazon Corretto 2023-06 2024-08 - - B ⼀定のシェア確保
最低期間なので、今後延⻑される可能性は⼤いにあり
• 商⽤サポートがあるJDKは、そのEOLを記載
• Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSのアップデートに依存
• 動作保証については、以前からのJDKがシェア・提携関係的に強そうだが、将来は不明
#nifclounge #glassfish_jp
[参考] 判断軸による⽐較(例) – 使いやすさ
ディストリビューション
インストーラ SDKMAN
& Scoop
コンテナ
(Docker)
知名度 備考
8 11
Oracle JDK S A B B S
Docker Storeのイメージは古い
(Oracle Container Registryも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とも各種環境に注⼒
ZuluFXコミュニティ版にはあまり⼒を⼊れていない
SapMachine - A A S - Docker公式イメージもあり (ベースOSはUbuntu)
BellSoft Liberica JDK A S A A - 現状AlpineのDockerイメージは中途半端
AdoptOpenJDK B A S S S IDEバンドルも含めて⼀通り利⽤可能
Amazon Corretto A S A A A
DockerのベースOSはAmazon Linux2のみ
(Alpine対応は保留されている)
• JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価
• JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬
• 知名度は過去に実施したアンケートなどから判断
#nifclounge #glassfish_jp
[参考] 判断軸による⽐較(例) -どこで運⽤するか
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
Oracle JDK OCI A S B A
クライアント⽤のJava Web
Start (アプレットは⾮推奨)
Oracle OpenJDK (any) A - A - 最新版はコンテナに適す
Red Hat OpenJDK OpenShift A A B -
IcedTea-Web for Windows
正式サポート予定
Azul Zulu Azure A B S A OpenJFXバンドル版や
IcedTea-Webも使われる︖
SapMachine (any) A - S - 基本はサーバ環境⽤途
BellSoft Liberica JDK (any) A A A A JavaFX/OpenJFXバンドル
AdoptOpenJDK (any) A A S A
IcedTea-Web for Windows
バンドル(オプション)
Amazon Corretto AWS A - A - 8のみOpenJFXバンドルだが
古いのとWebkit周りで難あり
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
#nifclounge #glassfish_jp
コストをどう考えるか
• 環境・状況次第で⼤きく変わる (⾃社開発⽤途や個⼈利⽤は無償がほとんど)
- Oracle JDK
• Oracle Cloud Infrastructure(OCI)やOracle製品で使う場合、基本的には追加費⽤なし
- Red Hat OpenJDK
• RHEL/UBIやRed Hat Middleware製品とともに使う場合は追加費⽤なし
- その他のJDK
• 利⽤は無償が多いが、商⽤(技術)サポートは有償
• ITライフサイクルを通じて考える
- 調達・購買コストだけではない
- 開発〜運⽤時含めトラブル時など対応コストも考慮
- バランスの⾒極めや何かしらのトレードオフは必要
企画・
設計
調達・
購買
開発・
構築
導⼊・
移⾏
保守・
運⽤
ITライフサイクル
および継続的改善
#nifclounge #glassfish_jp
OpenJDKソムリエ的 JDKオススメMap(超主観)
サーバーサイド
クライアントサイド
無
償
ア
プ
デ
ト
有
償
サ
ポ
ト
#nifclounge #glassfish_jp
まとめ
• 最適なJDKは環境・状況に応じて異なる
- 時代の変化にどれだけ追従していくか
• セキュリティやライフサイクルの考慮
• サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み
- サポートや動作保証をどう捉えるか
• 利⽤するミドルウェアやライブラリ、JVM⾔語など
• 商⽤サポートの利⽤や、法改正の影響を考慮
- どこで利⽤するか
• 開発環境と運⽤環境のJDK種類・バージョンの統⼀
• クラウド、オンプレミス、クライアント、コンテナ、組み込み
#nifclounge #glassfish_jp
[再掲] サーバサイドでの選び⽅
1. 製品にJDKサポートが含まれていれば、そちらを最優先
- WebLogic Server → Oracle JDK
- JBoss EAP → Red Hat OpenJDK
- Payara → Azul Zulu
- WebSphere/Liberty → IBM SDK Java Technology Edition
- Interstage → FJVM
2. プラットフォームにJDKサポートが含まれていれば、そちらを利⽤
- AWS (Amazon Linux) → Amazon Corretto
- MS Azure → Azul Zulu
- OpenShift/RHEL → Red Hat OpenJDK
- Oracle Cloud → Oracle JDK
#nifclounge #glassfish_jp
Java EE/Jakarta EEを利⽤すれば、
JDKの選択には困らないぞ︕
ご清聴ありがとうございました
本セッションや資料は、Java関連コミュニティの⽅々や関係者各位も含め、
多くの皆様のご協⼒によって⽣まれたものです。改めて感謝を申し上げます。
#nifclounge #glassfish_jp

More Related Content

What's hot

Java によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてJava によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてShigeru Tatsuta
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~Shinji Takao
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Norito Agetsuma
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢Naoyuki Yamada
 
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーションssuser070fa9
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 

What's hot (20)

Quarkus入門
Quarkus入門Quarkus入門
Quarkus入門
 
Java によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けてJava によるクラウドネイティブ の実現に向けて
Java によるクラウドネイティブ の実現に向けて
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 

Similar to JDKの選択肢とサーバーサイドでの選び方

OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoTakahiro YAMADA
 
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019Takashi Ito
 
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209オラクルエンジニア通信
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るオラクルエンジニア通信
 
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイド
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイドOracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイド
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイドオラクルエンジニア通信
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Chihiro Ito
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用オラクルエンジニア通信
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 

Similar to JDKの選択肢とサーバーサイドでの選び方 (20)

OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
 
20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai
 
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
 
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
 
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島
 
JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイド
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイドOracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイド
Oracle Data Integrator R12.2.1.1 Studio及びRepositoryセットアップガイド
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)
 

Recently uploaded

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

JDKの選択肢とサーバーサイドでの選び方

  • 1. JDKの選択肢とサーバーサイドでの選び⽅ - How to choose JDK for server-side apps - Takahiro YAMADA 2019-10-04 #nifclounge #glassfish_jp
  • 2. ⾃⼰紹介 • CTCテクノロジー所属: マルチベンダーのミドルウェア技術サポート - Oracle Fusion Middleware - Red Hat JBoss Middleware - その他 Java を⼀部利⽤するミドルウェア製品 • コミュニティ - Twitter: @yamadamn - 元: Oracle ACE (Middleware) - 現在: ⽇本GlassFishユーザー会 監事 - 本⽇: OpenJDK警察 OpenJDKソムリエ #nifclounge #glassfish_jp
  • 3. 免責事項 • Oracle と Java は、Oracle Corporation およびその⼦会社・関連会社 の⽶国およびその他の国における登録商標です。⽂中の社名・商品名 などは、各社の商標または登録商標である場合があります。 • 発表する内容は個⼈の⾒解であり、所属する組織や団体の公式な⾒解 ではありません。 • 本資料に記載している内容は2019年10⽉頭時点の情報に基づきます。 ※2019年7⽉に開催した『これからのJDK 何を選ぶ︖どう選ぶ︖』のセッション https://togetter.com/li/1373467 をベースとして、修正を加えています。 #nifclounge #glassfish_jp
  • 4. 本⽇メインで紹介するJDK • Oracle JDK • Oracle OpenJDK • Red Hat OpenJDK • Azul Zulu • SapMachine • BellSoft Liberica JDK • AdoptOpenJDK with HotSpot • Amazon Corretto #nifclounge #glassfish_jp
  • 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問題 (例) #nifclounge #glassfish_jp
  • 6. サーバサイドでの選び⽅ (いきなり結論) 1. 製品にJDKサポートが含まれていれば、そちらを最優先 - WebLogic Server → Oracle JDK - JBoss EAP → Red Hat OpenJDK - Payara → Azul Zulu - WebSphere/Liberty → IBM SDK Java Technology Edition - Interstage → FJVM 2. プラットフォームにJDKサポートが含まれていれば、そちらを利⽤ - AWS (Amazon Linux) → Amazon Corretto - MS Azure → Azul Zulu - OpenShift/RHEL → Red Hat OpenJDK - Oracle Cloud → Oracle JDK #nifclounge #glassfish_jp
  • 7. 現実的にはJDKサポートが含まれていない製品の利⽤が多数 #nifclounge #glassfish_jp 『2019年開発者エコシステムの状態インフォグラフィック』 - Java https://www.jetbrains.com/ja-jp/lp/devecosystem-2019/java/ ⼀番困るのは、Tomcat/Spring Framework + Windows環境︖
  • 8. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ #nifclounge #glassfish_jp
  • 9. その前に: 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の無償版はなくならないぞ︕」』 https://togetter.com/li/1239234 #nifclounge #glassfish_jp
  • 10. ⽇本各地の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 さん #nifclounge #glassfish_jp
  • 12. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ #nifclounge #glassfish_jp
  • 13. OpenJDKの歴史 • 最初に開発中のJDK 7がOSS化 (Sun時代) • 開発途中のOpenJDK 7からOpenJDK 6が派⽣ • JDK 7からはコードベースが OpenJDK に⼀本化 『アプリケーション実⾏基盤としてのOpenJDKの評価』 https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf 実際はその後 Oracle JDKとして リリース #nifclounge #glassfish_jp
  • 14. JDKディストリビューションの歴史: 前編 • 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にも対応 #nifclounge #glassfish_jp
  • 16. 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) #nifclounge #glassfish_jp
  • 17. 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 #nifclounge #glassfish_jp
  • 18. 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/ #nifclounge #glassfish_jp
  • 19. 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⾔語、ライブラリ、フレームワーク、ツールなどに影響 #nifclounge #glassfish_jp
  • 20. Java EE/Jakarta EE環境では、JEP 320が⼤きく影響 #nifclounge #glassfish_jp https://www.coppermine.jp/note/2018/12/nightmare-of-jep320/ 『JEP 320: Remove the Java EE and CORBA Modules』 http://openjdk.java.net/jeps/320 ※JBoss EAP/WildFlyは独⾃のモジュールクラスローダーを利⽤するため、 ほぼ影響を受けず、JDK 11に早めに対応済み
  • 21. 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)以降にも適⽤ #nifclounge #glassfish_jp
  • 23. JDKディストリビューションの歴史: 後編 • JDK 9リリース〜実質的に初のLTSとなる11.0.3登場 (1年7ヶ⽉) - 既存3ベンダーを含む計7つのディストリビューターで戦国時代に突⼊(?) JDK 9 2017-09 JDK 10 2018-03 JDK 12 2019-03 2018-04 BellSoft Liberica JDK 10 for Raspberry Pi Oracle JDK/JRE 8 Public Updates終了 2019-01 JDK 11 (LTS) 2018-09 2019-10(予定) 8u231/232 11.0.5 13.0.1 2018-05 AdoptOpenJDK 8u172 2018-03 SapMachine 10 2019-02 Amazon Corretto 8u202 Oracle JDK/OpenJDK 8u212, 11.0.3 (LTS) 2019-04 Oracle JDK/JRE 8 Public Updates 延⻑発表 2017-10 ※各ディストリビューションの 正式と⾒られるリリース年⽉ • Red Hat OpenJDK Windows版サポート発表 • Azul ZuluFXリリース 2018-12 #nifclounge #glassfish_jp JDK 13 2019-09 2018-11 Amazon Corretto 8u192 (Preview)
  • 24. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ #nifclounge #glassfish_jp
  • 25. マルチベンダーによる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%) #nifclounge #glassfish_jp
  • 26. マルチベンダーによる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%) #nifclounge #glassfish_jp
  • 27. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 13GA) 『The arrival of Java 13!』 https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13 #nifclounge #glassfish_jp 『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%)
  • 28. マルチベンダーによる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 #nifclounge #glassfish_jp 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
  • 29. マルチベンダーによる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 #nifclounge #glassfish_jp 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%)
  • 30. マルチベンダーによる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 #nifclounge #glassfish_jp
  • 31. 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 #nifclounge #glassfish_jp
  • 32. 改元対応でのバックポート例 [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版で確認可) #nifclounge #glassfish_jp
  • 33. 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などを通じて状況も明らかなので分断を招く訳ではない また、JDKディストリビューション間でも独⾃バックポートによる差異は元々ある #nifclounge #glassfish_jp
  • 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エコシステムを安定的に維持する狙いも⼤きいと⾒られる 『各JDKのビジネスモデルに関するまとめ』 https://togetter.com/li/1404489 旧BEA社のJRockit JDK機能を統合 商⽤機能はすべてOpenJDKに寄贈 素のOpenJDKに⾜りない機能は IcedTeaで⼀部補完 Web Start代替のIcedTea-Webは AdoptOpenJDK配下にリポジトリ移管 Shenandoah GCなどをOpenJDKに寄贈 #nifclounge #glassfish_jp
  • 35. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ #nifclounge #glassfish_jp
  • 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_122 さん #nifclounge #glassfish_jp
  • 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ライセンスの変更に関するまとめ』 • ⽇本語を含めて情報量が最も豊富 #nifclounge #glassfish_jp
  • 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) #nifclounge #glassfish_jp
  • 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終了後に主導 『Red HatのOpenJDK』by @nagetsum さん • RHEL/CentOSで豊富な実績を持ち、従来はIcedTeaで機能拡張 • Windows版OpenJDKも正式サポート (例: IcedTea-Web) #nifclounge #glassfish_jp
  • 40. Azul Zulu ⼀般向け情報 種類・名称 参照先 導⼊・運⽤ ドキュメント Zulu user documentation リリースノート Zulu Community Release Notes ライフサイクル Azul Product Support Lifecycle Zulu Community Roadmap 動作環境 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-community/ *Zulu Community版は認証不要 ライセンス GPLv2 + Classpath Exception • JDK/JVM専業ベンダーで、異なるJVMであるAzul Zingを持つ 『Azul SystemsのOpenJDK』by @hkitamura7 さん • Microsoft Azureで以前から利⽤され、商⽤のZulu Enterprise相当を提供 • 以前は素のOpenJDKビルドに近かったが、最近は機能拡張やDocker対応を重視 #nifclounge #glassfish_jp
  • 41. SapMachine ⼀般向け情報 種類・名称 参照先 導⼊・運⽤ ドキュメント https://github.com/SAP/SapMachine/wiki リリースノート (⾒当たらず) * 基本はOracle OpenJDKやAdoptOpenJDKと同じはず ライフサイクル Security Updates, Maintenance and Support 動作環境 Certification and Java Compatibility 動向把握 Twitter @SweetSapMachine GitHub https://github.com/SAP/SapMachine ダウンロード https://sap.github.io/SapMachine/ *認証不要(GitHubからダウンロード) ライセンス GPLv2 + Classpath Exception • アーリーアクセス(EA)版を含めた最新リリースへの追従 (JDK8は未対応) • サーバーサイドで実⾏するうえでの診断機能の強化 • 元々モニタリングに強い SAP JVM を別に持つ #nifclounge #glassfish_jp
  • 42. BellSoft Liberica JDK ⼀般向け情報 種類・名称 参照先 導⼊・運⽤ ドキュメント 各リリースのダウンロードページから [installation guide]参照 リリースノート 各リリースのダウンロードページから [Release Notes]参照 * 修正内容はOracle JDKのリリースノートにリンク ライフサイクル https://support.bell-sw.com/support 動作環境 リリースノート参照 動向把握 Twitter @bellsoftware Blog https://bell-sw.com/blog/ 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との提携?(ビルド番号などから推測) #nifclounge #glassfish_jp
  • 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, MS Azure, Azul Systems, Pivotal, Red Hat, AWS, etc.) • TCK/JCKを通せていないが、独⾃のテストスイートで対応 #nifclounge #glassfish_jp
  • 44. Amazon Corretto ⼀般向け情報 種類・名称 参照先 導⼊・運⽤ ドキュメント Amazon Corretto Documentation リリースノート 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 AWS Java Development | AWS Open Source Blog GitHub https://github.com/corretto/ ダウンロード https://aws.amazon.com/corretto/ *認証不要、英語に切り替えないと古いモジュールが⾒える場合がある ライセンス GPLv2 + Classpath Exception • AWSおよびJava Fatherの強⼒なネームバリュー • ドキュメントに⼒を⼊れている (⽇本語翻訳などもあるが遅れる) • 独⾃バックポートありで、ダウンストリーム(LTS)に注⼒ #nifclounge #glassfish_jp
  • 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独⾃機能 『OpenJ9+OpenJDK』『OpenJ9 VMとIBM Javaについて』 by @TTakakiyo さん - Azul Zing : Linux x64に特化し、C4 GCやFalcon JITで⾼速化をうたう - GraalVM : Oracleが中⼼に開発する多⾔語対応VM (HotSpotだがAOTでネイティブイメージ対応) 『⼀体何モノなの? GraalVM⼊⾨編』 by @cotoc88 さん, @hhiroshell さん 直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん #nifclounge #glassfish_jp
  • 46. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ #nifclounge #glassfish_jp
  • 47. Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ) 重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努⼒はされている #nifclounge #glassfish_jp
  • 48. 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⽉より前のアンケートと想定される #nifclounge #glassfish_jp
  • 50. JVM⾔語利⽤者向け簡易アンケート (⽇本) 『 (2019年4⽉時点) JVM⾔語を使う⽅がどのJDK/JVMを使うか︖アンケートと考察まとめ』 https://togetter.com/li/1340853 Q1. 商⽤環境でScala, Kotlin, Clojure, Groovy などのJVM⾔語を使う⽅はJDK/JREは何を利⽤ しますか︖ Q2. 商⽤環境でJVM⾔語を使う⽅はJDK/JVM バージョンとして何をメインで使いますか︖ ︖ #nifclounge #glassfish_jp
  • 51. Java/JVM⾔語利⽤者向けアンケート (⽇本) 『 (2019年7⽉時点) Java/JVM⾔語を商⽤で使っている⽅向けのアンケートと考察まとめ』 https://togetter.com/li/1376545 Q1. 回答者の⽴場 Q2. メインで利⽤するJDKバージョン #nifclounge #glassfish_jp Q3. メインで利⽤するJDKの種類 Q4. どこでJDK/JVMを実⾏するか Q5. JDK/JVMの商⽤サポートの必要性
  • 52. 判断軸 • サポート - アップデート提供期間 - 商⽤(技術)サポートの度合い - 関連製品との動作保証 • 使いやすさ - インストーラ (特にWindowsクライアント) - 開発環境 - コンテナ対応 - 知名度 • どこで運⽤するか - サーバー (クラウド, オンプレミス) - クライアント - コンテナ - 組み込み #nifclounge #glassfish_jp
  • 53. [参考] 判断軸による⽐較(例) – サポート ディストリビューション 8 (LTS) EOL 11 (LTS) EOL 13 EOL (non-LTS) 商⽤(技術) サポート 関連製品の 動作保証 備考 Oracle JDK 2025-03 2026-09 2020-03 多⾔語 S→︖ 既存では強いが今後不明 Oracle OpenJDK - 2019-03 2020-03 - B 追従できる環境は限定 Red Hat OpenJDK 2023-06 2024-10 - ⽇本語,英語 B→︖ Windows対応で増える︖ Azul Zulu 2026-03 2027-09 2023-05 英語 A→︖ 奇数リリースで商⽤はMTS SapMachine - 2022-09 2020-03 - ︖ SAP製品内に限定︖ BellSoft Liberica JDK 2026-01 2027-03 2020-03 英語 ︖ 知名度はまだ低い AdoptOpenJDK 2023-09 2022-09 2020-03 多⾔語 *IBM B 利⽤増加したがTCKが難点 Amazon Corretto 2023-06 2024-08 - - B ⼀定のシェア確保 最低期間なので、今後延⻑される可能性は⼤いにあり • 商⽤サポートがあるJDKは、そのEOLを記載 • Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSのアップデートに依存 • 動作保証については、以前からのJDKがシェア・提携関係的に強そうだが、将来は不明 #nifclounge #glassfish_jp
  • 54. [参考] 判断軸による⽐較(例) – 使いやすさ ディストリビューション インストーラ SDKMAN & Scoop コンテナ (Docker) 知名度 備考 8 11 Oracle JDK S A B B S Docker Storeのイメージは古い (Oracle Container Registryも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とも各種環境に注⼒ ZuluFXコミュニティ版にはあまり⼒を⼊れていない SapMachine - A A S - Docker公式イメージもあり (ベースOSはUbuntu) BellSoft Liberica JDK A S A A - 現状AlpineのDockerイメージは中途半端 AdoptOpenJDK B A S S S IDEバンドルも含めて⼀通り利⽤可能 Amazon Corretto A S A A A DockerのベースOSはAmazon Linux2のみ (Alpine対応は保留されている) • JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価 • JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬ • 知名度は過去に実施したアンケートなどから判断 #nifclounge #glassfish_jp
  • 55. [参考] 判断軸による⽐較(例) -どこで運⽤するか ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考 Oracle JDK OCI A S B A クライアント⽤のJava Web Start (アプレットは⾮推奨) Oracle OpenJDK (any) A - A - 最新版はコンテナに適す Red Hat OpenJDK OpenShift A A B - IcedTea-Web for Windows 正式サポート予定 Azul Zulu Azure A B S A OpenJFXバンドル版や IcedTea-Webも使われる︖ SapMachine (any) A - S - 基本はサーバ環境⽤途 BellSoft Liberica JDK (any) A A A A JavaFX/OpenJFXバンドル AdoptOpenJDK (any) A A S A IcedTea-Web for Windows バンドル(オプション) Amazon Corretto AWS A - A - 8のみOpenJFXバンドルだが 古いのとWebkit周りで難あり • オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第) • 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か #nifclounge #glassfish_jp
  • 56. コストをどう考えるか • 環境・状況次第で⼤きく変わる (⾃社開発⽤途や個⼈利⽤は無償がほとんど) - Oracle JDK • Oracle Cloud Infrastructure(OCI)やOracle製品で使う場合、基本的には追加費⽤なし - Red Hat OpenJDK • RHEL/UBIやRed Hat Middleware製品とともに使う場合は追加費⽤なし - その他のJDK • 利⽤は無償が多いが、商⽤(技術)サポートは有償 • ITライフサイクルを通じて考える - 調達・購買コストだけではない - 開発〜運⽤時含めトラブル時など対応コストも考慮 - バランスの⾒極めや何かしらのトレードオフは必要 企画・ 設計 調達・ 購買 開発・ 構築 導⼊・ 移⾏ 保守・ 運⽤ ITライフサイクル および継続的改善 #nifclounge #glassfish_jp
  • 58. まとめ • 最適なJDKは環境・状況に応じて異なる - 時代の変化にどれだけ追従していくか • セキュリティやライフサイクルの考慮 • サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み - サポートや動作保証をどう捉えるか • 利⽤するミドルウェアやライブラリ、JVM⾔語など • 商⽤サポートの利⽤や、法改正の影響を考慮 - どこで利⽤するか • 開発環境と運⽤環境のJDK種類・バージョンの統⼀ • クラウド、オンプレミス、クライアント、コンテナ、組み込み #nifclounge #glassfish_jp
  • 59. [再掲] サーバサイドでの選び⽅ 1. 製品にJDKサポートが含まれていれば、そちらを最優先 - WebLogic Server → Oracle JDK - JBoss EAP → Red Hat OpenJDK - Payara → Azul Zulu - WebSphere/Liberty → IBM SDK Java Technology Edition - Interstage → FJVM 2. プラットフォームにJDKサポートが含まれていれば、そちらを利⽤ - AWS (Amazon Linux) → Amazon Corretto - MS Azure → Azul Zulu - OpenShift/RHEL → Red Hat OpenJDK - Oracle Cloud → Oracle JDK #nifclounge #glassfish_jp Java EE/Jakarta EEを利⽤すれば、 JDKの選択には困らないぞ︕