SlideShare a Scribd company logo
1 of 67
Download to read offline
これからのJDK 何を選ぶ︖どう選ぶ︖
- How to choose the best OpenJDK distribution – v1.2
Takahiro YAMADA
2019-11-01
⾃⼰紹介
• CTCテクノロジー所属: マルチベンダーのミドルウェア技術サポート
- Oracle Fusion Middleware
- Red Hat JBoss Middleware
- その他 Java を⼀部利⽤するミドルウェア製品
• コミュニティ
- Twitter: @yamadamn
- 元: Oracle ACE (Middleware)
- 現在: ⽇本GlassFishユーザー会 監事
- 本⽇: OpenJDK警察 OpenJDKソムリエ
2
免責事項
• Oracle と Java は、Oracle Corporation およびその⼦会社・関連会社
の⽶国およびその他の国における登録商標です。⽂中の社名・商品名
などは、各社の商標または登録商標である場合があります。
• 発表する内容は個⼈の⾒解であり、所属する組織や団体の公式な⾒解
ではありません。
• 本資料に記載している内容は2019年10⽉末時点の情報に基づきます。
※2019年7⽉に開催した『これからのJDK 何を選ぶ︖どう選ぶ︖』のセッション
https://togetter.com/li/1373467 をベースとして、修正を加えています。
3
本⽇メインで紹介するJDK
• Oracle JDK
• Oracle OpenJDK
• Red Hat OpenJDK
• Azul Zulu
• SapMachine
• BellSoft Liberica JDK
• AdoptOpenJDK with HotSpot
• Amazon Corretto
4
その前に: JavaとかJDKって何だっけ︖
『JDK、Oracle JDK、OpenJDK、Java SEってなに︖』by @kis さん
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問題
(例)
6
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
7
その前に: Javaが有償化されたと思っている⽅いないですよね︖
• Javaは誰のもの︖
- 「Javaはオラクルのもの︖」、「いいえ、これからもJavaコミュニティのもので
す︕」(2011年頃 by @yoshioterada さん: 現Java Champion)
• 「Java有償化」ではなく「Java⾃由化」の⽅が正しい理解
- Linuxのようなディストリビューションモデルに変更
- 現状の主流は、OpenJDK with HotSpot JVMであり、⼤きな差異はない
• 関連ツイートまとめ
- 『「Java 有償化」で誤解する⼈になるべく分かりやすく説明するためのまとめ』
https://togetter.com/li/1343743
- 『Oracle JREの商⽤無償版EOLの話をするには、政府CIOの「Javaのサポートポリシー変更等に関
する技術レポート」がオススメ』 https://togetter.com/li/1342198
- 『JJUG ナイトセミナー 「緊急特集︕ Javaの無償版はなくならないぞ︕」』
https://togetter.com/li/1239234
8
⽇本各地のJavaコミュニティでも広がる「Java is Still Free」
『Javaは今でも無償です、という話 / Java is still free』
https://speakerdeck.com/kishida/java-is-still-free by @kis さん
『Java Do #osc19do Java有償化(していない件)について』
https://speakerdeck.com/gishi_yama/java-do-number-osc19do by @gishi_yama さん
9
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
10
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として
リリース
11
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にも対応
12
時代の変化
進化への追従
セキュリティ対応
の重要性
クラウドやコンテナ
環境の台頭
13
Java 8から11で何が起こったか
『Java SE 8から11で何が起きた︖⼀気におさらいしてみよう︕ /java-se-8-to-11』
https://speakerdeck.com/miyakawataku/java-se-8-to-11 by @miyakawa_taku さん (CC BY 4.0)
14
JDKリリースモデルの変更
• LTSとnon-LTSモデル
- 近年は様々な製品が採⽤: https://en.wikipedia.org/wiki/Long-term_support
- 数年かけてのメジャーリリースではなく、半年単位の機能リリースによる継続的な変更
• 共有ランタイム(Public JRE)ではなく、カスタムJREをアプリに組込むことを推奨
- モジュール・システム (Project Jigsaw) により実現
- jlinkを使って作成し、将来的にはjpackage(旧:javapackager)を利⽤
• ライセンス変更
- 以前のSun/Oracle JDKのBCLライセンスではJRE単独の再配布が不可
• Oracle JDK: OTNLA for Oracle Java SE
• Oracle OpenJDK: GPLv2 + Classpath Exception
『JDKの新しいリリース・モデル、および提供ライセンスについて』
https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
15
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/
16
Java 8と11の⾮互換性
• Oracle JDK 11から削除された内容
- Javaプラグイン(アプレット), Java Web Start
- Public JRE+⾃動更新
- JavaFX (OpenJFXに移管)
- 32bit版バイナリ (Windows, Linux) ※Oracle JDK/JRE 9~
➡ クライアント環境に影響 (特にレガシーな環境)
• モジュール・システム(Project Jigsaw)による壁
- 内部APIに対するアクセス制限
- JAXBなどJava EE関連モジュール削除
➡ ミドルウェア、JVM⾔語、ライブラリ、フレームワーク、ツールなどに影響
17
Java 11以降はOpenJDKとOracle JDKが実質的に同⼀
• Oracleが商⽤機能をOpenJDKに寄贈 (JFR/JMC, AppCDS, ZGC)
• プロプライエタリな機能(JavaプラグインやJava Web Start)を削除
• 3rd-partyライセンスのライブラリ(フォントや描画など)をOSSベースに変更
『JDK:新しいリリース
モデル解説』
https://www.slideshare
.net/oracle4engineer/jd
k-127825124
2019年4⽉のOracle JDK 8
(8u211/8u212)以降にも適⽤
18
OpenJDKを中⼼として各JDKが競う時代に
ソースコード
複数のディストリビューター
JDKディストリビューション• 商⽤機能を寄贈
• その他固有機能を削除/OSS化
コミュニティ・プロジェクト
19
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
※各ディストリビューションの
正式と⾒られるリリース年⽉
• Red Hat OpenJDK
Windows版サポート発表
• Azul ZuluFXリリース
2018-12
JDK 13
2019-09
2018-11
Amazon Linux⽤LTS発表
Amazon Corretto
8u192 (Preview)
• Zulu Enterprise
on MS Azure発表
2018-09
延⻑発表
2018-01
Oracle JDK/JRE 8
Public Updates
終了発表
2017-10
20
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
21
マルチベンダーによるOpenJDKへの貢献/投資 (JDK 11GA)
『Building JDK 11 Together』
https://blogs.oracle.com/java-platform-group/building-jdk-11-together
Total Issue: 2,468
1. Oracle (80%)
2. SAP (7%)
3. Red Hat (5%)
4. Google (3%)
5. 個⼈ (2%)
6. BellSoft (1%)
7. IBM (1%)
22
マルチベンダーによるOpenJDKへの貢献/投資 (JDK 12GA)
『The arrival of Java 12!』
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-12
Total Issue: 1,919
1. Oracle (75%)
2. Red Hat (8%)
3. Google (6%)
4. SAP (4%)
5. 個⼈ (3%)
6. BellSoft (1%)
7. IBM (1%)
23
マルチベンダーによるOpenJDKへの貢献/投資 (JDK 13GA)
『The arrival of Java 13!』
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13
『OpenJDK Backports Monitor』
https://builds.shipilev.net/backports-monitor/
pushes-13.txt – [Distribution by email/name] から独⾃集計
* 上記図とは若⼲異なるため、JBSをもとに補正
Total Issue: 2,127
1. Oracle (68%)
2. Red Hat (11%)
3. SAP (7%)
4. 個⼈ (4%)
5. Google (3%)
24
マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212/232)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-openjdk8u212.txt, pushes-openjdk8u232.txt ※2019年7⽉の8u222は割愛
– [Distribution by email/name] から独⾃集計
Total Issue: 112
1. Red Hat (64.3%)
2. Amazon (17.9%)
3. Oracle (11.6%)
4. SAP (3.6%)
5. 個⼈ (1.8%)
6. Azul (0.9%)
従来もOracle JDKのPublic Updates終了後は、Red HatがOpenJDKの修正を主導
※OpenJDK 8u212/232であって、Oracle JDK 8u212/232ではないことに注意
Public Updates終了前はOracleが主導し、その後Oracleはプライベートリポジトリに反映
Total Issue: 81
1. Red Hat (91.4%)
2. Amazon (4.9%)
3. IBM (2.5%)
4. NTTデータ (1.2%)72
20
13
4 2
1
Issues fixed in OpenJDK 8u212
Red Hat Amazon Oracle SAP Azul
74
4 2
1
Issues fixed in OpenJDK 8u232
Red Hat Amazon IBM NTT
25
マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3/11.0.5)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.3.txt, pushes-11.0.5.txt ※ 2019年7⽉の11.0.4は割愛
– [Distribution by email/name] から独⾃集計
Total Issue: 185
1. Red Hat (44.9%)
2. SAP (31.4%)
3. Oracle (12.4%)
4. 個⼈ (3.8%)
5. Google (3.8%)
6. Amazon (2.7%)
7. BellSoft (0.5%)
8. Intel (0.5%)
※OpenJDK 11.0.3/11.0.5であって、Oracle JDK 11.0.3/11.0.5ではないことに注意
OracleはLTSリリースについて、プライベートリポジトリにのみ基本的に反映
Total Issue: 287
1. Red Hat (53.0%)
2. SAP (40.1%)
3. 個⼈ (2.4%)
4. NTTデータ (1.4%)
5. Amazon (1.0%)
6. BellSoft (0.7%)
7. Google (0.7%)
8. Azul (0.3%)
9. IBM (0.3%)
83
58
23
7
7 5
1
1
Issues fixed in OpenJDK 11.0.3
Red Hat SAP Oracle
Google Amazon BellSoft Intel
152115
7
4
3 2 2
Issues fixed in OpenJDK 11.0.5
Red Hat SAP NTT
Amazon BellSoft Google
26
マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.2)
『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/
pushes-11.0.2.txt – [Distribution by email/name] から独⾃集計
Total Issue: 92
1. Oracle (54%)
2. SAP (22%)
3. Red Hat (20%)
4. 個⼈ (2%)
5. Google (2%)
OpenJDK 11.0.2 まではOracle主導
※次の機能リリースが出る6ヵ⽉間
つまり、Oracleは最新版OpenJDKに注⼒し、
OpenJDK LTSは他のベンダーに委任
50
20
18
2 2
Issues fixed in OpenJDK 11.0.2
Oracle SAP Red Hat Google
27
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
28
改元対応でのバックポート例
[JDK-8205432] Replace the placeholder Japanese era name - Java Bug System
OpenJDKとOracle JDK
共通の修正
• 12.0.1/12.0.2
(non-LTS/最初の6ヵ⽉)
Oracle JDK 固有の修正
• 11.0.x-oracle
• 8uXXX
Red Hatが主導する
OpenJDK LTSへの修正
• 11.0.x
• openjdk8uXXX
最初に実装されるのは
開発中のリリース
• 13 (既にリリース済)
29
LTSリリースはOracle JDKとRed Hat主導のOpenJDKで差異あり
Red Hat主導の
OpenJDK LTS
• 11.0.3以降
• 8u212以降
Oracle JDK LTS
• 11.0.3以降
• 8u211/212以降
Oracle JDK/OpenJDK LTS
共通の修正
• セキュリティ脆弱性
• その他重⼤な不具合
• 影響の⼤きい修正
最新版(non-LTS含む)は原則共通であり、Java Bug Systemなど通じて状況も明らかなので分断を招く訳ではない
また、JDKディストリビューション間でも独⾃バックポートなどによる差異は元々ある
30
LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 8)
• ビルド番号≒該当バージョンでのソースコードのセットにつけるタグ
「$ java –version」での確認 (Java 9以降はAPIでも基本的に取得可能)
• 8u212 (java.runtime.version, java.vm.version システムプロパティから基本的に確認可能)
- Oracle JDK
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
- Red Hat OpenJDK
openjdk version "1.8.0_212-3-redhat"
OpenJDK Runtime Environment (build 1.8.0_212-3-redhat-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
ビルド番号: b10
ビルド番号: b04
数が⼤きいほうが多くの修正
を含んでいる訳ではない
31
[参考] 2019年7⽉以降はバージョンで識別可能 (JDK 8)
• Oracle JDK 8u221 (8u222はリリースされず)
- Critical Patch Updates (CPU) 相当
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
• その他 OpenJDK 8u222
- Patch Set Updates (PSU) 相当?
openjdk version "1.8.0_222"
OpenJDK Runtime Environment Corretto-8.222.10.1 (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM Corretto-8.222.10.1 (build 25.222-b10, mixed mode)
『JavaのリリースにはCPUとPSUの2種類があります』by @jyukutyo さん
https://www.sakatakoichi.com/entry/2015/07/22/173205
(Amazon Correttoの例だが他も基本的に同様)
32
LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 11)
• 11.0.3 (Runtime.Version クラスからも基本的に取得可能)
- Oracle JDK
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)
- Red Hat OpenJDK
openjdk version "11.0.3-redhat" 2019-04-16 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.3-redhat+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.3-redhat+7-LTS, mixed mode)
ビルド番号: 12
ビルド番号: 7
『Java 10 で変わる Java のバージョン表記』by @YujiSoftware さん
https://qiita.com/YujiSoftware/items/2c5a9117a577700ea540
33
[参考] 2019年7⽉以降はビルド番号で識別困難 (JDK 11)
• Oracle JDK 11.0.4
java version "11.0.4" 2019-07-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode)
修正数:104 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4-oracle
• その他 OpenJDK 11.0.4
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
修正数:251 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4
(AdoptOpenJDKの例だが他も基本的に同様)
OpenJDKのビルド番号
とは無関係
34
OpenJDKを利⽤したビジネスモデルの変遷例
• Oracle
- (旧Sun) Java SE for Business: ⻑期サポート
- Java SE Advanced: ⻑期サポートおよび商⽤機能を⾼付加価値として提供するライセンスモデル
- Java SE Subscription: ⽐較的安価に広く提供し、⻑期サポートするサブスクリプションモデル
• Red Hat
- Red Hat Subscription: RHEL利⽤ユーザーに⻑期アップデートを提供するサブスクリプションモデル
- OpenJDK Subscription for Windows: WindowsユーザーにもOpenJDKのサブスクリプションを提供
JDKリリースモデルの変更は、ビジネスモデル的には他のベンダー(ディストリビューター)に
負荷分散してOpenJDKエコシステムを安定的に維持する狙いも⼤きいと⾒られる
『各JDKのビジネスモデルに関するまとめ』 https://togetter.com/li/1404489
旧BEA社のJRockit JDK機能を統合
商⽤機能はすべてOpenJDKに寄贈
素のOpenJDKに⾜りない機能は
IcedTeaで⼀部補完
Web Start代替のIcedTea-Webは
AdoptOpenJDK配下にリポジトリ移管
Shenandoah GCなどをOpenJDKに寄贈
35
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
36
その前に: OpenJDK Projectの動向把握⽤の基礎情報源
種類・名称 URL ⽤途・備考
Webサイト http://openjdk.java.net/ OpenJDK開発者⽤のため少し構成が複雑
JDK Enhancement Proposal
(JEP)
http://openjdk.java.net/jeps/0 JDKバージョンごとに⼊る機能確認
2011年に策定されJSRを牽引
JDK Project http://openjdk.java.net/projects/jdk/ JDKリリース時期と含まれるJEP
OCTLA Signatories List https://openjdk.java.net/groups/conf
ormance/JckAccess/jck-access.html
Javaの正式実装を証明する技術互換キット
(TCK/JCK)にアクセスできる署名者⼀覧
Twitter @OpenJDK
メーリングリスト (ML) http://mail.openjdk.java.net/ 興味があるトピックを参照・購読・投稿
Java Bug System (JBS) https://bugs.openjdk.java.net/ JIRAによるIssueのトラッキング (Bugだけ
でなく、機能拡張や互換性確認なども含む)
ソースコード管理 http://hg.openjdk.java.net/ Mercurialにて管理
Project SkaraにてGitHubへの移⾏も検証中
https://github.com/openjdk
『JSRとJEPとJBSの⾒⽅や調べ⽅について』
https://www.slideshare.net/AyaEbata/jsrjepjbs by @aya_122 さん
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は現状認証不要)
All Java SE Downloads on MOS * 商⽤でOracle製品の契約者向け
ライセンス 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ライセンスの変更に関するまとめ』
• ⽇本語を含めて情報量が最も豊富
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)
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/
ダウンロード https://developers.redhat.com/products/openjdk/download/ * 開発者⽤Windows版で要アカウント認証
https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=core.service.openjdk&downloa
dType=distributions * 商⽤でJBoss製品などのサブスクリプション必要, 別途RHEL⽤のyumリポジトリあり
ライセンス GPLv2 + Classpath Exception
• Oracleに次ぐOpenJDKの貢献者であり、以前からPublic Updates終了後に主導
『Red HatのOpenJDK』by @nagetsum さん
• RHEL/CentOSで豊富な実績を持ち、従来はIcedTeaで機能拡張
• Windows版OpenJDKも正式サポート (例: IcedTea-Web)
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)
https://www.azul.com/downloads/azure-only/zulu/ * Azure利⽤者向け
ライセンス GPLv2 + Classpath Exception
• JDK/JVM専業ベンダーで、異なるJVMであるAzul Zingを持つ
• Microsoft Azureで以前から利⽤され、商⽤のZulu Enterprise相当を提供
• 以前は素のOpenJDKビルドに近かったが、最近は機能拡張やDocker対応を重視
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 を別に持つ
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との提携?(ビルド番号などから推測)
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を通せていないが、独⾃のテストスイートで対応
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)に注⼒
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 さん
46
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
47
Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ)
重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努⼒はされている
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⽉より前のアンケートと想定される
49
開発者エコシステムアンケート (グローバル)
『2019年開発者エコシステムの状態インフォグラフィック』
https://www.jetbrains.com/ja-jp/lp/devecosystem-2019/
50
JVM⾔語利⽤者向け簡易アンケート (⽇本)
『 (2019年4⽉時点) JVM⾔語を使う⽅がどのJDK/JVMを使うか︖アンケートと考察まとめ』
https://togetter.com/li/1340853
Q1. 商⽤環境でScala, Kotlin, Clojure, Groovy
などのJVM⾔語を使う⽅はJDK/JREは何を利⽤
しますか︖
Q2. 商⽤環境でJVM⾔語を使う⽅はJDK/JVM
バージョンとして何をメインで使いますか︖
︖
51
Java/JVM⾔語利⽤者向けアンケート (⽇本)
『 (2019年7⽉時点) Java/JVM⾔語を商⽤で使っている⽅向けのアンケートと考察まとめ』
https://togetter.com/li/1376545
Q1. 回答者の⽴場 Q2. メインで利⽤するJDKバージョン Q3. メインで利⽤するJDKの種類
Q4. どこでJDK/JVMを実⾏するか Q5. JDK/JVMの商⽤サポートの必要性
52
判断軸
• サポート
- アップデート提供期間
- 商⽤(技術)サポートの度合い
- 関連製品との動作保証
• 使いやすさ
- インストーラ (特にWindowsクライアント)
- 開発環境
- コンテナ対応
- 知名度
• どこで運⽤するか
- サーバー (クラウド, オンプレミス)
- クライアント
- コンテナ
- 組み込み
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がシェア・提携関係的に強そうだが、将来は不明
54
[参考] 判断軸による⽐較(例) – 使いやすさ
ディストリビューション
インストーラ SDKMAN
& Scoop
コンテナ
(Docker)
知名度 備考
8 11
Oracle JDK S A B B S Docker対応はServer JRE 8 のみ
Oracle OpenJDK - - S A A LTSはないが最新版を利⽤可能
Red Hat OpenJDK A A - B B
Red Hat Container Catalogで利⽤
再配布⾃由なUniversal Base Image(UBI)に今後注⽬
Azul Zulu B S A S B インストーラ・Dockerなども各種環境に注⼒
SapMachine - A A A - Docker公式イメージもあり (ベースOSはUbuntu)
BellSoft Liberica JDK A S A S - AlpineのDockerイメージはかなり軽量
AdoptOpenJDK B A S S A IDEバンドルも含めて⼀通り利⽤可能
Amazon Corretto A A A A A
DockerのベースOSはAmazon Linux2のみ
(Alpine対応は保留されている)
• JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価
• JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬
• 知名度は過去に実施したアンケートなどから判断
55
[参考] 判断軸による⽐較(例) -どこで運⽤するか
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
Oracle JDK OCI A S B A
クライアント⽤のJava Web
Start (アプレットは⾮推奨)
Oracle OpenJDK (any) A - A - 最新版はコンテナに適す
Red Hat OpenJDK OpenShift A A B B
IcedTea-Web for Windows
正式サポート予定
Azul Zulu Azure A B S A OpenJFXバンドル版や
IcedTea-Webも使われる︖
SapMachine (any) A - A - 基本はサーバ環境⽤途
BellSoft Liberica JDK Yandex A A S A JavaFX/OpenJFXバンドル
AdoptOpenJDK (any) A A S A
IcedTea-Web for Windows
バンドル(オプション)
Amazon Corretto AWS A - A B 8のみOpenJFXバンドルだが
古いのとWebkit周りで難あり
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
56
コストをどう考えるか
• 環境・状況次第で⼤きく変わる (⾃社開発⽤途や個⼈利⽤は無償がほとんど)
- Oracle JDK
• Oracle Cloud Infrastructure(OCI)やOracle製品で使う場合、基本的には追加費⽤なし
- Red Hat OpenJDK
• RHEL/UBIやRed Hat Middleware製品とともに使う場合は追加費⽤なし
- その他のJDK
• 利⽤は無償が多いが、商⽤(技術)サポートは有償
• ITライフサイクルを通じて考える
- 調達・購買コストだけではない
- 開発〜運⽤時含めトラブル時など対応コストも考慮
- バランスの⾒極めや何かしらのトレードオフは必要
企画・
設計
調達・
購買
開発・
構築
導⼊・
移⾏
保守・
運⽤
ITライフサイクル
および継続的改善
57
OpenJDKソムリエ的 JDKオススメMap(超主観)
サーバーサイド
クライアントサイド
無
償
ア
Ý
プ
デ
Þ
ト
有
償
サ
ポ
Þ
ト
58
[参考] サーバサイドでの選び⽅
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/2) → Amazon Corretto
- MS Azure → Azul Zulu
- OpenShift/RHEL → Red Hat OpenJDK
- Oracle Cloud → Oracle JDK
59
[補⾜] そういえばJava EEってどうなったんだっけ︖
• Eclipse Foundationに移管され、Jakarta EE 8がリリース
• 今後「javax」ネームスペースは「jakarta」に変更予定
- Sunから引き継いだ商標や契約に基づくため仕⽅なし
• javax.* パッケージは第三者が拡張することを許容されていない
• Servlet/JSP APIを含むため、TomcatやSpring Frameworkにも影響あり
- 略称もOracleが商標を持つものが多いため変更
60
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 誰がOpenJDKを作っているか
3. 各JDKディストリビューションの特徴
4. JDKディストリビューションの選び⽅
5. OpenJDKの⽀え⽅
61
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
• 構築・運⽤担当者
- 各JDKのライフサイクルやリリース/更新スケジュールを把握する
- 動作保証に適したJDKを利⽤する (⺠法改正の影響なども考慮)
- アプリケーションに応じて適切なプラットフォーム・JDKを検討する
62
[参考] JDKの他の選び⽅(例)
• 例えば、好きなベンダー(ディストリビューター)のJDKを利⽤する
e.g. OpenJDK本体に貢献しているベンダーを応援したい
- Oracle JDK/Oracle OpenJDK
- Red Hat OpenJDK
- SapMachine
- BellSoft Liberica JDK
- IBM SDK Java Technology Edition
• ディストリビューションの応援の仕⽅の例
- まずは使ってみる
- 意⾒を伝えたり、フィードバックして改善してみる
- Oracle Java SE Desktop Subscription, IBM Runtimes for Java Desktopを個⼈購⼊してみる
63
Java/JVMエコシステムはこれまでと変わらず重要
• Javaはこれからますます進化を続ける
- 半年単位での機能リリース
- Project Panama, Valhalla, Loom
- Quarkus, Micronaut, HelidonなどGraalVMに対応したWebフレームワーク
『Introduction to GraalVM / GraalVMが照らす未来』by @jyukutyo さん
『Javaは今でも無償ですという話と最近のJava Webフレームワーク』by @kis さん
• エコシステムは強⼒で重要不可⽋
- 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で
Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273
- 『SunからOracleに変わって10年経ったけど第三者から⾒てもJavaは⼼配ない
よというポエム』https://togetter.com/li/1342209
64
コミュニティへの参加
• 勉強会・セミナーへの参加
- 各現場での啓蒙
- Twitterでの感想やブログ記事などでの情報発信
• OpenJDKコミュニティへの参加
- 気になるMLやBug/Issueをウォッチしてみる
- Bug Reportを上げたり、MLで報告してみる
• JDKディストリビューションへの参加
- まずは使ってみる
- Twitter/GitHubでウォッチしてみる
- Twitter/Slackで聞いてみたり、GitHubでIssueをあげてみる
- Pull Requestしてみる
https://www.slideshare.net/yusuke/java-98886920
by @yusuke_arclamp さん
『エンタープライズ、アーキテクチャ、アジャイルのこれから』
by @yusuke_arclamp さん ©Growth Architectures & Teams, Inc
65
まとめ
• 最適なJDKは環境・状況に応じて異なる
- 時代の変化にどれだけ追従していくか
• セキュリティやライフサイクルの考慮
• サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み
- サポートや動作保証をどう捉えるか
• 利⽤するミドルウェアやライブラリ、JVM⾔語など
• 商⽤サポートの利⽤や、法改正の影響を考慮
- どこで利⽤するか
• 開発環境と運⽤環境のJDK種類・バージョンの統⼀
• クラウド、オンプレミス、クライアント、コンテナ、組み込み
• Java/JVMコミュニティやエコシステムの重要性
- Oracle JDK/JRE⼀強時代ではなく、個々に判断・選択する必要性
- 求められるのはJDK利⽤者側の意識の変化
- OpenJDKなどのOSSは皆で参加し、育てていくもの
66
ご清聴ありがとうございました
本セッションや資料は、Java関連コミュニティの⽅々や関係者各位も含め、
多くの皆様のご協⼒によって⽣まれたものです。改めて感謝を申し上げます。
67

More Related Content

What's hot

これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
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
 
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
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?takezoe
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢Naoyuki Yamada
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) Hironobu Isoda
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続ける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
 
Jvm internal
Jvm internalJvm internal
Jvm internalGo Tanaka
 
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
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 

What's hot (20)

これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
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の仕組み
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
Jvm internal
Jvm internalJvm internal
Jvm internal
 
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アプリケーション
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 

Similar to これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本

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 code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Chihiro Ito
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用オラクルエンジニア通信
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)オラクルエンジニア通信
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]オラクルエンジニア通信
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るオラクルエンジニア通信
 
[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.
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+Ryusuke Kajiyama
 

Similar to これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本 (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:新しいリリースモデル解説 @ 熊本・福岡
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
JDK 新しいリリースモデル解説 (ver. 2.2)
JDK 新しいリリースモデル解説 (ver. 2.2)JDK 新しいリリースモデル解説 (ver. 2.2)
JDK 新しいリリースモデル解説 (ver. 2.2)
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
 
JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 
Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版
 
JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)JDK: 新しいリリースモデル解説(ver.2.1)
JDK: 新しいリリースモデル解説(ver.2.1)
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
【旧版】Oracle Cloud Infrastructure:サービス概要のご紹介 [2020年4月版]
 
Oracle GoldenGate Monitor 12cR2 セットアップガイド
Oracle GoldenGate Monitor 12cR2 セットアップガイドOracle GoldenGate Monitor 12cR2 セットアップガイド
Oracle GoldenGate Monitor 12cR2 セットアップガイド
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
[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 補足・続報付き
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い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
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い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
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本

  • 1. これからのJDK 何を選ぶ︖どう選ぶ︖ - How to choose the best OpenJDK distribution – v1.2 Takahiro YAMADA 2019-11-01
  • 2. ⾃⼰紹介 • CTCテクノロジー所属: マルチベンダーのミドルウェア技術サポート - Oracle Fusion Middleware - Red Hat JBoss Middleware - その他 Java を⼀部利⽤するミドルウェア製品 • コミュニティ - Twitter: @yamadamn - 元: Oracle ACE (Middleware) - 現在: ⽇本GlassFishユーザー会 監事 - 本⽇: OpenJDK警察 OpenJDKソムリエ 2
  • 3. 免責事項 • Oracle と Java は、Oracle Corporation およびその⼦会社・関連会社 の⽶国およびその他の国における登録商標です。⽂中の社名・商品名 などは、各社の商標または登録商標である場合があります。 • 発表する内容は個⼈の⾒解であり、所属する組織や団体の公式な⾒解 ではありません。 • 本資料に記載している内容は2019年10⽉末時点の情報に基づきます。 ※2019年7⽉に開催した『これからのJDK 何を選ぶ︖どう選ぶ︖』のセッション https://togetter.com/li/1373467 をベースとして、修正を加えています。 3
  • 4. 本⽇メインで紹介するJDK • Oracle JDK • Oracle OpenJDK • Red Hat OpenJDK • Azul Zulu • SapMachine • BellSoft Liberica JDK • AdoptOpenJDK with HotSpot • Amazon Corretto 4
  • 6. なぜマルチプラットフォーム対応の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問題 (例) 6
  • 7. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 7
  • 8. その前に: 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 8
  • 9. ⽇本各地のJavaコミュニティでも広がる「Java is Still Free」 『Javaは今でも無償です、という話 / Java is still free』 https://speakerdeck.com/kishida/java-is-still-free by @kis さん 『Java Do #osc19do Java有償化(していない件)について』 https://speakerdeck.com/gishi_yama/java-do-number-osc19do by @gishi_yama さん 9
  • 10. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 10
  • 11. 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として リリース 11
  • 12. 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にも対応 12
  • 14. Java 8から11で何が起こったか 『Java SE 8から11で何が起きた︖⼀気におさらいしてみよう︕ /java-se-8-to-11』 https://speakerdeck.com/miyakawataku/java-se-8-to-11 by @miyakawa_taku さん (CC BY 4.0) 14
  • 15. 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 15
  • 16. 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/ 16
  • 17. 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⾔語、ライブラリ、フレームワーク、ツールなどに影響 17
  • 18. 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)以降にも適⽤ 18
  • 20. 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 ※各ディストリビューションの 正式と⾒られるリリース年⽉ • Red Hat OpenJDK Windows版サポート発表 • Azul ZuluFXリリース 2018-12 JDK 13 2019-09 2018-11 Amazon Linux⽤LTS発表 Amazon Corretto 8u192 (Preview) • Zulu Enterprise on MS Azure発表 2018-09 延⻑発表 2018-01 Oracle JDK/JRE 8 Public Updates 終了発表 2017-10 20
  • 21. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 21
  • 22. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 11GA) 『Building JDK 11 Together』 https://blogs.oracle.com/java-platform-group/building-jdk-11-together Total Issue: 2,468 1. Oracle (80%) 2. SAP (7%) 3. Red Hat (5%) 4. Google (3%) 5. 個⼈ (2%) 6. BellSoft (1%) 7. IBM (1%) 22
  • 23. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 12GA) 『The arrival of Java 12!』 https://blogs.oracle.com/java-platform-group/the-arrival-of-java-12 Total Issue: 1,919 1. Oracle (75%) 2. Red Hat (8%) 3. Google (6%) 4. SAP (4%) 5. 個⼈ (3%) 6. BellSoft (1%) 7. IBM (1%) 23
  • 24. マルチベンダーによるOpenJDKへの貢献/投資 (JDK 13GA) 『The arrival of Java 13!』 https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13 『OpenJDK Backports Monitor』 https://builds.shipilev.net/backports-monitor/ pushes-13.txt – [Distribution by email/name] から独⾃集計 * 上記図とは若⼲異なるため、JBSをもとに補正 Total Issue: 2,127 1. Oracle (68%) 2. Red Hat (11%) 3. SAP (7%) 4. 個⼈ (4%) 5. Google (3%) 24
  • 25. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212/232) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-openjdk8u212.txt, pushes-openjdk8u232.txt ※2019年7⽉の8u222は割愛 – [Distribution by email/name] から独⾃集計 Total Issue: 112 1. Red Hat (64.3%) 2. Amazon (17.9%) 3. Oracle (11.6%) 4. SAP (3.6%) 5. 個⼈ (1.8%) 6. Azul (0.9%) 従来もOracle JDKのPublic Updates終了後は、Red HatがOpenJDKの修正を主導 ※OpenJDK 8u212/232であって、Oracle JDK 8u212/232ではないことに注意 Public Updates終了前はOracleが主導し、その後Oracleはプライベートリポジトリに反映 Total Issue: 81 1. Red Hat (91.4%) 2. Amazon (4.9%) 3. IBM (2.5%) 4. NTTデータ (1.2%)72 20 13 4 2 1 Issues fixed in OpenJDK 8u212 Red Hat Amazon Oracle SAP Azul 74 4 2 1 Issues fixed in OpenJDK 8u232 Red Hat Amazon IBM NTT 25
  • 26. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3/11.0.5) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-11.0.3.txt, pushes-11.0.5.txt ※ 2019年7⽉の11.0.4は割愛 – [Distribution by email/name] から独⾃集計 Total Issue: 185 1. Red Hat (44.9%) 2. SAP (31.4%) 3. Oracle (12.4%) 4. 個⼈ (3.8%) 5. Google (3.8%) 6. Amazon (2.7%) 7. BellSoft (0.5%) 8. Intel (0.5%) ※OpenJDK 11.0.3/11.0.5であって、Oracle JDK 11.0.3/11.0.5ではないことに注意 OracleはLTSリリースについて、プライベートリポジトリにのみ基本的に反映 Total Issue: 287 1. Red Hat (53.0%) 2. SAP (40.1%) 3. 個⼈ (2.4%) 4. NTTデータ (1.4%) 5. Amazon (1.0%) 6. BellSoft (0.7%) 7. Google (0.7%) 8. Azul (0.3%) 9. IBM (0.3%) 83 58 23 7 7 5 1 1 Issues fixed in OpenJDK 11.0.3 Red Hat SAP Oracle Google Amazon BellSoft Intel 152115 7 4 3 2 2 Issues fixed in OpenJDK 11.0.5 Red Hat SAP NTT Amazon BellSoft Google 26
  • 27. マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.2) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-11.0.2.txt – [Distribution by email/name] から独⾃集計 Total Issue: 92 1. Oracle (54%) 2. SAP (22%) 3. Red Hat (20%) 4. 個⼈ (2%) 5. Google (2%) OpenJDK 11.0.2 まではOracle主導 ※次の機能リリースが出る6ヵ⽉間 つまり、Oracleは最新版OpenJDKに注⼒し、 OpenJDK LTSは他のベンダーに委任 50 20 18 2 2 Issues fixed in OpenJDK 11.0.2 Oracle SAP Red Hat Google 27
  • 28. 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 28
  • 29. 改元対応でのバックポート例 [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 LTSへの修正 • 11.0.x • openjdk8uXXX 最初に実装されるのは 開発中のリリース • 13 (既にリリース済) 29
  • 30. 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ディストリビューション間でも独⾃バックポートなどによる差異は元々ある 30
  • 31. LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 8) • ビルド番号≒該当バージョンでのソースコードのセットにつけるタグ 「$ java –version」での確認 (Java 9以降はAPIでも基本的に取得可能) • 8u212 (java.runtime.version, java.vm.version システムプロパティから基本的に確認可能) - Oracle JDK java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8.0_212-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode) - Red Hat OpenJDK openjdk version "1.8.0_212-3-redhat" OpenJDK Runtime Environment (build 1.8.0_212-3-redhat-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode) ビルド番号: b10 ビルド番号: b04 数が⼤きいほうが多くの修正 を含んでいる訳ではない 31
  • 32. [参考] 2019年7⽉以降はバージョンで識別可能 (JDK 8) • Oracle JDK 8u221 (8u222はリリースされず) - Critical Patch Updates (CPU) 相当 java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) • その他 OpenJDK 8u222 - Patch Set Updates (PSU) 相当? openjdk version "1.8.0_222" OpenJDK Runtime Environment Corretto-8.222.10.1 (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM Corretto-8.222.10.1 (build 25.222-b10, mixed mode) 『JavaのリリースにはCPUとPSUの2種類があります』by @jyukutyo さん https://www.sakatakoichi.com/entry/2015/07/22/173205 (Amazon Correttoの例だが他も基本的に同様) 32
  • 33. LTSリリースでの差異を⾒分けるにはビルド番号を参考 (JDK 11) • 11.0.3 (Runtime.Version クラスからも基本的に取得可能) - Oracle JDK java version "11.0.3" 2019-04-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode) - Red Hat OpenJDK openjdk version "11.0.3-redhat" 2019-04-16 LTS OpenJDK Runtime Environment 18.9 (build 11.0.3-redhat+7-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.3-redhat+7-LTS, mixed mode) ビルド番号: 12 ビルド番号: 7 『Java 10 で変わる Java のバージョン表記』by @YujiSoftware さん https://qiita.com/YujiSoftware/items/2c5a9117a577700ea540 33
  • 34. [参考] 2019年7⽉以降はビルド番号で識別困難 (JDK 11) • Oracle JDK 11.0.4 java version "11.0.4" 2019-07-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode) 修正数:104 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4-oracle • その他 OpenJDK 11.0.4 openjdk version "11.0.4" 2019-07-16 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode) 修正数:251 https://bugs.openjdk.java.net/issues/?jql=project+%3D+JDK+AND+fixVersion+%3D+11.0.4 (AdoptOpenJDKの例だが他も基本的に同様) OpenJDKのビルド番号 とは無関係 34
  • 35. OpenJDKを利⽤したビジネスモデルの変遷例 • Oracle - (旧Sun) Java SE for Business: ⻑期サポート - Java SE Advanced: ⻑期サポートおよび商⽤機能を⾼付加価値として提供するライセンスモデル - Java SE Subscription: ⽐較的安価に広く提供し、⻑期サポートするサブスクリプションモデル • Red Hat - Red Hat Subscription: RHEL利⽤ユーザーに⻑期アップデートを提供するサブスクリプションモデル - OpenJDK Subscription for Windows: WindowsユーザーにもOpenJDKのサブスクリプションを提供 JDKリリースモデルの変更は、ビジネスモデル的には他のベンダー(ディストリビューター)に 負荷分散してOpenJDKエコシステムを安定的に維持する狙いも⼤きいと⾒られる 『各JDKのビジネスモデルに関するまとめ』 https://togetter.com/li/1404489 旧BEA社のJRockit JDK機能を統合 商⽤機能はすべてOpenJDKに寄贈 素のOpenJDKに⾜りない機能は IcedTeaで⼀部補完 Web Start代替のIcedTea-Webは AdoptOpenJDK配下にリポジトリ移管 Shenandoah GCなどをOpenJDKに寄贈 35
  • 36. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 36
  • 37. その前に: 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 さん 37
  • 38. 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は現状認証不要) All Java SE Downloads on MOS * 商⽤でOracle製品の契約者向け ライセンス 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ライセンスの変更に関するまとめ』 • ⽇本語を含めて情報量が最も豊富 38
  • 39. 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) 39
  • 40. 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/ ダウンロード https://developers.redhat.com/products/openjdk/download/ * 開発者⽤Windows版で要アカウント認証 https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=core.service.openjdk&downloa dType=distributions * 商⽤でJBoss製品などのサブスクリプション必要, 別途RHEL⽤のyumリポジトリあり ライセンス GPLv2 + Classpath Exception • Oracleに次ぐOpenJDKの貢献者であり、以前からPublic Updates終了後に主導 『Red HatのOpenJDK』by @nagetsum さん • RHEL/CentOSで豊富な実績を持ち、従来はIcedTeaで機能拡張 • Windows版OpenJDKも正式サポート (例: IcedTea-Web) 40
  • 41. 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) https://www.azul.com/downloads/azure-only/zulu/ * Azure利⽤者向け ライセンス GPLv2 + Classpath Exception • JDK/JVM専業ベンダーで、異なるJVMであるAzul Zingを持つ • Microsoft Azureで以前から利⽤され、商⽤のZulu Enterprise相当を提供 • 以前は素のOpenJDKビルドに近かったが、最近は機能拡張やDocker対応を重視 41
  • 42. 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 を別に持つ 42
  • 43. 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との提携?(ビルド番号などから推測) 43
  • 44. 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を通せていないが、独⾃のテストスイートで対応 44
  • 45. 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)に注⼒ 45
  • 46. その他注⽬しておきたい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 さん 46
  • 47. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 47
  • 48. Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ) 重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努⼒はされている 48
  • 49. 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⽉より前のアンケートと想定される 49
  • 51. JVM⾔語利⽤者向け簡易アンケート (⽇本) 『 (2019年4⽉時点) JVM⾔語を使う⽅がどのJDK/JVMを使うか︖アンケートと考察まとめ』 https://togetter.com/li/1340853 Q1. 商⽤環境でScala, Kotlin, Clojure, Groovy などのJVM⾔語を使う⽅はJDK/JREは何を利⽤ しますか︖ Q2. 商⽤環境でJVM⾔語を使う⽅はJDK/JVM バージョンとして何をメインで使いますか︖ ︖ 51
  • 52. Java/JVM⾔語利⽤者向けアンケート (⽇本) 『 (2019年7⽉時点) Java/JVM⾔語を商⽤で使っている⽅向けのアンケートと考察まとめ』 https://togetter.com/li/1376545 Q1. 回答者の⽴場 Q2. メインで利⽤するJDKバージョン Q3. メインで利⽤するJDKの種類 Q4. どこでJDK/JVMを実⾏するか Q5. JDK/JVMの商⽤サポートの必要性 52
  • 53. 判断軸 • サポート - アップデート提供期間 - 商⽤(技術)サポートの度合い - 関連製品との動作保証 • 使いやすさ - インストーラ (特にWindowsクライアント) - 開発環境 - コンテナ対応 - 知名度 • どこで運⽤するか - サーバー (クラウド, オンプレミス) - クライアント - コンテナ - 組み込み 53
  • 54. [参考] 判断軸による⽐較(例) – サポート ディストリビューション 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がシェア・提携関係的に強そうだが、将来は不明 54
  • 55. [参考] 判断軸による⽐較(例) – 使いやすさ ディストリビューション インストーラ SDKMAN & Scoop コンテナ (Docker) 知名度 備考 8 11 Oracle JDK S A B B S Docker対応はServer JRE 8 のみ Oracle OpenJDK - - S A A LTSはないが最新版を利⽤可能 Red Hat OpenJDK A A - B B Red Hat Container Catalogで利⽤ 再配布⾃由なUniversal Base Image(UBI)に今後注⽬ Azul Zulu B S A S B インストーラ・Dockerなども各種環境に注⼒ SapMachine - A A A - Docker公式イメージもあり (ベースOSはUbuntu) BellSoft Liberica JDK A S A S - AlpineのDockerイメージはかなり軽量 AdoptOpenJDK B A S S A IDEバンドルも含めて⼀通り利⽤可能 Amazon Corretto A A A A A DockerのベースOSはAmazon Linux2のみ (Alpine対応は保留されている) • JDK 8のインストーラは、既存のWindow⽤Oracle JRE 8との互換性を基準に評価 • JDK 11のインストーラは、多くのプラットフォームに対応しているかに注⽬ • 知名度は過去に実施したアンケートなどから判断 55
  • 56. [参考] 判断軸による⽐較(例) -どこで運⽤するか ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考 Oracle JDK OCI A S B A クライアント⽤のJava Web Start (アプレットは⾮推奨) Oracle OpenJDK (any) A - A - 最新版はコンテナに適す Red Hat OpenJDK OpenShift A A B B IcedTea-Web for Windows 正式サポート予定 Azul Zulu Azure A B S A OpenJFXバンドル版や IcedTea-Webも使われる︖ SapMachine (any) A - A - 基本はサーバ環境⽤途 BellSoft Liberica JDK Yandex A A S A JavaFX/OpenJFXバンドル AdoptOpenJDK (any) A A S A IcedTea-Web for Windows バンドル(オプション) Amazon Corretto AWS A - A B 8のみOpenJFXバンドルだが 古いのとWebkit周りで難あり • オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第) • 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か 56
  • 57. コストをどう考えるか • 環境・状況次第で⼤きく変わる (⾃社開発⽤途や個⼈利⽤は無償がほとんど) - Oracle JDK • Oracle Cloud Infrastructure(OCI)やOracle製品で使う場合、基本的には追加費⽤なし - Red Hat OpenJDK • RHEL/UBIやRed Hat Middleware製品とともに使う場合は追加費⽤なし - その他のJDK • 利⽤は無償が多いが、商⽤(技術)サポートは有償 • ITライフサイクルを通じて考える - 調達・購買コストだけではない - 開発〜運⽤時含めトラブル時など対応コストも考慮 - バランスの⾒極めや何かしらのトレードオフは必要 企画・ 設計 調達・ 購買 開発・ 構築 導⼊・ 移⾏ 保守・ 運⽤ ITライフサイクル および継続的改善 57
  • 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/2) → Amazon Corretto - MS Azure → Azul Zulu - OpenShift/RHEL → Red Hat OpenJDK - Oracle Cloud → Oracle JDK 59
  • 60. [補⾜] そういえばJava EEってどうなったんだっけ︖ • Eclipse Foundationに移管され、Jakarta EE 8がリリース • 今後「javax」ネームスペースは「jakarta」に変更予定 - Sunから引き継いだ商標や契約に基づくため仕⽅なし • javax.* パッケージは第三者が拡張することを許容されていない • Servlet/JSP APIを含むため、TomcatやSpring Frameworkにも影響あり - 略称もOracleが商標を持つものが多いため変更 60
  • 61. アジェンダ 1. JDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各JDKディストリビューションの特徴 4. JDKディストリビューションの選び⽅ 5. OpenJDKの⽀え⽅ 61
  • 62. 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 • 構築・運⽤担当者 - 各JDKのライフサイクルやリリース/更新スケジュールを把握する - 動作保証に適したJDKを利⽤する (⺠法改正の影響なども考慮) - アプリケーションに応じて適切なプラットフォーム・JDKを検討する 62
  • 63. [参考] JDKの他の選び⽅(例) • 例えば、好きなベンダー(ディストリビューター)のJDKを利⽤する e.g. OpenJDK本体に貢献しているベンダーを応援したい - Oracle JDK/Oracle OpenJDK - Red Hat OpenJDK - SapMachine - BellSoft Liberica JDK - IBM SDK Java Technology Edition • ディストリビューションの応援の仕⽅の例 - まずは使ってみる - 意⾒を伝えたり、フィードバックして改善してみる - Oracle Java SE Desktop Subscription, IBM Runtimes for Java Desktopを個⼈購⼊してみる 63
  • 64. Java/JVMエコシステムはこれまでと変わらず重要 • Javaはこれからますます進化を続ける - 半年単位での機能リリース - Project Panama, Valhalla, Loom - Quarkus, Micronaut, HelidonなどGraalVMに対応したWebフレームワーク 『Introduction to GraalVM / GraalVMが照らす未来』by @jyukutyo さん 『Javaは今でも無償ですという話と最近のJava Webフレームワーク』by @kis さん • エコシステムは強⼒で重要不可⽋ - 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273 - 『SunからOracleに変わって10年経ったけど第三者から⾒てもJavaは⼼配ない よというポエム』https://togetter.com/li/1342209 64
  • 65. コミュニティへの参加 • 勉強会・セミナーへの参加 - 各現場での啓蒙 - Twitterでの感想やブログ記事などでの情報発信 • OpenJDKコミュニティへの参加 - 気になるMLやBug/Issueをウォッチしてみる - Bug Reportを上げたり、MLで報告してみる • JDKディストリビューションへの参加 - まずは使ってみる - Twitter/GitHubでウォッチしてみる - Twitter/Slackで聞いてみたり、GitHubでIssueをあげてみる - Pull Requestしてみる https://www.slideshare.net/yusuke/java-98886920 by @yusuke_arclamp さん 『エンタープライズ、アーキテクチャ、アジャイルのこれから』 by @yusuke_arclamp さん ©Growth Architectures & Teams, Inc 65
  • 66. まとめ • 最適なJDKは環境・状況に応じて異なる - 時代の変化にどれだけ追従していくか • セキュリティやライフサイクルの考慮 • サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み - サポートや動作保証をどう捉えるか • 利⽤するミドルウェアやライブラリ、JVM⾔語など • 商⽤サポートの利⽤や、法改正の影響を考慮 - どこで利⽤するか • 開発環境と運⽤環境のJDK種類・バージョンの統⼀ • クラウド、オンプレミス、クライアント、コンテナ、組み込み • Java/JVMコミュニティやエコシステムの重要性 - Oracle JDK/JRE⼀強時代ではなく、個々に判断・選択する必要性 - 求められるのはJDK利⽤者側の意識の変化 - OpenJDKなどのOSSは皆で参加し、育てていくもの 66