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

More Related Content

What's hot

しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTT DATA Technology & Innovation
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能TomomitsuKusaba
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 

What's hot (20)

しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
Oracle Data Guard による高可用性
Oracle Data Guard による高可用性Oracle Data Guard による高可用性
Oracle Data Guard による高可用性
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
 
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Oracle Database Vaultのご紹介
Oracle Database Vaultのご紹介Oracle Database Vaultのご紹介
Oracle Database Vaultのご紹介
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 

Similar to これからのJDK/JVM 何を選ぶ?どう選ぶ?

OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoTakahiro YAMADA
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Chihiro Ito
 
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オラクルエンジニア通信
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用オラクルエンジニア通信
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...オラクルエンジニア通信
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!オラクルエンジニア通信
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 

Similar to これからのJDK/JVM 何を選ぶ?どう選ぶ? (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
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
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:新しいリリースモデル解説 @ 熊本・福岡
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
Ptt391
Ptt391Ptt391
Ptt391
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 

Recently uploaded

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

これからのJDK/JVM 何を選ぶ?どう選ぶ?

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