Red Hat build of OpenJDK 21.0.3 のリリースノート
概要
はじめに
Open Java Development Kit (OpenJDK) は、Java Platform Standard Edition (Java SE) のオープンソース実装です。Red Hat build of OpenJDK は、8u、11u、17u、21u の 4 つのバージョンで利用できます。
Red Hat build of OpenJDK 向けパッケージは、Red Hat Enterprise Linux および Microsoft Windows で利用でき、Red Hat Ecosystem Catalog の JDK および JRE として同梱されています。
Red Hat build of OpenJDK ドキュメントへのフィードバック
エラーを報告したり、ドキュメントの改善を提案したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 次のリンクをクリックして チケットを作成します。
- Summary に課題の簡単な説明を入力します。
- Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
- Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 Red Hat build of OpenJDK のサポートポリシー
Red Hat は、Red Hat build of OpenJDK の一部のメジャーバージョンを製品でサポートします。一貫性を保つために、これらのバージョンは長期サポート (LTS) として指定されている Oracle JDK バージョンと同様のままとなります。
Red Hat build of OpenJDK のメジャーバージョンは、最初に導入された時点から少なくとも 6 年間サポートされます。詳細は、OpenJDK のライフサイクルおよびサポートポリシー を参照してください。
RHEL 6 のライフサイクルは 2020 年 11 月に終了します。このため、Red Hat build of OpenJDK はサポート対象設定として RHEL 6 をサポートしません。
第2章 アップストリームの OpenJDK 21 との相違点
Red Hat Enterprise Linux の OpenJDK には、Red Hat build of OpenJDK のアップストリームディストリビューションの構造上の変更が数多く含まれています。Microsoft Windows バージョンの Red Hat build of OpenJDK は、Red Hat Enterprise Linux の更新にできる限り従います。
以下は、Red Hat build of OpenJDK 21 における最も注目すべき変更のリストです。
- FIPS のサポート。Red Hat build of OpenJDK 21 は、RHEL が FIPS モードであるかを自動的に検出し、Red Hat build of OpenJDK 21 がそのモードで動作するように自動的に設定します。この変更は、Microsoft Windows 向けの Red Hat build of OpenJDK ビルドには適用されません。
- 暗号化ポリシーのサポート。Red Hat build of OpenJDK 21 は、有効な暗号化アルゴリズムとキーサイズ制約のリストを RHEL システム設定から取得します。これらの設定コンポーネントは、トランスポート層セキュリティー (TLS) 暗号化プロトコル、証明書パス検証、および署名された JAR によって使用されます。さまざまなセキュリティープロファイルを設定して、安全性と互換性のバランスをとることができます。この変更は、Microsoft Windows 向けの Red Hat build of OpenJDK ビルドには適用されません。
-
src.zip
ファイルには、Red Hat build of OpenJDK に同梱されるすべての JAR ライブラリーのソースが含まれます。 - RHEL の Red Hat build of OpenJDK は、タイムゾーン情報のソースとして、システム全体のタイムゾーンデータファイルを使用します。
- RHEL の Red Hat build of OpenJDK は、システム全体の CA 証明書を使用します。
- Microsoft Windows の Red Hat build of OpenJDK には、RHEL で利用可能な最新のタイムゾーンデータが含まれています。
- Microsoft Windows 向け Red Hat build of OpenJDK は、RHEL から入手可能な最新の CA 証明書を使用します。
関連情報
- Improve system FIPS detection (RHEL Planning Jira) を参照してください。
- システム全体の暗号化ポリシーの使用 (RHEL ドキュメンテーション) を参照してください。
第3章 Red Hat build of OpenJDK の機能
最新の Red Hat build of OpenJDK 21 リリースには、新機能が含まれる可能性があります。さらに、最新リリースは、以前の Red Hat build of OpenJDK 21 リリースに由来する機能を強化、非推奨、または削除する可能性があります。
その他の変更点やセキュリティー修正は、OpenJDK 21.0.3 Released を参照してください。
Red Hat build of OpenJDK の機能強化
Red Hat build of OpenJDK 21 では、以前のリリースの Red Hat build of OpenJDK で作成された機能に拡張が行われました。
Java コンパイラーは、レコードパターンの final
キーワードを拒否することにより、Java 言語仕様に準拠しています。
Java 21 リリースでは、switch ステートメントのパターン一致で Java 言語が強化されました。ただし、Red Hat build of OpenJDK 21 では、レコードパターンの前に final
キーワードを使用できる javac
コンパイラーが提供されています (例: case final R(…) ->
)。final
キーワードの使用は Java 言語仕様に違反しています。
Red Hat build of OpenJDK 21.0.3 では、javac
コンパイラーは Java 言語仕様に合わせて調整されています。この機能強化は、switch ステートメントに final
キーワードを含むプログラムがコンパイルに失敗することを意味します。このような状況では、プログラムが正常にコンパイルされるようにするには、final
キーワードを削除する必要があります。
JDK-8317300 (JDK Bug System) を参照してください。
XML Security for Java が Apache Santuario 3.0.3 に更新
Red Hat build of OpenJDK 21.0.3 では、XML 署名の実装は Apache Santuario 3.0.3 に基づいています。
この機能強化により、次の 4 つの SHA3 ベースの RSA-MGF1 SignatureMethod
アルゴリズムが導入されました。
-
SHA3_224_RSA_MGF1
-
SHA3_256_RSA_MGF1
-
SHA3_384_RSA_MGF1
-
SHA3_512_RSA_MGF1
更新リリースで javax.xml.crypto.dsig.SignatureMethod
API を変更して新しいアルゴリズムに定数値を提供するため、これらのアルゴリズムには次の同等の文字列リテラル値を使用します。
-
http://www.w3.org/2007/05/xmldsig-more#sha3-224-rsa-MGF1
-
http://www.w3.org/2007/05/xmldsig-more#sha3-256-rsa-MGF1
-
http://www.w3.org/2007/05/xmldsig-more#sha3-384-rsa-MGF1
-
http://www.w3.org/2007/05/xmldsig-more#sha3-512-rsa-MGF1
JDK-8319124 (JDK Bug System) を参照してください。
製品スイッチとして利用できる TrimNativeHeapInterval
オプション
Red Hat build of OpenJDK 21.0.3 では、公式の製品スイッチとして -XX:TrimNativeHeapInterval=ms
オプションが提供されます。この機能強化により、JVM はサポートされているプラットフォーム上で指定された間隔 (ミリ秒単位) でネイティブヒープをトリミングできるようになります。現在、この機能強化がサポートされているプラットフォームは、glibc
を搭載した Linux のみです。
TrimNativeHeapInterval=0
を設定するとトリミングを無効にすることができます。トリミング機能はデフォルトで無効になっています。
JDK-8325496 (JDK Bug System) を参照してください。
SystemTray.isSupported()
メソッドが、ほとんどの Linux デスクトップで false
を返す
Red Hat build of OpenJDK 21.0.3 では、SystemTray
API を正しくサポートしていないシステムで、java.awt.SystemTray.isSupported()
メソッドが false
を返します。この機能拡張は、SystemTray
API 仕様に準拠しています。
SystemTray
API は、システムデスクトップのタスクバーと対話して通知を提供します。SystemTray
には、アプリケーションを表すアイコンが含まれている場合もあります。基盤となるプラットフォームの問題により、タスクバーアイコンの GNOME デスクトップサポートが数年間正しく機能しませんでした。このプラットフォームの問題は、GNOME デスクトップで SystemTray
サポートを提供する JDK の機能に影響します。この問題は通常、GNOME Shell 44 以前を使用するシステムに影響します。
一部のシステムでは、SystemTray
の正しいサポートが不足していることが長年の問題となっているため、影響を受けるシステムで false
を返すこの API 強化は、ユーザーへの影響を最小限に抑えられると考えられます。
JDK-8322750 (JDK Bug System) を参照してください。
Certainly R1 と E1 ルート証明書が追加される
Red Hat build of OpenJDK 21.0.3 では、cacerts
トラストストアに 2 つの Certainly ルート証明書が含まれています。
- 証明書 1
- 名前: Certainly
- エイリアス名: certainlyrootr1
- 識別名: CN=Certainly Root R1、O=Certainly、C=US
- 証明書 2
- 名前: Certainly
- エイリアス名: certainlyroote1
- 識別名: CN=Certainly Root E1、O=Certainly、C=US
JDK-8321408 (JDK Bug System) を参照してください。
若いコレクションルートの大規模オブジェクト配列の正確な並列スキャン
若い世代のオブジェクトの収集中に、Parallel Garbage Collector (GC) は、古い世代のオブジェクトを 64 kB のストライプに分割し、若い世代への参照をスキャンします。これらのストライプはワーカースレッドに割り当てられ、並列でスキャンを実行します。
Red Hat build of OpenJDK 21 の以前のリリースでは、ワーカースレッドが独自のストライプに制限されていませんでした。この制約の欠如により、並列処理に制限が課せられました。たとえば、大きなオブジェクトが特定のワーカースレッドに割り当てられたストライプで開始した場合、このスレッドは複数のストライプにわたって何千もの参照を持つオブジェクトをスキャンすることになる可能性があります。
Red Hat build of OpenJDK 21.0.3 は、各ワーカースレッドを割り当てたストライプに制限します。各スレッドは、大きなオブジェクト配列の重要な部分のみを処理するようになりました。大きなオブジェクト配列が存在する場合、Parallel GC の一時停止は、Garbage-First (G1) コレクターの一時停止と同様になります。場合によっては、この機能強化により一時停止の長さが 75-80% 短縮されます。たとえば、以前のリリースでは 100 ミリ秒の一時停止でしたが、このリリースでは 20 ミリ秒の一時停止に短縮されます。
JDK-8310031 (JDK Bug System) を参照してください。
ZGC およびデフォルト以外の ObjectAlignmentInBytes 値を使用した場合の潜在的な JVM の障害を修正
Red Hat build of OpenJDK 21 の以前のリリースでは、-XX:+UseZGC
オプションおよび -XX:ObjectAlignmentInBytes
のデフォルト以外の値を指定して JVM を実行すると、JVM の失敗や誤作動につながる場合がありました。この問題は、ZBarrierSet::clone_obj_array
がオブジェクト配列の末尾のパディングを無視したために発生しました。
Red Hat build of OpenJDK 21.0.3 ではこの問題が解決され、JVM の実行時に Z Garbage Collector (ZGC) と Java オブジェクトアライメントのデフォルト以外の値を使用する場合でも、JVM を正常に実行できるようになりました。
JDK-8325074 (JDK Bug System) を参照してください。
第4章 このリリースに関連するアドバイザリー
このリリースに含まれるバグ修正と CVE 修正を文書化するために、次のアドバイザリーが発行されます。
改訂日時: 2024-05-10