Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

各種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 機能を付け加えてビルド)

Slide 5

Slide 5 text

Red Hat OpenJDK 特徴

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

本日のテーマ

Slide 8

Slide 8 text

Red HatのOpenJDK

Slide 9

Slide 9 text

本日の内容 ● Red HatとOpenJDK ● ダウンロードとインストール ● Oracle JDKとの違い ● サポート ● FAQ ● まとめ

Slide 10

Slide 10 text

Red HatとOpenJDK ● 2007年参画からOpenJDKに貢献 ● 2009年からRHELにバンドルする形式で OpenJDKバイナリの提供を開始

Slide 11

Slide 11 text

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ヶ月後)

Slide 12

Slide 12 text

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のリーダシップを引き継ぐ

Slide 13

Slide 13 text

10年前から安定して OpenJDKバイナリを提供

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Red HatのOpenJDK貢献 ● Linux/AArch64 Port (JEP237) ● JITコンパイラをARMv8以降のCPUに対応させる ● JDK9にマージ ● LTSバージョンのメンテナンスリード ● OpenJDK7/8/11の継続メンテナンス ● 各社OpenJDKバイナリのベースとなるソースコード

Slide 16

Slide 16 text

本日の内容 ● Red HatとOpenJDK ● ダウンロードとインストール ● Oracle JDKとの違い ● サポート ● FAQ ● まとめ

Slide 17

Slide 17 text

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版

Slide 18

Slide 18 text

インストール ● RHEL ● yum または tar ball (2019-08リリース) ● tarにより特権なしで任意ディレクトリにインストール可能 ● Windows ● msiインストーラ または zip

Slide 19

Slide 19 text

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インストールがおすすめ

Slide 20

Slide 20 text

本日の内容 ● Red HatとOpenJDK ● ダウンロードとインストール ● Oracle JDKとの違い ● サポート ● FAQ ● まとめ

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

IcedTea-Web for Windows (β) ● デモ

Slide 23

Slide 23 text

Oracle JDKからの移行 ● サーバサイドの場合は大半はそのままで動く ● CAルート証明書差分でハマる ● OpenJDK8 Swingアプリでフォントがぼやける Fonts on Swing application "blurry" when using OpenJDK https://access.redhat.com/solutions/4087831 ● 問題が解決しない場合はサポートケースを使う ● 自動テストを通す ● テストがないコードでは、JDKのLTSがあっても 恩恵が受けれず塩漬けになる可能性が高い

Slide 24

Slide 24 text

本日の内容 ● Red HatとOpenJDK ● Oracle JDKとの違い ● サポートと価格 ● FAQ ● まとめ

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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) ● デスクトップ向けの方が割安 ● お見積もりは弊社営業窓口まで

Slide 27

Slide 27 text

サポート ● ライフサイクルに応じたアップデートの提供 ● ナレッジベースへのアクセス ● 技術問い合わせ ● Standard(平日9-17) or Premium (重大度高は24 x 365) ● スコープはプロダクションサポート https://access.redhat.com/support/offerings/production/soc ● サポート例: バグや障害調査、設定方法、バックポートのリクエスト ● サポートされない例: アプリケーションデバッグ、内部実装レクチャ、改造バイナリ

Slide 28

Slide 28 text

サポート期間 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

Slide 29

Slide 29 text

脆弱性アップデートへの追従 ● 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のみ修正

Slide 30

Slide 30 text

サポート対象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 から引用。最新状況はリンク先を参照してください。

Slide 31

Slide 31 text

コンテナのサポート ● 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 など)

Slide 32

Slide 32 text

本日の内容 ● Red HatとOpenJDK ● Oracle JDKとの違い ● サポートと価格 ● FAQ ● まとめ

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

FAQ2: ホットフィックスは? ● 常に最新マイナーバージョンのみが保守対象 ● 古いバージョンへの個別パッチは提供されない ● NG : JDK8u202がクラッシュするので個別パッチが欲しい ● OK : JDK12で修正されている JDK-xxxxx のバグを踏んだので Red Hat OpenJDK 8 or 11にバックポートして欲しい (時期のお約束はできない)

Slide 35

Slide 35 text

FAQ3: パッチが出ても気づきません ● メールによる新しいリリースの通知が可能 https://www.redhat.com/wapps/ugc/protected/notif.html

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

本日の内容 ● Red HatとOpenJDK ● ダウンロードとインストール ● Oracle JDKとの違い ● サポート ● FAQ ● まとめ

Slide 38

Slide 38 text

まとめ ● Red Hatは老舗OpenJDKディストリビュータ ● OpenJDK7, 8, 11の保守を主導してLTS版を提供 ● RHEL/ミドルウェア付属のため追加コスト不要 ● 最近はWindows向けOpenJDKも提供開始