SlideShare a Scribd company logo
1 of 43
OpenJDKソムリエと巡るJDKワイナリーツアー
- JDK winery tour with OpenJDK sommelier -
Takahiro YAMADA
2019-10-26
#sfggjp #javajo
自己紹介
• 某SIerの片隅でマルチベンダーのミドルウェア技術サポート
- Oracle Fusion Middleware
- Red Hat JBoss Middleware
- その他 Java を一部利用するミドルウェア製品
• コミュニティ
- Twitter: @yamadamn
- 元: Oracle ACE (Middleware)
- 現在: 日本GlassFishユーザー会 監事
- 本日: OpenJDK警察 OpenJDKソムリエ
#sfggjp #javajo 2
免責事項
• Oracle と Java は、Oracle Corporation およびその子会社・関連会社
の米国およびその他の国における登録商標です。文中の社名・商品名
などは、各社の商標または登録商標である場合があります。
• 発表する内容は個人の見解であり、所属する組織や団体の公式な見解
ではありません。
• 本資料に記載している内容は2019年10月末時点の情報に基づきます。
※2019年7月に開催した『これからのJDK 何を選ぶ?どう選ぶ?』のセッション
https://togetter.com/li/1373467 をベースとして、修正を加えています。
#sfggjp #javajo 3
本日メインで紹介するJDK
• Oracle JDK
• Oracle OpenJDK
• Red Hat OpenJDK
• Azul Zulu
• SapMachine
• BellSoft Liberica JDK
• AdoptOpenJDK with HotSpot
• Amazon Corretto
#sfggjp #javajo 4
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 各JDKディストリビューションの特徴
3. JDKディストリビューションの選び方
#sfggjp #javajo 5
その前に: JavaとかJDKって何だっけ?
#sfggjp #javajo
『JDK、Oracle JDK、OpenJDK、Java SEってなに?』by @kis さん
6
[参考] SalesforceとJavaの関係: 前編
#sfggjp #javajo
Salesforceの当初から使われるApexは、流行っていたJavaに似せて作られた
7
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 各JDKディストリビューションの特徴
3. JDKディストリビューションの選び方
#sfggjp #javajo 8
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として
リリース
#sfggjp #javajo 9
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にも対応
#sfggjp #javajo 10
時代の変化
進化への追従
セキュリティ対応
の重要性
クラウドやコンテナ
環境の台頭
#sfggjp #javajo 11
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)
#sfggjp #javajo 12
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
#sfggjp #javajo 13
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/
#sfggjp #javajo 14
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言語、ライブラリ、フレームワーク、ツールなどに影響
#sfggjp #javajo 15
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)以降にも適用
#sfggjp #javajo 16
OpenJDKを中心として各JDKが競う時代に
ソースコード
複数のディストリビューター
JDKディストリビューション• 商用機能を寄贈
• その他固有機能を削除/OSS化
コミュニティ・プロジェクト
#sfggjp #javajo 17
JDKディストリビューションの歴史: 後編
• JDK 9リリース~実質的に初のLTSとなる11.0.3登場 (1年7ヶ月)
- 既存3ベンダーを含む計7つのディストリビューターで戦国時代に突入(?)
JDK 9
2017-09
JDK 10
2018-03
JDK 12
2019-03
2018-04
BellSoft Liberica JDK
10 for Raspberry Pi
Oracle JDK/JRE 8
Public Updates終了
2019-01
JDK 11 (LTS)
2018-09
2019-10
8u231/232
11.0.5
13.0.1
2018-05
AdoptOpenJDK
8u172
2018-03
SapMachine 10
2019-02
Amazon Corretto
8u202
Oracle JDK/OpenJDK
8u212, 11.0.3 (LTS)
2019-04
Oracle JDK/JRE 8
Public Updates
終了発表
2017-10
※各ディストリビューションの
正式と見られるリリース年月
• Red Hat OpenJDK
Windows版サポート発表
• Azul ZuluFXリリース
2018-12
#sfggjp #javajo
JDK 13
2019-09
2018-11
Amazon Linux用LTS発表
Amazon Corretto
8u192 (Preview)
• Zulu Enterprise
on MS Azure発表
2018-09
延長発表
2018-01
18
Java/OpenJDKは誰が作っている?
#sfggjp #javajo
『Javaは今でも無償です、という話 / Java is still free』by @kis さん
19
あなたと「sdk list java」
#sfggjp #javajo 20
JDKテイスティングにはShogunがオススメ!
#sfggjp #javajo
https://samr.ai/shogun 詳細はこちら http://bit.ly/32CZT2z
21
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 各JDKディストリビューションの特徴
3. JDKディストリビューションの選び方
#sfggjp #javajo 22
その前に: 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 さん
#sfggjp #javajo 23
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ライセンスの変更に関するまとめ』
• 日本語を含めて情報量が最も豊富
#sfggjp #javajo 24
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)
#sfggjp #javajo 25
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)
#sfggjp #javajo 26
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対応を重視
#sfggjp #javajo 27
[参考] SalesforceとJavaの関係: 中編
#sfggjp #javajo
SalesforceのデータローダーはAzul Zuluを採用
28
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 を別に持つ
#sfggjp #javajo 29
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との提携?(ビルド番号などから推測)
#sfggjp #javajo 30
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を通せていないが、独自のテストスイートで対応
#sfggjp #javajo 31
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)に注力
#sfggjp #javajo 32
その他の様々な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 さん
#sfggjp #javajo 33
アジェンダ
1. JDKディストリビューションが出てきた背景
2. 各JDKディストリビューションの特徴
3. JDKディストリビューションの選び方
#sfggjp #javajo 34
Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ)
重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努力はされている
#sfggjp #javajo 35
Java/JVM言語利用者向けアンケート (日本)
『 (2019年7月時点) Java/JVM言語を商用で使っている方向けのアンケートと考察まとめ』
https://togetter.com/li/1376545
Q1. 回答者の立場 Q2. メインで利用するJDKバージョン
#sfggjp #javajo
Q3. メインで利用するJDKの種類
Q4. どこでJDK/JVMを実行するか Q5. JDK/JVMの商用サポートの必要性
36
判断軸
• サポート
- アップデート提供期間
- 商用(技術)サポートの度合い
- 関連製品との動作保証
• 使いやすさ
- インストーラ (特にWindowsクライアント)
- 開発環境
- コンテナ対応
- 知名度
• どこで運用するか
- サーバー (クラウド, オンプレミス)
- クライアント
- コンテナ
- 組み込み
#sfggjp #javajo 37
[参考] 判断軸による比較(例) – サポート
ディストリビューション
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がシェア・提携関係的に強そうだが、将来は不明
#sfggjp #javajo 38
[参考] 判断軸による比較(例) – 使いやすさ
ディストリビューション
インストーラ 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 S - Docker公式イメージもあり (ベースOSはUbuntu)
BellSoft Liberica JDK A S A S - AlpineのDockerイメージはjlink用jmodsなし (11以降)
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のインストーラは、多くのプラットフォームに対応しているかに注目
• 知名度は過去に実施したアンケートなどから判断
#sfggjp #javajo 39
[参考] 判断軸による比較(例) -どこで運用するか
ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考
Oracle JDK OCI A S B A クライアント用のJava Web
Start (アプレットは非推奨)
Oracle OpenJDK (any) A - A - 最新版はコンテナに適す
Red Hat OpenJDK OpenShift A A B - IcedTea-Web for Windows
正式サポート予定
Azul Zulu Azure A B S A OpenJFXバンドル版や
IcedTea-Webも使われる?
SapMachine (any) A - S - 基本はサーバ環境用途
BellSoft Liberica JDK Yandex A A S A JavaFX/OpenJFXバンドル
AdoptOpenJDK (any) A A S A IcedTea-Web for Windows
バンドル(オプション)
Amazon Corretto AWS A - A - 8のみOpenJFXバンドルだが
古いのとWebkit周りで難あり
• オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第)
• 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か
#sfggjp #javajo 40
OpenJDKソムリエ的 JDKオススメMap(超主観)
サーバーサイド
クライアントサイド
無
償
ア
ッ
プ
デ
ー
ト
有
償
サ
ポ
ー
ト
#sfggjp #javajo 41
[参考] SalesforceとJavaの関係: 後編
#sfggjp #javajo
Salesforce傘下の企業でもJavaは広く利用
42
ご清聴ありがとうございました
本セッションや資料は、Java関連コミュニティの方々や関係者各位も含め、
多くの皆様のご協力によって生まれたものです。改めて感謝を申し上げます。
#sfggjp #javajo 43

More Related Content

What's hot

JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
Motor bike by cfmesh
Motor bike by cfmeshMotor bike by cfmesh
Motor bike by cfmesh
Etsuji Nomura
 

What's hot (20)

Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
漫談重構
漫談重構漫談重構
漫談重構
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
Java仮想マシンの実装技術
Java仮想マシンの実装技術Java仮想マシンの実装技術
Java仮想マシンの実装技術
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
 
我的 DevOps 故事
我的 DevOps 故事我的 DevOps 故事
我的 DevOps 故事
 
123 dexcs2020
123 dexcs2020123 dexcs2020
123 dexcs2020
 
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
 
Motor bike by cfmesh
Motor bike by cfmeshMotor bike by cfmesh
Motor bike by cfmesh
 
Git入門
Git入門Git入門
Git入門
 

Similar to OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo

明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 

Similar to OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo (20)

最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai
 
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 in the World of Container by David Buck
Java in the World of Container by David BuckJava in the World of Container by David Buck
Java in the World of Container by David Buck
 
JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡
 
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
 
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
 
Ptt391
Ptt391Ptt391
Ptt391
 
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
JDK 新しいリリースモデル解説 (ver. 2.2)
JDK 新しいリリースモデル解説 (ver. 2.2)JDK 新しいリリースモデル解説 (ver. 2.2)
JDK 新しいリリースモデル解説 (ver. 2.2)
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
(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.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 

OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo

  • 1. OpenJDKソムリエと巡るJDKワイナリーツアー - JDK winery tour with OpenJDK sommelier - Takahiro YAMADA 2019-10-26 #sfggjp #javajo
  • 2. 自己紹介 • 某SIerの片隅でマルチベンダーのミドルウェア技術サポート - Oracle Fusion Middleware - Red Hat JBoss Middleware - その他 Java を一部利用するミドルウェア製品 • コミュニティ - Twitter: @yamadamn - 元: Oracle ACE (Middleware) - 現在: 日本GlassFishユーザー会 監事 - 本日: OpenJDK警察 OpenJDKソムリエ #sfggjp #javajo 2
  • 3. 免責事項 • Oracle と Java は、Oracle Corporation およびその子会社・関連会社 の米国およびその他の国における登録商標です。文中の社名・商品名 などは、各社の商標または登録商標である場合があります。 • 発表する内容は個人の見解であり、所属する組織や団体の公式な見解 ではありません。 • 本資料に記載している内容は2019年10月末時点の情報に基づきます。 ※2019年7月に開催した『これからのJDK 何を選ぶ?どう選ぶ?』のセッション https://togetter.com/li/1373467 をベースとして、修正を加えています。 #sfggjp #javajo 3
  • 4. 本日メインで紹介するJDK • Oracle JDK • Oracle OpenJDK • Red Hat OpenJDK • Azul Zulu • SapMachine • BellSoft Liberica JDK • AdoptOpenJDK with HotSpot • Amazon Corretto #sfggjp #javajo 4
  • 6. その前に: JavaとかJDKって何だっけ? #sfggjp #javajo 『JDK、Oracle JDK、OpenJDK、Java SEってなに?』by @kis さん 6
  • 7. [参考] SalesforceとJavaの関係: 前編 #sfggjp #javajo Salesforceの当初から使われるApexは、流行っていたJavaに似せて作られた 7
  • 9. 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として リリース #sfggjp #javajo 9
  • 10. 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にも対応 #sfggjp #javajo 10
  • 12. 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) #sfggjp #javajo 12
  • 13. 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 #sfggjp #javajo 13
  • 14. 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/ #sfggjp #javajo 14
  • 15. 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言語、ライブラリ、フレームワーク、ツールなどに影響 #sfggjp #javajo 15
  • 16. 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)以降にも適用 #sfggjp #javajo 16
  • 18. JDKディストリビューションの歴史: 後編 • JDK 9リリース~実質的に初のLTSとなる11.0.3登場 (1年7ヶ月) - 既存3ベンダーを含む計7つのディストリビューターで戦国時代に突入(?) JDK 9 2017-09 JDK 10 2018-03 JDK 12 2019-03 2018-04 BellSoft Liberica JDK 10 for Raspberry Pi Oracle JDK/JRE 8 Public Updates終了 2019-01 JDK 11 (LTS) 2018-09 2019-10 8u231/232 11.0.5 13.0.1 2018-05 AdoptOpenJDK 8u172 2018-03 SapMachine 10 2019-02 Amazon Corretto 8u202 Oracle JDK/OpenJDK 8u212, 11.0.3 (LTS) 2019-04 Oracle JDK/JRE 8 Public Updates 終了発表 2017-10 ※各ディストリビューションの 正式と見られるリリース年月 • Red Hat OpenJDK Windows版サポート発表 • Azul ZuluFXリリース 2018-12 #sfggjp #javajo JDK 13 2019-09 2018-11 Amazon Linux用LTS発表 Amazon Corretto 8u192 (Preview) • Zulu Enterprise on MS Azure発表 2018-09 延長発表 2018-01 18
  • 23. その前に: 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 さん #sfggjp #javajo 23
  • 24. 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ライセンスの変更に関するまとめ』 • 日本語を含めて情報量が最も豊富 #sfggjp #javajo 24
  • 25. 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) #sfggjp #javajo 25
  • 26. 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) #sfggjp #javajo 26
  • 27. 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対応を重視 #sfggjp #javajo 27
  • 28. [参考] SalesforceとJavaの関係: 中編 #sfggjp #javajo SalesforceのデータローダーはAzul Zuluを採用 28
  • 29. 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 を別に持つ #sfggjp #javajo 29
  • 30. 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との提携?(ビルド番号などから推測) #sfggjp #javajo 30
  • 31. 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を通せていないが、独自のテストスイートで対応 #sfggjp #javajo 31
  • 32. 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)に注力 #sfggjp #javajo 32
  • 33. その他の様々な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 さん #sfggjp #javajo 33
  • 35. Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ) 重要な修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努力はされている #sfggjp #javajo 35
  • 36. Java/JVM言語利用者向けアンケート (日本) 『 (2019年7月時点) Java/JVM言語を商用で使っている方向けのアンケートと考察まとめ』 https://togetter.com/li/1376545 Q1. 回答者の立場 Q2. メインで利用するJDKバージョン #sfggjp #javajo Q3. メインで利用するJDKの種類 Q4. どこでJDK/JVMを実行するか Q5. JDK/JVMの商用サポートの必要性 36
  • 37. 判断軸 • サポート - アップデート提供期間 - 商用(技術)サポートの度合い - 関連製品との動作保証 • 使いやすさ - インストーラ (特にWindowsクライアント) - 開発環境 - コンテナ対応 - 知名度 • どこで運用するか - サーバー (クラウド, オンプレミス) - クライアント - コンテナ - 組み込み #sfggjp #javajo 37
  • 38. [参考] 判断軸による比較(例) – サポート ディストリビューション 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がシェア・提携関係的に強そうだが、将来は不明 #sfggjp #javajo 38
  • 39. [参考] 判断軸による比較(例) – 使いやすさ ディストリビューション インストーラ 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 S - Docker公式イメージもあり (ベースOSはUbuntu) BellSoft Liberica JDK A S A S - AlpineのDockerイメージはjlink用jmodsなし (11以降) 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のインストーラは、多くのプラットフォームに対応しているかに注目 • 知名度は過去に実施したアンケートなどから判断 #sfggjp #javajo 39
  • 40. [参考] 判断軸による比較(例) -どこで運用するか ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考 Oracle JDK OCI A S B A クライアント用のJava Web Start (アプレットは非推奨) Oracle OpenJDK (any) A - A - 最新版はコンテナに適す Red Hat OpenJDK OpenShift A A B - IcedTea-Web for Windows 正式サポート予定 Azul Zulu Azure A B S A OpenJFXバンドル版や IcedTea-Webも使われる? SapMachine (any) A - S - 基本はサーバ環境用途 BellSoft Liberica JDK Yandex A A S A JavaFX/OpenJFXバンドル AdoptOpenJDK (any) A A S A IcedTea-Web for Windows バンドル(オプション) Amazon Corretto AWS A - A - 8のみOpenJFXバンドルだが 古いのとWebkit周りで難あり • オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第) • 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か #sfggjp #javajo 40
  • 42. [参考] SalesforceとJavaの関係: 後編 #sfggjp #javajo Salesforce傘下の企業でもJavaは広く利用 42