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

PDF
JDKの選択肢とサーバーサイドでの選び方
PPTX
Java 9で進化する診断ツール
PDF
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
PDF
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
PDF
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
PPTX
d-block elements
JDKの選択肢とサーバーサイドでの選び方
Java 9で進化する診断ツール
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
これからのJDK/JVM 何を選ぶ?どう選ぶ?
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
d-block elements

What's hot (20)

PDF
Virtual Chassis Fabric for Cloud Builder
PDF
Javaトラブルに備えよう #jjug_ccc #ccc_h2
PDF
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
PPTX
RHEL on Azure、初めの一歩
PDF
第18回しゃちほこオラクル俱楽部
PDF
Media Handling in FreeSWITCH
PPT
2 Brownian motion.ppt
PDF
Oracleのトランケートについて知っておくべきこと
PPTX
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
PDF
chemical kinetics.pdf
PDF
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
PDF
Rac rac one_node説明資料
PDF
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
PDF
大規模負荷試験時にやったこと
PDF
愛せないコードを書くには人生はあまりにも短い
PDF
hbstudy# 28 SELinux HandsOn 公開版
PDF
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1
PDF
Oracle Analytics Server のご紹介【2021年3月版】
PDF
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
PDF
Zero Data Loss Recovery Applianceのご紹介
Virtual Chassis Fabric for Cloud Builder
Javaトラブルに備えよう #jjug_ccc #ccc_h2
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
RHEL on Azure、初めの一歩
第18回しゃちほこオラクル俱楽部
Media Handling in FreeSWITCH
2 Brownian motion.ppt
Oracleのトランケートについて知っておくべきこと
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
chemical kinetics.pdf
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
Rac rac one_node説明資料
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
大規模負荷試験時にやったこと
愛せないコードを書くには人生はあまりにも短い
hbstudy# 28 SELinux HandsOn 公開版
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1
Oracle Analytics Server のご紹介【2021年3月版】
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
Zero Data Loss Recovery Applianceのご紹介
Ad

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

PDF
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
PDF
OpenJDK コミュニティに参加してみよう #jjug
PDF
20190202 jdk new_release_model_sendai
PDF
Java in the World of Container by David Buck
PDF
JDK:新しいリリースモデル解説 @ 岡山・広島
PDF
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
PDF
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
PDF
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
PDF
今年はJava進化の年!今知っておくべき新しいJava
PPTX
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
PDF
JDK: 新しいリリースモデル解説
PDF
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
PDF
JDK: 新しいリリースモデル解説(ver.2.1)
PDF
Oracle code one 2018 報告会概要
PDF
JDK: 新しいリリースモデル解説(ver.2.0)
PDF
Javaのカルチャーとグロース - MANABIYA 2018
PDF
JDK:新しいリリースモデル解説 @ 熊本・福岡
PDF
20161119 java one-feedback_osaka
PDF
JJUG初心者のためのJava/JJUG講座
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
OpenJDK コミュニティに参加してみよう #jjug
20190202 jdk new_release_model_sendai
Java in the World of Container by David Buck
JDK:新しいリリースモデル解説 @ 岡山・広島
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
今年はJava進化の年!今知っておくべき新しいJava
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
JDK: 新しいリリースモデル解説
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JDK: 新しいリリースモデル解説(ver.2.1)
Oracle code one 2018 報告会概要
JDK: 新しいリリースモデル解説(ver.2.0)
Javaのカルチャーとグロース - MANABIYA 2018
JDK:新しいリリースモデル解説 @ 熊本・福岡
20161119 java one-feedback_osaka
JJUG初心者のためのJava/JJUG講座
Ad

Recently uploaded (7)

PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
AIシステムのセキュリティ:脅威となりつつあるAIの現状と課題 [English] Security of AI Systems: The Current...
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Working as an OSS Developer at Ruby Association Activity Report 2025
AIシステムのセキュリティ:脅威となりつつあるAIの現状と課題 [English] Security of AI Systems: The Current...
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ

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