Java 26がリリース:言語革新、ライブラリ改善、パフォーマンスとセキュリティを強化
OracleはJavaプログラミング言語と仮想マシンのバージョン26をリリースし、Javaライブラリの改善、言語革新、パフォーマンスとセキュリティに焦点を当てた10のJEPを含む最終機能セットを提供した。
キーポイント
Java 26のリリース
OracleがJavaプログラミング言語と仮想マシンのバージョン26をリリースし、JDK 25以来初の非LTSリリースとなった。
機能セットの構成
最終機能セットには10のJEP(Java Enhancement Proposal)が含まれ、そのうち5つはプレビューおよびインキュベーター段階を経て進行中である。
主要な焦点領域
このリリースはJavaライブラリの改善、言語革新、パフォーマンス向上、セキュリティ強化に重点を置いている。
影響分析・編集コメントを表示
影響分析
Java 26のリリースは、広く使用されているプログラミング言語の定期的な更新として開発者コミュニティに実用的な価値を提供するが、AI業界への直接的な影響は限定的である。Javaエコシステムの継続的な進化を示しており、企業システムやバックエンド開発における安定性と革新のバランスを維持している。
編集コメント
Javaの定期的なアップデートとして実用的な情報ではあるが、AI/機械学習分野への直接的な言及や革新性は限定的で、汎用プログラミング言語の進化に関する標準的なリリースニュースと言える。
Oracle はプログラミング言語および仮想マシンのバージョン 26 をリリースしました。JDK 25 以降最初の非 LTS リリースとなるこのバージョンの最終機能セットには、10 の JEP が含まれており、そのうち 5 つは現在もプレビュー段階とインキュベーター段階を進行中です。この最終機能セットに含まれる JEP は以下の通りです。
JEP 500: Prepare to Make Final Mean Final
JEP 504: Remove the Applet API
JEP 516: Ahead-of-Time Object Caching with Any GC
JEP 517: HTTP/3 for the HTTP Client API
JEP 522: G1 GC: Improve Throughput by Reducing Synchronization
JEP 524: PEM Encodings of Cryptographic Objects (Second Preview)
JEP 525: Structured Concurrency (Sixth Preview)
JEP 526: Lazy Constants (Second Preview)
JEP 529: Vector API (Eleventh Incubator)
JEP 530: Primitive Types in Patterns, instanceof, and switch (Fourth Preview)
「Prepare to Make Final Mean Final」、「HTTP/3 for the HTTP Client API」、「Lazy Constants (Second Preview)」、「Structured Concurrency (Sixth Preview)」、そして「Vector API (Eleventh Incubator)」の 5 つの JEP は、Java ライブラリの改善に焦点を当てています。残りの JEP は、言語の革新、パフォーマンス、セキュリティに焦点を当てています。
本リリースではまた、Project Leyden の主管の下、「Ahead-of-Time Object Caching with Any GC」という 4 つ目の JEP が追加されました。
以下のグラフは、Oracle のシニアディレクターでありグローバル開発者プログラム担当の Sharat Chander 氏がこのブログ記事で提示したもので、JDK 8 以降の各 Java リリースにおける JEP の数を示しています。
これらの JEP のいくつかを検証し、JDK 27 に含まれる可能性のある機能に関する予測を更新します。
任意の GC を用いた事前実行時オブジェクトキャッシュ
JEP 516「任意の GC を用いた事前実行時オブジェクトキャッシュ」は、JDK 24 で提供された JEP 483「事前実行時のクラス読み込みとリンク」を強化する提案です。これにより起動時間とウォームアップ時間の改善が図られ、低レイテンシ Z Garbage Collector (ZGC) を含む任意のガベージコレクタで利用可能となります。
遅延定数(2 回目のプレビュー)
JEP 526「遅延定数(2 回目のプレビュー)」は、最初のプレビューラウンドである JEP 502「安定値(プレビュー)」の後に、変更を加えた第 2 のプレビューを提案するものです。かつては「安定値と計算定数」と呼ばれていたこの機能は、計算定数の概念を導入します。これは最大 1 回しか初期化されない不変の値保持体として定義されます。これにより、final フィールドのパフォーマンスと安全性の利点を提供しつつ、初期化のタイミングに関するより大きな柔軟性を提供します。
今回の JEP における改訂には、新しい名称が上位レベルの使用ケースの意図をよりよく捉えているため、「安定値」から「遅延定数」への名称変更が含まれます。また、発見可能性も強化されています。
この JEP の詳細は、InfoQ のニュース記事で確認できます。
ベクトル API(第 11 回インキュベータ)
JEP 529、Vector API(第 11 回インキュベーション)は、JDK 16 から JDK 25 までの 10 ラウンドのインキュベーションを経て、実質的な実装変更なく第 11 回のインキュベーションを提案しています。この機能は、「サポートされている CPU アーキテクチャ上で実行時に最適なベクトル命令に確実にコンパイルされるベクトル計算を表現するための API」を導入し、同等のスカラー計算よりも優れたパフォーマンスを実現します。Vector API は、Project Valhalla の必要な機能がプレビュー機能として利用可能になるまでインキュベーションを継続します。その時点で、Vector API チームは Vector API およびその実装をそれらの機能を使用するように適応させ、Vector API をインキュベーションからプレビューへ昇格させる予定です。
Applet API の削除
JEP 504、Remove the Applet API は、Web ブラウザでアプレットがもはやサポートされなくなったことによる継続的な陳腐化を受け、JDK 17 で提供された JEP 398(Deprecate the Applet API for Removal)および JDK 9 で提供された JEP 289(Deprecate the Applet API)に続くものとして、長らく非推奨とされていた Applet API を削除します。
暗号化オブジェクトの PEM エンコーディング(第 2 回プレビュー)
JEP 524「暗号化オブジェクトの PEM エンコーディング(第 2 プレビュー)」は、JDK 25 で提供された最初のプレビューである JEP 470「暗号化オブジェクトの PEM エンコーディング(プレビュー)」に続く変更を加えた第 2 ラウンドのプレビューを提案しています。この機能は、「暗号鍵、証明書、および証明書失効リストを表すオブジェクトを、広く使用されているプライバシー強化メール(PEM)転送フォーマットへエンコードし、そのフォーマットから再びオブジェクトへデコードするための API」を提供します。本 JEP は、PEM テキストと PKCS #8 および X.509 バイナリ形式の暗号化オブジェクト間の変換をサポートします。
今回のプレビューにおける変更点は以下の通りです:PEMRecord クラスの名前を PEM へ改名すること、および KeyPair および PKCS8EncodedKeySpec クラスの暗号化・復号化をサポートするために、PEMEncoder と PEMDecoder クラスを強化することです。
JDK 27
2026 年 9 月の一般公開(GA)リリースが予定されており、現時点では JDK 27 向けに 1 つの JEP のみが対象となっています。しかし、提出されたものを含む多数の JEP 候補やドラフトに基づけば、JDK 27 に追加で含まれる可能性のある他の JEP を推測することができます。
JEP 531、Lazy Constants(第 3 プレビュー)は、JDK 26 と JDK 25 で 2 回のプレビューが提供された後、2 つの変更を加えた第 3 のプレビューを提案しています。その変更には、この機能の設計目標に合致しないため LazyConstant インターフェースから isInitialized() メソッドと orElse() メソッドを削除すること、および Java の 3 つのコレクション型である List、Set、Map のすべてに対して安定した事前定義要素を作成できる新しいファクトリメソッド ofLazy() を追加することが含まれます。
JEP 527、Post-Quantum Hybrid Key Exchange for TLS 1.3 は、JDK 27 を対象としています。この JEP は、現在インターネットエンジニアリングタスクフォース(IETF)が起草中である TLS 1.3 仕様におけるハイブリッド鍵交換(Hybrid Key Exchange in TLS 1.3 specification)を用いて RFC 8446(Transport Layer Security (TLS) Protocol Version 1.3)の実装を強化することを提案しており、これは JDK 24 で提供された JEP 496(Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism)と連携して行われます。
Project Valhalla の支援のもと提案されている JEP 401、Value Classes and Objects(プレビュー)は、言語を値オブジェクトによって強化することを提案しています。ここでいう値オブジェクトとは、最終フィールドのみを含み、アイデンティティを持たず、それぞれのフィールドの値のみによって区別されるオブジェクトとして定義されます。
JEP ドラフト 8376991「暗号化オブジェクトの PEM エンコーディング」は、JDK 26 および JDK 25 で提供された 2 回のプレビューを経て、変更を加えてこの機能を最終化する提案です。主な変更点には、PEM API をレコードからクラスへの変換、実行時の暗号化処理中にこの例外をキャッチするための新しい CryptoException クラスの追加、および「PEM テキストに格納されるバイナリデータをより正確に記述する」ことを目的とした DEREncodable インターフェースの名前変更(BinaryEncodable へ)があります。
JEP ドラフト 8329758「ZGC を用いた高速な起動とウォームアップ」は、アプリケーションのニーズに応じてメモリをより効率的に割り当てるために Z Garbage Collector(ZGC)を強化する提案です。起動時間を最小化するためには、オペレーティングシステムのオーバーヘッドを削減する小さな初期ヒープのみを作成する必要があります。
ドラフト JEP はいつでも変更される可能性がある点にご注意ください。
JDK 27 の公式リリース日は、Oracle Java Platform Group のチーフアーキテクトである Mark Reinhold 氏によって提案される予定ですが、2026 年 9 月と見込まれています。開発者は、2026 年 6 月初旬に機能凍結が行われることを想定しておく必要があります。
JDK 26 で公開された追加の JEP やその他のドラフト JEP および候補に関する詳細は、より詳しい InfoQ のニュース記事をご覧ください。
JDK 26 は現在 Oracle からダウンロード可能となっており、他のベンダーからのバイナリも今後数日中に利用可能になる見込みです。
著者紹介
マイケル・レッドリッチ
マイケル・レッドリッチは、過去 25 年間にわたり Java コミュニティにおいて活発な活動を行ってきました。彼は 2001 年に Garden State Java User Group(旧 ACGNJ Java Users Group)を設立し、現在も継続して運営されています。
2016 年以来、マイクは InfoQ の Java コミュニティニュース編集者を務めており、その貢献には月次ニュース記事、技術文書の作成、技術レビューが含まれています。Oracle Code One、Enterprise 向け新興技術カンファレンス、トレントン・コンピュータ・フェスティバル(TCF)、TCF IT プロフェッショナル会議、および多数の Java ユーザーグループなどで講演を行ってきました。マイクは Jakarta NoSQL および Jakarta Data の仕様におけるコミッターを務め、Jakarta EE Ambassadors のリーダーシップ評議会にも参加しています。2023 年 4 月には Java Champion に選出されました。
33 年半の勤務を経て、マイクはニュージャージー州クリントンにある ExxonMobil Technology & Engineering を最近退職しました。同社では、カスタム科学実験室用アプリケーションおよび Web アプリケーションの開発に従事していました。また、Ai-Logix, Inc.(現 AudioCodes)でテクニカルサポートエンジニアとして勤務した経験もあり、顧客向けに技術サポートを提供し、電話通話アプリケーションを開発しました。
もっと見る 表示しない
原文を表示
Oracle has released version 26 of the Java programming language and virtual machine. As the first non-LTS release since JDK 25, the final feature set includes 10 JEPs, five of which are still progressing through the preview and incubator stages. The JEPs in this final feature set are:
JEP 500: Prepare to Make Final Mean Final
JEP 504: Remove the Applet API
JEP 516: Ahead-of-Time Object Caching with Any GC
JEP 517: HTTP/3 for the HTTP Client API
JEP 522: G1 GC: Improve Throughput by Reducing Synchronization
JEP 524: PEM Encodings of Cryptographic Objects (Second Preview)
JEP 525: Structured Concurrency (Sixth Preview)
JEP 526: Lazy Constants (Second Preview)
JEP 529: Vector API (Eleventh Incubator)
JEP 530: Primitive Types in Patterns, instanceof, and switch (Fourth Preview)
Five JEPs - Prepare to Make Final Mean Final, HTTP/3 for the HTTP Client API, Lazy Constants (Second Preview), Structured Concurrency (Sixth Preview) and Vector API (Eleventh Incubator) - focus on improvements to the Java libraries. The remaining JEPs focus on language innovation, performance and security.
This release also adds a fourth JEP, Ahead-of-Time Object Caching with Any GC, under the auspices of Project Leyden.
Shown in the graph below, as presented in this blog post by Sharat Chander, senior director, global head of developer programs at Oracle, are the number of JEPs in each Java release since JDK 8.
We examine some of these JEPs and update our predictions for features that may be included in JDK 27.
Ahead-of-Time Object Caching with Any GC
JEP 516, Ahead-of-Time Object Caching with Any GC, proposes to enhance JEP 483, Ahead-of-Time Class Loading & Linking, delivered in JDK 24, for improved startup and warmup time such that it can be used with any garbage collector, including the low-latency Z Garbage Collector (ZGC).
Lazy Constants (Second Preview)
JEP 526, Lazy Constants (Second Preview), proposes a second preview, with changes, after the first round of preview, namely: JEP 502, Stable Values (Preview). Formerly known as Stable Values and Computed Constants, this feature introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final fields, while offering greater flexibility as to the timing of initialization.
Revisions for this JEP include: the name change from Stable Values to Lazy Constants as the new name better captures the intent of a high-level use case; and enhanced discoverability.
More details on this JEP may be found in this InfoQ news story.
Vector API (Eleventh Incubator)
JEP 529, Vector API (Eleventh Incubator), proposes an eleventh incubation, with no substantial implementation changes since JDK 25, after ten rounds of incubation delivered in JDK 16 through JDK 25. This feature introduces an API to "express vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures, thus achieving performance superior to equivalent scalar computations." The Vector API will continue to incubate until the necessary features of Project Valhalla become available as preview features. At that time, the Vector API team will adapt the Vector API and its implementation to use them, and will promote the Vector API from Incubation to Preview.
Remove the Applet API
JEP 504, Remove the Applet API, removes the long-deprecated Applet API after JEP 398, Deprecate the Applet API for Removal, delivered in JDK 17, and JEP 289, Deprecate the Applet API, delivered JDK 9, due its continued obsolescence since applets are no longer supported in web browsers.
PEM Encodings of Cryptographic Objects (Second Preview)
JEP 524, PEM Encodings of Cryptographic Objects (Second Preview), proposes a second round of preview, with changes, after the first round of preview, namely JEP 470, PEM Encoding of Cryptographic Objects (Preview), delivered in JDK 25. This feature offers "an API for encoding objects that represent cryptographic keys, certificates, and certificate revocation lists into the widely-used Privacy-Enhanced Mail (PEM) transport format, and for decoding from that format back into objects." This JEP will support conversions between PEM text and cryptographic objects in PKCS #8 and X.509 binary formats.
Changes in this preview include: a rename of the PEMRecord class to PEM; and an enhancement of the PEMEncoder and PEMDecoder classes to support the encryption and decryption of the KeyPair and PKCS8EncodedKeySpec classes.
JDK 27
Scheduled for a GA release in September 2026, only one JEP has been targeted for JDK 27 at this time. However, based on a number of JEP candidates and drafts, especially those that have been submitted, we can surmise which additional JEPs have the potential to be included in JDK 27.
JEP 531, Lazy Constants (Third Preview), proposes a third preview, with two changes, after two rounds of preview delivered in JDK 26 and JDK 25. The changes include: removal of the methods, isInitialized() and orElse(), from the LazyConstant interface, as they do not align with the design goals of this feature; and a new factory method, ofLazy(), that can create a stable, pre-defined elements for all three Java collection types, namely: List, Set and Map.
JEP 527, Post-Quantum Hybrid Key Exchange for TLS 1.3, has been Targeted for JDK 27. This JEP proposes to enhance the implementation of RFC 8446, Transport Layer Security (TLS) Protocol Version 1.3, using the Hybrid Key Exchange in TLS 1.3 specification, currently being drafted by the Internet Engineering Task Force (IETF) in conjunction with JEP 496, Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism, delivered in JDK 24.
JEP 401, Value Classes and Objects (Preview), under the auspices of Project Valhalla, proposes to enhance the language with value objects, defined as objects that: only contain final fields; do not have identity; and are solely distinguished by the values of their respective fields.
JEP Draft 8376991, PEM Encodings of Cryptographic Objects, proposes to finalize this feature, with changes, after two rounds of preview delivered in JDK 26 and JDK 25. Changes include: a conversion of the PEM API from a record to a class; a new CryptoException class for catching this exception during cryptographic processing at runtime; and a rename of the DEREncodable interface to BinaryEncodable to more "accurately describe the binary data stored in PEM text."
JEP Draft 8329758, Faster Startup and Warmup with ZGC, proposes to enhance the Z Garbage Collector to more efficiently allocate memory in response to the needs of an application. Startup time can be minimized by creating only a small initial heap that reduces the overhead of the operating system.
Please note that draft JEPs may be subject to change at any time.
The formal release date for JDK 27 is expected to be September 2026, soon to be proposed by Mark Reinhold, chief architect, Java Platform Group at Oracle. Developers can anticipate a feature freeze in early-June 2026.
More details on additional JEPs released in JDK 26 along with other Draft JEPs and candidates may be found in this more detailed InfoQ news story.
JDK 26 may now be downloaded from Oracle with binaries from other vendors expected to become available in the coming days.
About the Author
Michael Redlich
Michael Redlich has been an active member within the Java community for the past 25 years. He founded the Garden State Java User Group (formerly the ACGNJ Java Users Group) in 2001 that remains in continuous operation.
Since 2016, Mike has served as a Java community news editor for InfoQ where his contributions include monthly news items, technical writing and technical reviews. He has presented at venues such as Oracle Code One, Emerging Technologies for the Enterprise, Trenton Computer Festival (TCF), TCF IT Professional Conference, and numerous Java User Groups. Mike serves as a committer on the Jakarta NoSQL and Jakarta Data specifications and participates on the leadership council of the Jakarta EE Ambassadors. He was named a Java Champion in April 2023.
With 33-1/2 years service, Mike recently retired from ExxonMobil Technology & Engineering in Clinton, New Jersey with experience in developing custom scientific laboratory and web applications. He also has experience as a Technical Support Engineer at Ai-Logix, Inc. (now AudioCodes) where he provided technical support and developed telephony applications for customers.
Show moreShow less
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み