Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5

9,008 views

Published on

5/17 Oracle Code Tokyo 2019、5/18 JJUG CCCのセッション資料です。https://togetter.com/li/1356223 も併せて参照ください。
以下、Oracle Code Tokyo 2019 https://www.oracle.co.jp/events/code/2019/ でのセッション概要より転記します。
--------
2019年1月末で、Oracle JDK/JRE 8の商用ユーザー向けのPublic Updatesが終了しました。また、Java 9以降ではJDKのリリースモデルが変更になり、並行してOracle JDK 8までの商用機能がOpenJDKに寄贈されていきました。 こうした流れにより、特にJava 9がリリースされた2017年9月以降には様々なOpenJDKディストリビューションが出てきており、選択肢が大きく増えた反面、どれを選べばよいのかが分からない・多様になっただけに混乱を招く、などの話を耳にすることもあります。 本セッションでは、マルチプラットフォームに対応した主要なJDKディストリビューションの特徴を説明するとともに、どのような軸で判断していくべきかを提示することで、皆様の環境・状況にあった最適なJDK選びをお手伝いいたします。

Published in: Technology
  • Be the first to comment

最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5

  1. 1. #codetokyo19B3 & #ccc_l5 最適なOpenJDKディストリビューションの選び方 - How to choose the best OpenJDK distribution - Takahiro YAMADA 2019-05
  2. 2. #codetokyo19B3 & #ccc_l5 自己紹介 • お仕事: SIerの片隅でマルチベンダーのミドルウェア技術サポート - Oracle Fusion Middleware - Red Hat JBoss Middleware - その他 Java を一部利用するミドルウェア製品 • コミュニティ - Twitter: @yamadamn - 元: Oracle ACE (Middleware) - 現在: 日本GlassFishユーザー会 監事 - 本日: OpenJDK警察 OpenJDKソムリエ 2
  3. 3. #codetokyo19B3 & #ccc_l5 免責事項 • Oracle と Java は、Oracle Corporation およびその子会社・関連会社 の米国およびその他の国における登録商標です。文中の社名・商品名 などは、各社の商標または登録商標である場合があります。 • 発表する内容は個人の見解であり、所属する組織や団体の公式な見解 ではありません。 • 本資料に記載している内容は2019年5月前半時点の情報に基づきます。 また、本資料を使用したことにより被った直接的、間接的な損害等に ついて、いかなる責任も負いかねます。 3
  4. 4. #codetokyo19B3 & #ccc_l5 本日メインで紹介するJDKディストリビューション • Oracle JDK • Oracle OpenJDK • Red Hat OpenJDK • Azul Zulu • SapMachine • BellSoft Liberica JDK • AdoptOpenJDK with HotSpot • Amazon Corretto 4
  5. 5. #codetokyo19B3 & #ccc_l5 なぜマルチプラットフォーム対応の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は若干古かったり、パッケージ更新に依存 • 例: 改元「令和」対応 5 (例)
  6. 6. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 6
  7. 7. #codetokyo19B3 & #ccc_l5 その前に: 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 7
  8. 8. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 8
  9. 9. #codetokyo19B3 & #ccc_l5 OpenJDKの歴史 • 最初に開発中のJDK 7がOSS化 (Sun時代) • 開発中のJDK 7の開発途中からOpenJDK 6が派生 • JDK 7からはコードベースが OpenJDK 7に一本化 『アプリケーション実行基盤としてのOpenJDKの評価』 https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/670/670.pdf 実際はその後 Oracle JDKとして リリース 9
  10. 10. #codetokyo19B3 & #ccc_l5 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にも対応 10
  11. 11. #codetokyo19B3 & #ccc_l5 時代の変化 11 進化への追従 セキュリティ対応 の重要性 クラウドやコンテナ 環境の台頭
  12. 12. #codetokyo19B3 & #ccc_l5 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) 12
  13. 13. #codetokyo19B3 & #ccc_l5 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 13
  14. 14. #codetokyo19B3 & #ccc_l5 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/ 14
  15. 15. #codetokyo19B3 & #ccc_l5 Java 8と11の互換性 • Oracle JDK/JRE 11から削除された内容 - Javaプラグイン(アプレット), Java Web Start - Public JRE+自動更新 - JavaFX (OpenJFXに移管) - 32bit版バイナリ (Windows, Linux) ※Oracle JDK/JRE 9~ ➡ クライアント環境に影響 (特にレガシーな環境) • モジュール・システム(Project Jigsaw)による壁 - 内部APIに対するアクセス制限 - JAXBなどJava EE関連モジュール削除 ➡ ミドルウェア、JVM言語、ライブラリ、フレームワーク、ツールなどに影響 15
  16. 16. #codetokyo19B3 & #ccc_l5 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)以降にも適用 16
  17. 17. #codetokyo19B3 & #ccc_l5 OpenJDKを中心として各ディストリビューションが競う時代に ソースコード 複数のディストリビューター JDKディストリビューション• 商用機能を寄贈 • その他固有機能を削除/OSS化 17 コミュニティ・プロジェクト
  18. 18. #codetokyo19B3 & #ccc_l5 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 12.0.1 2019-04 2018-05 AdoptOpenJDK 8u172 2018-03 SapMachine 10 2019-02 Amazon Corretto 8u212 Oracle JDK/OpenJDK 8u212, 11.0.3 (LTS) 2019-04 Oracle JDK/JRE 8 Public Updates 延長発表 2017-10 ※各ディストリビューションの 正式と見られるリリース年月 18 • Red Hat OpenJDK Windows版サポート発表 • Azul ZuluFXリリース 2018-12
  19. 19. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 19
  20. 20. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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%) 20
  21. 21. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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%) 21
  22. 22. #codetokyo19B3 & #ccc_l5 マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 8u212) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-openjdk8u212.txt – [Distribution by email/name] から独自集計 Total Issue: 112 1. Red Hat (64%) 2. Amazon (18%) 3. Oracle (12%) 4. SAP (4%) 5. 個人 (2%) 6. Azul (1%) 従来もOracle JDKのPublic Updates終了後は Red HatがOpenJDKの修正を主導 ※OpenJDK 8u212であって、 Oracle JDK 8u212ではないことに注意 72 20 13 4 2 1 Issues fixed in OpenJDK 8u212 Red Hat Amazon Oracle SAP 個人 Azul 22
  23. 23. #codetokyo19B3 & #ccc_l5 マルチベンダーによるOpenJDKへの貢献/投資 (OpenJDK 11.0.3) 『OpenJDK Backports Monitor』https://builds.shipilev.net/backports-monitor/ pushes-11.0.3.txt – [Distribution by email/name] から独自集計 Total Issue: 185 1. Red Hat (45%) 2. SAP (31%) 3. Oracle (12%) 4. 個人 (4%) 5. Google (4%) 6. Amazon (3%) 7. BellSoft (1%) 8. Intel (1%) ※OpenJDK 11.0.3であって、 Oracle JDK 11.0.3ではないことに注意 83 58 23 7 7 5 1 1 Issues fixed in OpenJDK 11.0.3 Red Hat SAP Oracle 個人 Google Amazon BellSoft Intel 23
  24. 24. #codetokyo19B3 & #ccc_l5 マルチベンダーによる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 24
  25. 25. #codetokyo19B3 & #ccc_l5 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 25
  26. 26. #codetokyo19B3 & #ccc_l5 改元対応でのバックポート例 [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版で確認可) 26
  27. 27. #codetokyo19B3 & #ccc_l5 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などを通じて状況も明らかなので分断を招く訳ではない 27
  28. 28. #codetokyo19B3 & #ccc_l5 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 28
  29. 29. #codetokyo19B3 & #ccc_l5 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 29
  30. 30. #codetokyo19B3 & #ccc_l5 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配下にリポジトリ移管 30 Shenandoah GCなどをOpenJDKに寄贈
  31. 31. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 31
  32. 32. #codetokyo19B3 & #ccc_l5 その前に: 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さん 32
  33. 33. #codetokyo19B3 & #ccc_l5 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への最大の貢献者 • エンドユーザーへの慣れ・安心感があるが、ライセンス変更での混乱あり • 日本語を含めて情報量が最も豊富 33
  34. 34. #codetokyo19B3 & #ccc_l5 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) 34
  35. 35. #codetokyo19B3 & #ccc_l5 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) 35
  36. 36. #codetokyo19B3 & #ccc_l5 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対応を重視 36
  37. 37. #codetokyo19B3 & #ccc_l5 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 を別に持つ 37
  38. 38. #codetokyo19B3 & #ccc_l5 BellSoft Liberica JDK 一般向け情報 種類・名称 参照先 導入・運用 ドキュメント 各リリースのダウンロードページから [installation guide]参照 リリースノート 各リリースのダウンロードページから [Release Notes]参照 * 修正内容はOracle JDKのリリースノートにリンク ライフサイクル 8/11 LTSは最低2026年まで *非公式な確認であり、サイト準備中とのこと 動作環境 リリースノート参照 動向把握 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)との統合に強み 『AdoptOpenJDKにOpenJFXをバンドルして欲しい要望に対してのまとめ』 • JetBrainsとの戦略的提携、Oracleとの提携?(ビルド番号などから推測) 38
  39. 39. #codetokyo19B3 & #ccc_l5 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, etc.) • TCK/JCKを通せていないが、独自のテストスイートで対応 39
  40. 40. #codetokyo19B3 & #ccc_l5 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)に注力 40
  41. 41. #codetokyo19B3 & #ccc_l5 その他注目しておきたい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 (JITにGraal採用でネイティブイメージ対応) 41 直接関係ないけど、こちらも適宜参照『VMの歩む道。 Dalvik、ART、そしてJava VM』 by @yy_yank さん
  42. 42. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 42
  43. 43. #codetokyo19B3 & #ccc_l5 Oracle JDK陣営とRed Hat主導のOpenJDK LTS陣営 (イメージ) 大半の修正は共通しており、Oracle JDKとOpenJDK LTSを近づけるよう努力はされている 43
  44. 44. #codetokyo19B3 & #ccc_l5 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月より前のアンケートと想定される 44
  45. 45. #codetokyo19B3 & #ccc_l5 JVM言語利用者向け簡易アンケート (日本) 『 (2019年4月時点) JVM言語を使う方がどのJDK/JVMを使うか?アンケートと考察まとめ』 https://togetter.com/li/1340853 Q1. 商用環境でScala, Kotlin, Clojure, Groovy などのJVM言語を使う方はJDK/JREは何を利用 しますか? Q2. 商用環境でJVM言語を使う方はJDK/JVM バージョンとして何をメインで使いますか? ? 45
  46. 46. #codetokyo19B3 & #ccc_l5 判断軸 • サポート - アップデート提供期間 - 商用サポートの有無 - 関連製品との動作保証 • 使いやすさ - インストーラ (特にWindowsクライアント) - 開発環境 - コンテナ対応 • どこで運用するか - サーバー (クラウド, オンプレミス) - クライアント - コンテナ - 組み込み 46
  47. 47. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション 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-12 2026-12 2019-09 英語 ? ライフタイムは非公式に確認 AdoptOpenJDK 2023-09 2022-09 2019-09 英語 △ 利用増加中だがTCKが難点 Amazon Corretto 2023-06 2024-08 - - △ 利用増加中? 最低期間なので、今後延長 される可能性は大いにありサポート • Oracle JDK/Liberica JDK以外は、基本的にRed Hat主導のOpenJDK LTSに依存 • Azul Zuluは、コミュニティ版でのアップデート提供期間の保証はなし • 総じて以前からのディストリビューションが強そうだが、将来は不明 47
  48. 48. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション インストーラ sdkman & chocolatey コンテナ (Docker) 備考 8 11 Oracle JDK ◎ ○ - △ Docker Storeのイメージは古い (Oracle Container RegistryもServer JRE 8 のみ) Oracle OpenJDK - - ◎ ○ LTSはないが最新版を利用可能 Red Hat OpenJDK ○ ○ - △ Red Hat Container Catalogで利用 Azul Zulu △ ◎ ◎ ◎ インストーラ・Dockerとも各種環境に注力 SapMachine - ○ ◎ ○ DockerのベースOSはUbuntuのみ BellSoft Liberica JDK ○ ◎ ○ ○ 現状AlpineのDockerイメージは中途半端 AdoptOpenJDK △ ○ ○ ◎ 一通り利用可能 Amazon Corretto ○ ◎ ○ ○ DockerのベースOSはAmazon Linux2のみ (Alpine対応は保留されている) 使いやすさ • JDK 8のインストーラは、既存のWindow用Oracle JRE 8との互換性を基準に評価 • JDK 11のインストーラは、多くのプラットフォームに対応しているかに注目 48
  49. 49. #codetokyo19B3 & #ccc_l5 [参考] 判断軸によるディストリビューションの比較(例) ディストリビューション クラウド オンプレミス クライアント コンテナ 組み込み 備考 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) ○ △ ◎ ○ Amazon Corretto AWS ○ △ ○ - どこで運用するか • オンプレミスのサーバ環境は、特にどれでも問題なし (対応プラットフォーム次第) • 既存クライアント環境との互換性を重視する場合は、Oracle JRE 8が妥当か 49
  50. 50. #codetokyo19B3 & #ccc_l5 アジェンダ 1. OpenJDKディストリビューションが出てきた背景 2. 誰がOpenJDKを作っているか 3. 各OpenJDKディストリビューションの特徴 4. OpenJDKディストリビューションの選び方 5. OpenJDKの支え方 50
  51. 51. #codetokyo19B3 & #ccc_l5 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を利用する (民法改正の影響なども考慮) - アプリケーションに応じて適切なプラットフォームを検討する 51
  52. 52. #codetokyo19B3 & #ccc_l5 [参考] JDKディストリビューションの他の選び方(例) • 例えば、好きなベンダー(ディストリビューター)のJDKを利用する e.g. OpenJDK本体に貢献しているベンダーを応援したい - Oracle JDK/Oracle OpenJDK - Red Hat OpenJDK - SapMachine - BellSoft Liberica JDK - IBM - Amazon Corretto • ディストリビューションの応援の仕方の例 - まずは使ってみる - 意見を伝えたり、フィードバックして改善してみる - Oracle Java SE Desktop Subscriptionを個人購入してみる 52
  53. 53. #codetokyo19B3 & #ccc_l5 コミュニティへの参加 • 勉強会、セミナーへの参加 - 各現場での啓蒙 - 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 さん 53
  54. 54. #codetokyo19B3 & #ccc_l5 Java/JVMエコシステムはこれまでと変わらず重要 • Javaはこれからますます進化を続ける - 半年単位での機能リリース - Project Panama, Valhalla, Loom - Quarkus, MicronautなどGraalVMを利用したフレームワーク • エコシステムは強力で重要不可欠 - 『有償化やEOLに関して誤解があるけど、様々なクラウドやサービス系企業で Java/JVMが使われ続けてるよって話』https://togetter.com/li/1342273 - 『SunからOracleに変わって10年経ったけど第三者から見てもJavaは心配ない よというポエム』https://togetter.com/li/1342209 54
  55. 55. #codetokyo19B3 & #ccc_l5 まとめ • 最適なOpenJDKディストリビューションは環境・状況に応じて異なる - 時代の変化にどれだけ追従していくか • セキュリティやライフサイクルの考慮 • サーバーサイドでの可搬性の確保や、クライアントでのカスタムJREの組み込み - サポートや動作保証をどう捉えるか • 利用するミドルウェアやライブラリ、JVM言語など • 有償サポートの利用有無や、法改正の影響を考慮 - どこで利用するか • 開発環境と運用環境のJDK種類・バージョンの統一 • クラウド、オンプレミス、クライアント、コンテナ、組み込み • - Java/JVMコミュニティやエコシステムの重要性 - Oracle JDK/JRE一強時代ではなく、個々に判断・選択する必要性 - 求められるのはディストリビューション利用者側の意識の変化 - OpenJDKなどのOSSは皆で参加し、育てていくもの 55
  56. 56. #codetokyo19B3 & #ccc_l5 ご清聴ありがとうございました 本セッションや資料は、Java関連コミュニティの方々や関係者各位も含め、 多くの皆様のご協力によって生まれたものです。改めて感謝を申し上げます。 56

×