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

Red HatのOpenJDK

Red HatのOpenJDK

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

Norito Agetsuma

August 27, 2019
Tweet

More Decks by Norito Agetsuma

Other Decks in Programming

Transcript

  1. 各種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 機能を付け加えてビルド)
  2. 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ヶ月後)
  3. 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のリーダシップを引き継ぐ
  4. 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
  5. Red HatのOpenJDK貢献 • Linux/AArch64 Port (JEP237) • JITコンパイラをARMv8以降のCPUに対応させる • JDK9にマージ

    • LTSバージョンのメンテナンスリード • OpenJDK7/8/11の継続メンテナンス • 各社OpenJDKバイナリのベースとなるソースコード
  6. 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版
  7. インストール • RHEL • yum または tar ball (2019-08リリース) •

    tarにより特権なしで任意ディレクトリにインストール可能 • Windows • msiインストーラ または zip
  8. 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インストールがおすすめ
  9. 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
  10. Oracle JDKからの移行 • サーバサイドの場合は大半はそのままで動く • CAルート証明書差分でハマる • OpenJDK8 Swingアプリでフォントがぼやける Fonts

    on Swing application "blurry" when using OpenJDK https://access.redhat.com/solutions/4087831 • 問題が解決しない場合はサポートケースを使う • 自動テストを通す • テストがないコードでは、JDKのLTSがあっても 恩恵が受けれず塩漬けになる可能性が高い
  11. 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) • デスクトップ向けの方が割安 • お見積もりは弊社営業窓口まで
  12. サポート • ライフサイクルに応じたアップデートの提供 • ナレッジベースへのアクセス • 技術問い合わせ • Standard(平日9-17) or

    Premium (重大度高は24 x 365) • スコープはプロダクションサポート https://access.redhat.com/support/offerings/production/soc • サポート例: バグや障害調査、設定方法、バックポートのリクエスト • サポートされない例: アプリケーションデバッグ、内部実装レクチャ、改造バイナリ
  13. サポート期間 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
  14. 脆弱性アップデートへの追従 • 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のみ修正
  15. サポート対象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 から引用。最新状況はリンク先を参照してください。
  16. コンテナのサポート • 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 など)
  17. 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
  18. FAQ2: ホットフィックスは? • 常に最新マイナーバージョンのみが保守対象 • 古いバージョンへの個別パッチは提供されない • NG : JDK8u202がクラッシュするので個別パッチが欲しい

    • OK : JDK12で修正されている JDK-xxxxx のバグを踏んだので Red Hat OpenJDK 8 or 11にバックポートして欲しい (時期のお約束はできない)