
2026/03/18 3:44
Java 26 が登場しました。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要:
Java 26 は、パフォーマンス、安全性、および開発者のエルゴノミクスを向上させつつ、Project Valhalla の基盤を築くことに焦点を当てた一連の拡張機能を提供します。以下の10件のJEPが含まれます:
- JEP 516 – Ahead‑of‑Time Object Caching(GC 依存しない論理インデックスを追加;
で強制可能)。-XX:+AOTStreamableObjects- JEP 522 – G1 GC Improvements(第2カードテーブル、5–15% のスループット向上、約0.2% のヒープオーバーヘッド)。
- JEP 517 – HTTP/3 Support in HttpClient (
を明示的に指定、4 つのネゴシエーション戦略)。HttpClient.Version.HTTP_3- JEP 524 – PEM Encoder/Decoder(PEMEncoder/PEMDecoder API、オプションで暗号化/復号化をサポート)。
- JEP 525 – Structured Concurrency (
、シャットダウンポリシー、新しい Joiner メソッド)。StructuredTaskScope- JEP 526 – LazyConstant (
と遅延コレクションファクトリー)。LazyConstant<T>- JEP 529 – Vector API (Eleventh Incubator)(x64/AArch64 上で SIMD をサポート、
、FloatVectorなど)。DoubleVector- JEP 530 – Pattern Matching for Primitives (
、switch、レコードパターンにプリミティブを拡張し、支配チェックを厳密化)。instanceof- JEP 500 – Final‑Field Mutation Deprecation(警告を出す;将来のリリースでは例外をスロー)。
- JEP 504 – Applet API Removal (
パッケージ全体を削除)。java.applet
このリリースは、PEM ハンドリング、Structured Concurrency、Lazy Constants、Vector API、および switch 文のパターンマッチングといった機能もプレビューしています。
影響: 開発者は GC スループットの向上、HTTP/3 ネットワーキング、安全なコーディング実践(最終フィールドのミューテーション禁止)、高性能ベクトル演算から恩恵を受けることができます。エンタープライズでは、アプレットや unsafe final フィールドのミューテーションに依存するコードを更新し、将来のリリースとの互換性を保つ必要があります。これらの JEP が築いた基盤は、Java 26 を Project Valhalla の価値型機能への堅牢な土台として位置づけます。
本文
Java 26 – 主な機能ハイライト
JEP概要
| JEP | タイトル | ステータス | プロジェクト | 機能種別 | Java 25以降の変更 |
|---|---|---|---|---|---|
| 500 | Finalを本当にFinalにする準備 | コアライブラリ | 廃止 | 警告 | |
| 504 | Applet APIの削除 | クライアントライブラリ | 廃止 | 廃止 | |
| 516 | 任意GCでのAOTオブジェクトキャッシュ | HotSpot | パフォーマンス | 新機能 | |
| 517 | HTTP Client APIへのHTTP/3対応 | コアライブラリ | 拡張 | 新機能 | |
| 522 | G1 GC:同期を減らしてスループット向上 | HotSpot | パフォーマンス | 新機能 | |
| 524 | 暗号オブジェクトのPEMエンコーディング | セキュリティライブラリ | セキュリティ | 小規模 | |
| 525 | Structured Concurrency | Loom | 並行性 | 小規模 | |
| 526 | Lazy Constants | コアライブラリ | 新API | 大規模 | |
| 529 | Vector API | Panama | 新API | - | |
| 530 | パターン、instanceof、switchでのプリミティブ型 | Amber | 言語 | 小規模 |
新機能
HotSpot
JEP 516 – 任意GCでのAOTオブジェクトキャッシュ
- 問題点:キャッシュされたオブジェクトは GC 固有の形式で保持され、同じ GC でしか再利用できませんでした。
- 解決策:メモリアドレスではなく 論理インデックス を使ってキャッシュします。ロード時にインデックスを実際のアドレスへ変換し、ZGC・Shenandoah 等任意 GC で利用可能です。
- 使用方法
か 32 GB 超のヒープでトレーニング → 新しい GC 非依存形式でキャッシュ。-XX:+UseCompressedOops- 強制的に新形式を使う場合:
。-XX:+AOTStreamableObjects
JEP 522 – G1 GC:同期を減らしてスループット向上
- 問題点:G1 は最適化スレッドとアプリケーションスレッドを単一のカードテーブルで同期させ、スループットを低下させていました。
- 解決策:2 つのカードテーブルを導入し、アプリケーションスレッドは同期なしで1つを書き込み、最適化スレッドはもう1つを処理します。ポーズ時間目標が逸脱する恐れがある場合にテーブルを原子操作で交換。
- 効果:頻繁な参照更新のワークロードでは 5–15 % のスループット向上、x64 で最大 5 % 追加。
コアライブラリ
JEP 517 – HTTP Client APIへのHTTP/3対応
- 概要:
とHttpClient.Version.HTTP_3
を追加。HttpRequest.version(HttpClient.Version.HTTP_3) - ネゴシエーション:タイムアウト、レース、ディスカバリ、フォースの 4 戦略で HTTP 2 または 1.1 へのフォールバックを決定。
- 結果:サーバが QUIC ベースの HTTP/3 を提供している場合に透明にサポート。
プレビュー機能
JEP 524 – 暗号オブジェクトのPEMエンコーディング
- 新 API (
,PEMEncoder
,PEMDecoder
) でキーと証明書を PEM 形式でエンコード/デコード。暗号化・復号・鍵ペア処理もサポート。PEM
JEP 525 – Structured Concurrency(第6回プレビュー)
がスコープ付き実行を提供し、失敗時に未完了タスクを自動キャンセル。シャットダウンポリシーはStructuredTaskScope
で制御。Joiner
JEP 526 – Lazy Constants(第2回プレビュー)
は初アクセス時に一度だけ計算される値を保持。重いオブジェクト生成を遅延させ、起動時間を短縮しつつイミュータビリティ保証を維持。LazyConstant<T>
JEP 529 – Vector API(第11回インキュベーター)
- SIMD で高速化されたベクター演算 (
等) とゼロコピーの配列変換。対象領域は ML、線形代数、暗号、金融など多岐にわたる。FloatVector
JEP 530 – パターン、instanceof、switch におけるプリミティブ型(第4回プレビュー)
とinstanceof
でプリミティブ型を扱えるようになり、byte/short/int/... のガード付きタイプパターンチェックが可能。プリミティブに対する支配ルールも改善。switch
廃止
| JEP | 機能 | 理由 |
|---|---|---|
| 500 | 深いリフレクションでの Final フィールド変更 | 安全性を警告し、将来は明示的に有効化されない限り例外を投げる。 |
| 504 | Applet API (, 等) | 必要なくなったため。セキュリティ・互換性の懸念で完全に削除。 |
最後に
Java 26 は GC 非依存キャッシュ、G1 のスループット向上、HTTP/3 サポート、Lazy Constants、Structured Concurrency など焦点を絞った改善を提供します。また、将来の機能(Project Valhalla)への土台も整えつつ、不要なレガシー API を整理しています。
Happy coding!