Red Hat build of OpenJDK 21.0.1 のリリースノート
概要
はじめに
Red Hat build of OpenJDK (Open Java Development Kit) は、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 17 との相違点
Red Hat build of OpenJDK 21 には、以前の長期サポート (LTS) リリースである Red Hat build of OpenJDK 17 では利用できない機能拡張が多数含まれています。
Red Hat build of OpenJDK 21 に含まれる追加の Java Enhancement Proposal (JEP) の詳細は、JEPs in JDK 21 integrated since JDK 17 を参照してください。
第4章 非推奨でサポート対象外の Red Hat build of OpenJDK の機能
Red Hat build of OpenJDK 21 をインストールする前に、以下の非推奨およびサポート対象外の機能を確認してください。
- Windows パッケージ向け Red Hat build of OpenJDK 21 の JDK Mission Control
- Red Hat build of OpenJDK 21 の Windows インストーラーと zip アーカイブでは、JDK Mission Control (JMC) のディストリビューションが提供されなくなりました。Red Hat build of Cryostat 使用して、Red Hat OpenShift などのクラウドプラットフォームにデプロイされた Java アプリケーションの JFR 記録を管理できます。JMC の削除に関する詳細は、Red Hat ナレッジベースのアーティクル記事 Where is JDK Mission Control (JMC) in JDK 21? を参照してください。
- 削除予定の Finalization が非推奨となる
- このリリースでは、今後のリリースで削除される予定である Finalization が非推奨になります。詳細は、JEP 421: Deprecate Finalization for Removal を参照してください。
- エージェントの動的ロードを許可しない準備をする
- このリリースでは、実行中の JVM にエージェントが動的にロードされるときに警告が発行されます。エージェントの動的ロードは、今後のリリースではデフォルトで許可されない予定です。詳細は、JEP 451: Prepare to Disallow the Dynamic Loading of Agents を参照してください。
Red Hat は、32 ビットをサポートする builds of OpenJDK を提供していません。OpenJDK 21 では、Windows 32 ビット x86 サポートもアップストリームで非推奨となりました。この機能は今後のリリースで削除されます。詳細は、JEP 449: Deprecate the Windows 32-bit x86 Port for Removal を参照してください。
第5章 Red Hat build of OpenJDK 21 の新機能
Red Hat build of OpenJDK 21 の初期リリースには、Java アプリケーションの使用を強化する新機能が含まれています。
Red Hat build of OpenJDK 21 には、以下の新機能が含まれています。
- UTF-8 (デフォルト)
- 詳細は、JEP 400: UTF-8 by Default を参照してください。
- シンプルな Web サーバー
- 詳細は、JEP 408: Simple Web Server を参照してください。
- Java API ドキュメントのコードスニペット
- 詳細は、JEP 413: Code Snippets in Java API Documentation を参照してください。
- メソッドハンドルを使用したコアリフレクションの再実装
- 詳細は、JEP 416: Reimplement Core Reflection with Method Handles を参照してください。
- インターネットアドレス解決 SPI
- 詳細は、JEP 418: Internet-Address Resolution SPI を参照してください。
- Linux/RISC-V ポート
- 詳細は、JEP 422: Linux/RISC-V Port を参照してください。
- スコープ付きの値 (プレビュー機能)
- 詳細は、JEP 429: Scoped Values (Preview) を参照してください。
- 文字列テンプレート (プレビュー機能)
- 詳細は、JEP 430: String Templates (Preview) を参照してください。
- 順序付けられたコレクション
- 詳細は、JEP 431: Sequenced Collections を参照してください。
- 世代別 Z Garbage Collector (ZGC)
- 詳細は、JEP 439: Generational ZGC を参照してください。
- レコードパターン
- 詳細は、JEP 440: Record Patterns を参照してください。
- スイッチのパターンマッチング
- 詳細は、JEP 441: Pattern Matching for switch を参照してください。
- Foreign Function and Memory (FFM) API (3 番目のプレビュー)
- 詳細は、JEP 442: Foreign Function & Memory API (Third Preview) を参照してください。
- 名前のないパターンと変数 (プレビュー機能)
- 詳細は、JEP 443: Unnamed Patterns and Variables (Preview) を参照してください。
- 仮想スレッド
- 詳細は、JEP 444: Virtual Threads を参照してください。
- 名前のないクラスとインスタンスのメインメソッド (プレビュー機能)
- 詳細は、JEP 445: Unnamed Classes and Instance Main Methods (Preview) を参照してください。
- スコープ付きの値 (プレビュー)
- 詳細は、JEP 446: Scoped Values (Preview) を参照してください。
- Vector API (6 番目のインキュベーター)
- 詳細は、JEP 448: Vector API (Sixth Incubator) を参照してください。
- キーのカプセル化メカニズム API
- 詳細は、JEP 452: Key Encapsulation Mechanism API を参照してください。
- 構造化された同時実行 (プレビュー機能)
- 詳細は、JEP 453: Structured Concurrency (Preview) を参照してください。
第6章 Red Hat build of OpenJDK 21.0.1 のバグ修正
Red Hat build of OpenJDK 21.0.1 には、以下のバグ修正が含まれています。
有効な .zip
ファイルで Invalid CEN header
エラーを修正
Red Hat build of OpenJDK 21.0.0 では、.zip
ファイルの ZIP64
フィールドに追加の検証チェックが導入されました (JDK-8302483)。ただし、これらの追加チェックにより、Invalid CEN header (invalid zip64 extra data field size)
エラーメッセージを含む有効な .zip
ファイルでの検証が失敗しました。
この問題を修正するために、Red Hat build of OpenJDK 21.0.1 は長さゼロヘッダーと、一部の ZIP64
作成ツールが生成する追加パディングをサポートします。
次のサードパーティーツールも、.ZIP ファイル形式仕様への準拠を強化するためのパッチをリリースしました。
- Apache Commons Compress の Empty CEN Zip64 Extra Headers の修正が Commons Compress リリース 1.11 で修正されました
- Ant 1.10.14 で修正された空の CEN Zip64 追加ヘッダーに対する Apache Ant の修正
無効な追加ヘッダーの書き込みに関する BND の問題は BND 5.3 で修正されました
注記maven-bundle-plugin
5.1.5 には、BND 5.3 パッチが含まれています。
これらの改善された検証チェックにより、デプロイメントされた ZIP または JAR ファイルに問題が発生する場合は、ファイルがどのように作成されたか、および問題を解決するためのパッチが生成ソフトウェアから利用可能かどうかを確認してください。Red Hat build of OpenJDK 21.0.0 以降では、jdk.util.zip.disableZip64ExtraFieldValidation
システムプロパティーを true
に設定すると、これらのチェックを無効にできます。
JDK-8313765 (JDK バグシステム) を参照してください。
VM ハンドシェイクがメモリー上で停止した場合に、世代別 ZGC の使用時に JVM がハングする可能性がある潜在的なデッドロックを修正
Red Hat build of OpenJDK 21.0.0 では、次の状況がすべて同時に発生すると、JVM がハングする可能性があります。
- JVM のヒープメモリーが不足していました。
- ガベージコレクター (GC) は、メモリーを再利用するための再配置フェーズを開始したところです。
- JVM スレッドローカルハンドシェイクがオブジェクトの再配置を要求していました。
Red Hat build of OpenJDK 21.0.0 には、この潜在的なデッドロックを回避するための修正が導入されています。
JDK-8311981 (JDK Bug System) を参照してください。
先読みと後読みを含む正規表現パターンで java.util.regex.MatchResult
によってスローされる潜在的な例外を修正
Red Hat build of OpenJDK 21.0.0 では、Matcher$ImmutableMatchResult
でネストされたクラス (JDK-8132995) の最適化により、java.util.regex.Matcher.toMatchResult()
によって返されたインスタンスを使用するときに意図しない回帰が発生しました。この回帰は、グループを含む先読みアサーションと後読みアサーションを含む java.util.regex.Pattern
クラスで発生しました。これらのグループが一致の範囲外にある場合、これらのグループにアクセスするときに java.util.regex.MatchResult
は StringIndexOutOfBoundsException
をスローしました。
Red Hat build of OpenJDK 21.0.1 では、一致結果の一部として最小開始位置を計算し、String
オブジェクトを構築するときに最初の一致の位置ではなくこの最小開始位置を使用することで、この問題を解決します。
JDK-8312976 (JDK Bug System) を参照してください。
Certigna ルート CA 証明書の追加
Red Hat build of OpenJDK 21.0.1 では、cacerts
トラストストアに Certigna ルート証明書が含まれています。
- 名前: Certigna (Dhimyotis)
- エイリアス名: certignarootca
- 識別名: CN=Certigna Root CA、OU=0002 48146308100036、O=Dhimyotis、C=FR
JDK-8314960 (JDK Bug System) を参照してください。
jdk.jar.maxSignatureFileSize
システムプロパティーのデフォルト値の増加
Red Hat build of OpenJDK 21.0.0 では、Java アーカイブ (JAR) ファイルで署名関連のファイルに許可される最大バイト数を設定するための jdk.jar.maxSignatureFileSize
システムプロパティーが導入されました JDK-8300596)。デフォルトでは、jdk.jar.maxSignatureFileSize
プロパティーは 8000000 バイト (8 MB) に設定され、一部の JAR ファイルでは小さすぎていました。
Red Hat build of OpenJDK 21.0.1 では、jdk.jar.maxSignatureFileSize
プロパティーのデフォルト値が 16000000 バイト (16 MB) に増加します。
JDK-8312489 (JDK Bug System) を参照してください。
第7章 このリリースに関連するアドバイザリー
このリリースに含まれるバグ修正と CVE 修正を文書化するために、次のアドバイザリーが発行されます。
改訂日時: 2024-05-10