Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Red HatのOpenJDK

Red HatのOpenJDK

JJUGナイトセミナー2019年8月OpenJDK祭りのスライドです #jjug

99a8b1fb6431ecfacff67190b8ef939b?s=128

Norito Agetsuma

August 27, 2019
Tweet

More Decks by Norito Agetsuma

Other Decks in Programming

Transcript

  1. Red HatのOpenJDK 2019-08-27 JJUGナイトセミナーOpenJDK祭り レッドハット株式会社 上妻 宜人

  2. 上妻 宜人 (あげつま のりと) • JBossシニアテクニカルサポートエンジニア • サポートケースの中の人 • JBossをデバッグして技術的な課題を解決する仕事

  3. 増え続けるOpenJDK ディストリビューション

  4. 各種OpenJDKには 元を辿るとRed Hatがメンテナンスを リードするコードが含まれます JDKの “Master” 相当 https://hg.openjdk.java.net/jdk/jdk OpenJDK12 maintenance

    https://hg.o.j.n/jdk-updates/jdk12u OpenJDK11 maintenance https://hg.o.j.n/jdk-updates/jdk11u OpenJDK8 maintenance https://hg.o.j.n/jdk8u/jdk8u 重要バグの backport 機能追加とバグ修正 backport Oracleがリード Red HatがOracleから 引き継いでリード 各種OpenJDKバイナリ (そのままビルド or 機能を付け加えてビルド)
  5. Red Hat OpenJDK 特徴

  6. 特徴 • RHEL/JBossにバンドル • 5年超の長期サポート • 日本語サポート窓口 (平日営業時間帯, 夜間休日帯は英語)

  7. 本日のテーマ

  8. Red HatのOpenJDK

  9. 本日の内容 • Red HatとOpenJDK • ダウンロードとインストール • Oracle JDKとの違い •

    サポート • FAQ • まとめ
  10. Red HatとOpenJDK • 2007年参画からOpenJDKに貢献 • 2009年からRHELにバンドルする形式で OpenJDKバイナリの提供を開始

  11. 2006 2007 JavaOne2006でSunがJavaのOSS化を発表 SunとContributor Agreementと TCKライセンス契約を締結して開発に参画 2009 RHEL5.3からOpenJDK6をバンドル 1990s〜 GNU

    Classpath や gcj による Javaフリーソフトウェア化の動き (Red HatのJava Platform Lead Engineerはこの頃から貢献) IcedTeaプロジェクト開始 OpenJDKビルドをフリーソフトウェアで実現 2012 RHELにOpenJDK7をバンドル (Oracle JDK7 GAの約11ヶ月後)
  12. 2014 RHELにOpenJDK8をバンドル (Oracle JDK8 GAリリースの約7ヶ月後) 2013 OracleによるJDK6無償バイナリEOLに伴い Red HatがOpenJDK6のリーダシップを引き継ぐ 2015

    OpenJDK7のリーダシップを引き継ぐ 2018 RHELにOpenJDK11をバンドル (Oracle JDK11 GAリリースの約1ヶ月後) OpenJDK for Windowsのサポート開始 2019 OpenJDK8と11のリーダシップを引き継ぐ
  13. 10年前から安定して OpenJDKバイナリを提供

  14. Red HatのOpenJDK貢献 • OSSのみでOpenJDKのビルド/実行を実現 • IcedTeaプロジェクトの成果 • OpenJDK6はビルドに非OSSのSunJDKが必要だった 各種LinuxディストリビューションにJDKバンドルを実現 •

    Shenandoah GC (JEP189) • Stop-the-worldを数十ミリに抑える低遅延GC • OpenJDK12に実験的機能としてマージ • Oracle JDK / Oracle OpenJDKでは無効化されている JDK-821530 Disable shenandoah in Oracle builds https://bugs.openjdk.java.net/browse/JDK-8215030
  15. Red HatのOpenJDK貢献 • Linux/AArch64 Port (JEP237) • JITコンパイラをARMv8以降のCPUに対応させる • JDK9にマージ

    • LTSバージョンのメンテナンスリード • OpenJDK7/8/11の継続メンテナンス • 各社OpenJDKバイナリのベースとなるソースコード
  16. 本日の内容 • Red HatとOpenJDK • ダウンロードとインストール • Oracle JDKとの違い •

    サポート • FAQ • まとめ
  17. OpenJDKのダウンロード • 開発用途(無償)と商用用途(要サブスクリプション契約) • ダウンロードページが異なるため注意 Red Hat Developer 開発用途 Windows版のみ

    https://developers.redhat.com/products/openjdk/ download https://access.redhat.com/jbossnetwork/restricted/listSoftware.html? downloadType=distributions&product=core.service.openjdk&version= 1.2.0&productChanged=yes Customer Portal or RHEL yumリポジトリ Windows版とRHEL版
  18. インストール • RHEL • yum または tar ball (2019-08リリース) •

    tarにより特権なしで任意ディレクトリにインストール可能 • Windows • msiインストーラ または zip
  19. RHELの場合 $ sudo yum install java-1.8.0-openjdk-headless # JREからaudio/video機能を除く $ sudo

    yum install java-1.8.0-openjdk # JRE $ sudo yum install java-1.8.0-openjdk-devel # JDK。javac, jcmdを含む。 $ sudo yum install java-11-openjdk-headless $ sudo yum install java-11-openjdk $ sudo yum install java-11-openjdk-devel $ sudo yum install java-11-openjdk-jmods # jlinkに必要な$JAVA_HOME/jmods OpenJDK11 OpenJDK8 • 複数RPMに分かれて構成 • OpenJDK11でもJRE相当のみがインストール可能 • トラブルに備えてJDKインストールがおすすめ
  20. 本日の内容 • Red HatとOpenJDK • ダウンロードとインストール • Oracle JDKとの違い •

    サポート • FAQ • まとめ
  21. Oracle JDKとの違い Oracle JDK8 Red Hat OpenJDK8 Red Hat OpenJDK11

    JDK Mission Control JDKにバンドル - Windows: バンドル RHEL: SoftwareCollection リポジトリで配布 JDK Flight Recorder 有償機能 - (開発コミュニティ作業中*1) あり IcedTea-Web for Windows あり Betaリリース - Applet あり - - JavaFX あり - (要望は上がっている*2) - Shenandoah GC - RHEL7.5+フルサポート (-XX:+UseShenandoahGC) RHEL7.6+ 登録済みルートCA証明書 JDKバンドル OSのca-certificates パッケージを利用 OpenJDK8と同じ • GUIアプリは要注意 (JavaFX, Applet がない) 詳しくはOracle JDK vs OpenJDK https://access.redhat.com/solutions/2489791 *1 : JDK-8223147 JFR Backport https://bugs.openjdk.java.net/browse/JDK-8223147 *2 : Red Hat Bugzilla Bug 1275610 - RFE: JavaFX https://bugzilla.redhat.com/show_bug.cgi?id=1275610
  22. IcedTea-Web for Windows (β) • デモ

  23. Oracle JDKからの移行 • サーバサイドの場合は大半はそのままで動く • CAルート証明書差分でハマる • OpenJDK8 Swingアプリでフォントがぼやける Fonts

    on Swing application "blurry" when using OpenJDK https://access.redhat.com/solutions/4087831 • 問題が解決しない場合はサポートケースを使う • 自動テストを通す • テストがないコードでは、JDKのLTSがあっても 恩恵が受けれず塩漬けになる可能性が高い
  24. 本日の内容 • Red HatとOpenJDK • Oracle JDKとの違い • サポートと価格 •

    FAQ • まとめ
  25. 利用には要サブスクリプション • RHEL or ミドルウェア or OpenShift に含まれる • Windows向けOpenJDKサブスクリプション有

  26. Windows向けサブスクリプション • サーバ環境向け • Red Hat build of OpenJDK for

    Servers Standard または Premium (10/200/2000 cores) • デスクトップ環境向け 例: Swingアプリケーション • Red Hat build of OpenJDK for Workstations Standard (50/1000/10000 Clients) Premium (50/1000/10000/Unlimited Clients) • デスクトップ向けの方が割安 • お見積もりは弊社営業窓口まで
  27. サポート • ライフサイクルに応じたアップデートの提供 • ナレッジベースへのアクセス • 技術問い合わせ • Standard(平日9-17) or

    Premium (重大度高は24 x 365) • スコープはプロダクションサポート https://access.redhat.com/support/offerings/production/soc • サポート例: バグや障害調査、設定方法、バックポートのリクエスト • サポートされない例: アプリケーションデバッグ、内部実装レクチャ、改造バイナリ
  28. サポート期間 https://access.redhat.com/articles/1299013 から引用。最新状況はリンク先を参照してください。 • OpenJDKバージョンごとに規定 • この文脈の”サポート”とは • 修正リリース提供、サポートケースによるお問い合わせ RH

    JDK7 Extended 2022年09月 (残り3年1ヶ月) 2020年06月 (残り10ヶ月) Premier Red Hat JDK8 Extended 2025年03月 (残り5年7ヶ月) 2023年06月 (残り3年10ヶ月) 2022年03月 Premier Red Hat JDK11 2026年09月 (残り7年1ヶ月) 2024年10月 (残り5年2ヶ月) 2023年09月 Extended 現在 (2019/8) RH O RH O RH O
  29. 脆弱性アップデートへの追従 • Red HatはOracleと脆弱性情報を共有 • OpenJDK Vulnerability Group • 重大度が低いと追従に時間が掛かることもある

    2018-10-16 8u191 2018-10-17 (+1day) 2019-01-15 8u201 / 11.0.1 OracleJDK CPU release Red Hat Errata - OpenJDK 2019-02-26 for RHEL6 2019-02-28 for RHEL7 (+1month) 2019-04-16 8u211 / 11.0.2 令和対応 2019-04-17 (+1day) 2019-07-22 (+1week) 2019-07-16 8u212 / 11.0.3 重大度の高くない CVE-2019-2422のみ修正
  30. サポート対象OS OpenJDK7 OpenJDK8 OpenJDK11 RHEL6 6.3 以降 6.6 以降 -

    RHEL7 7.0 以降 7.1 以降 7.6 以降 RHEL8 - 8.0 以降 8.0 以降 Windows 7,8,10 64bit - 提供あり (マイナーver指定なし) 提供あり (マイナーver指定なし) Windows Server 2012 R2 / 2016 (2019は今後追加予定) - 提供あり (マイナーver指定なし) 提供あり (マイナーver指定なし) • RHEL と Windows (2018年8月から) • RHELは規定マイナーバージョン以降の組合せのみサポート • Windowsは64bitバイナリのみサポート https://access.redhat.com/articles/1299013 から引用。最新状況はリンク先を参照してください。
  31. コンテナのサポート • Red Hat Container CatalogでJavaイメージ配布 • OpenJDK 11 Image

    for Java Applications on RHEL8 https://access.redhat.com/containers/?tab=overview#/registry.access.redhat.com/openjdk/openjdk-11-rhel8 • 利用には要RHEL or OpenShiftサブスクリプション • Linuxの場合はRHELのみがサポート対象 • サポート対象外の例 • ホストOS/ベースイメージがRHEL以外 (Fedora, CentOS, Ubuntu, Amazon Linux, Alpine Linux など)
  32. 本日の内容 • Red HatとOpenJDK • Oracle JDKとの違い • サポートと価格 •

    FAQ • まとめ
  33. FAQ1: ソースコードはどこ? • ShenandoahのOpenJDKリポジトリ + patchから RPMファイルをビルド • 詳細はsrpmに含まれる java-1.8.0-openjdk.spec

    を確認 JDKの “Master” 相当 https://hg.openjdk.java.net/jdk/jdk OpenJDK12 jdk-updates/jdk12u OpenJDK8 jdk8u/jdk8u Shenandoah-11 shenadoah/jdk11 Shenandoah-8 shenadoah/jdk8 OpenJDK11 jdk-updates/jdk11u Shenandoah-8 + aarch64 aarch64-port/jdk8u-shenandoah/ Shenandoah development shenadoah/jdk JDKの主要な開発 バグ修正 Shenandoahの 主要な開発 バグ修正 機能追加とバグ修正 バグ修正のbackport Shenandoah修正の backport Red Hat OpenJDK11 Red Hat OpenJDK8
  34. FAQ2: ホットフィックスは? • 常に最新マイナーバージョンのみが保守対象 • 古いバージョンへの個別パッチは提供されない • NG : JDK8u202がクラッシュするので個別パッチが欲しい

    • OK : JDK12で修正されている JDK-xxxxx のバグを踏んだので Red Hat OpenJDK 8 or 11にバックポートして欲しい (時期のお約束はできない)
  35. FAQ3: パッチが出ても気づきません • メールによる新しいリリースの通知が可能 https://www.redhat.com/wapps/ugc/protected/notif.html

  36. FAQ3: パッチが出ても気づきません • サンプルの通知メール https://gist.github.com/nagetsum/3450250a15abe2be4822b5c6225116c0

  37. 本日の内容 • Red HatとOpenJDK • ダウンロードとインストール • Oracle JDKとの違い •

    サポート • FAQ • まとめ
  38. まとめ • Red Hatは老舗OpenJDKディストリビュータ • OpenJDK7, 8, 11の保守を主導してLTS版を提供 • RHEL/ミドルウェア付属のため追加コスト不要

    • 最近はWindows向けOpenJDKも提供開始