Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Java and Kotlin news: JDK 28 gets structured concurrency and AOT code

2026年10月29日に「Dev.to」が公開したITニュース「Java and Kotlin news: JDK 28 gets structured concurrency and AOT code」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

JDK 28で構造化並行処理が正式化、AOTキャッシュでアプリ起動が高速化、ZGCはヒープを自動調整。JSON APIもJDKに追加された。KotlinコンパイラはJDK 17以上を必須化。Spring SecurityのDPoP設定変更や、各種ライブラリのセキュリティ脆弱性も修正された。

ITニュース解説

ニュース記事の要点をまとめ、システムエンジニアを目指す初心者が理解できるよう解説する。このニュースは、Java開発の基盤となるJDK(Java Development Kit)の次期バージョンであるJDK 28に関する重要な進展や、人気のプログラミング言語であるKotlinの最新情報、そしてセキュリティに関するアップデートなど、多岐にわたるトピックを扱っている。

まずJavaに関する大きなニュースとして、JDK 28で「構造化並行処理」が正式な機能として導入されることが挙げられる。これは、複数の処理を同時に実行する「並行処理」をより安全かつ効率的に行うための仕組みだ。従来の並行処理では、関連する複数のタスクの管理が複雑で、どれか一つが失敗しても他のタスクのキャンセルや親タスクの待機が適切に行われないことがあった。構造化並行処理では、関連するタスクを一つのまとまりとして扱い、もしどれか一つのタスクが失敗すれば、自動的に他のタスクもキャンセルされ、親の処理は全ての子タスクが完了するまで待機する。これにより、エラーハンドリングが簡単になり、コードの信頼性が向上する。7回にわたるプレビュー期間を経て、JDK 28でついに正式な機能となる。具体的なコードでは、StructuredTaskScope.open()でスコープを作成し、fork()メソッドで並行タスクを開始、join()で全ての子タスクの完了を待機する。これにより、並行処理におけるバグの発生を抑え、予測可能な動作が期待できるようになる。

次に、アプリケーションの起動時間を大幅に短縮する「AOTキャッシュ」の進化も注目される。Javaアプリケーションは実行時にコードを最適化するJIT(Just-In-Time)コンパイラを使用するため、起動直後は最適化が不十分で「ウォームアップ」期間が必要だった。AOT(Ahead-Of-Time)キャッシュは、このウォームアップ期間を短縮し、最適化されたコードでアプリケーションをより早く起動させる技術である。これまでのバージョンでは、ロードされたクラスやメソッドのプロファイル情報をキャッシュしていたが、JDK 28ではコンパイル済みのネイティブコードそのものをキャッシュに保存できるようになる。これにより、事前のトレーニング実行で最適化されたコードを作成し、実際のプロダクション実行時にはそのキャッシュを利用して最初から最適な状態でアプリケーションを開始できる。測定結果によれば、これにより起動時間が最大80%短縮される可能性があり、起動と停止を頻繁に繰り返すサーバーレス機能や、急な負荷増大に対応するサービスで大きな効果を発揮すると期待される。

ガベージコレクタ(GC)の一つであるZGCの改善も重要なポイントだ。ZGCは、アプリケーションの動作を一時停止する時間を極めて短く抑えることで知られるGCである。これまでは、ZGCが使用できるメモリ量(ヒープサイズ)は上限が固定されていた。しかし、JDK 28ではZGCがアプリケーションの負荷に応じてヒープサイズを動的に拡大・縮小し、使用していないメモリを他のプロセスに解放できるようになる。これにより、アプリケーションが使用するメモリ量をより効率的に管理でき、特にコンテナ環境で動作するサービスにおいて、メモリリソースの有効活用が期待される。ZGC自体の起動とウォームアップを高速化する改善も合わせて、ZGCを利用するアプリケーションの性能とリソース効率がさらに向上するだろう。

さらに、JDKに標準でJSONを扱うためのAPIが追加されるニュースも、多くの開発者にとって朗報だ。これまでJavaでJSONデータを読み書きするには、JacksonやGsonといった外部ライブラリを追加する必要があった。JDK 28では、インキュベーターモジュールとしてではあるが、JSON APIが導入される。これにより、小規模な設定ファイルの読み込みやツールでの利用など、シンプルなJSON処理であれば、外部ライブラリに依存することなく標準機能で実現できる。ただし、データバインディングやストリーミング処理など高度な機能は含まれないため、大規模なJSON処理には引き続き外部ライブラリが必要となる。インキュベーターモジュールは、将来的に正式な機能となる可能性のある実験的な機能であり、APIが変更される可能性がある点には注意が必要だ。

「Lazy Constants」の導入も、コードの記述を簡潔にする点で注目される。これは、特定の値が必要になった時に一度だけ計算され、それ以降は計算せずにその値を再利用するという仕組みだ。複数のスレッドから同時にアクセスされても安全に動作し、一度値が計算されれば、Java仮想マシン(JVM)はその値を定数として扱い、コード内で直接利用できるように最適化できる。これは、これまで開発者が手動で行っていた複雑な遅延初期化のパターンを、よりシンプルかつ安全な方法で置き換えるものだ。現在は4回目のプレビュー段階であり、本番環境での利用はまだ推奨されないが、将来的にコードの可読性と性能向上に貢献する可能性を秘める。

Javaのエコシステム全体としては、Oracleが提供するマイクロサービスフレームワーク「Helidon」のリリース戦略変更「Tip & Tail」も紹介されている。「Tip」は最新のJDKに追従するライン、「Tail」は古いJDKバージョンをサポートしつつバグ修正を受け取るラインという二つのリリースラインを持つことで、開発者は自身のプロジェクトの要件に合わせて適切なバージョンを選択できる。また、Open Libertyのようなアプリケーションサーバーや、LangChain4jのようなAI関連ライブラリの更新も継続的に行われており、Javaが進化し続けていることを示している。

次にKotlinの動向について。最も注目すべきは、KotlinコンパイラがJDK 17を必須とするようになる点だ。これは、Kotlinのソースコードをバイトコードに変換する「コンパイラ」自体が、JDK 17以降のJava開発キット上で動作する必要があるという意味だ。現在も多くの開発環境で古いJDKが使われている可能性があるため、この変更は継続的インテグレーション(CI)環境や開発者のローカル環境に影響を与える可能性がある。将来的なKotlin 2.5.20-Beta1以降では、この要件を回避するオプションもなくなるため、現在のJDKが17未満である場合は、早めにアップデートの準備をする必要がある。

開発環境の面では、IntelliJ IDEAが提供するJavaとKotlinのサポートが、VS CodeやCursorといった他のエディタでも利用できるようになる「Java and Kotlin by IntelliJ IDEA」が正式リリースされた。これにより、IntelliJ IDEAの優れたコード補完、ナビゲーション、リファクタリング、デバッグ機能が、より幅広い開発環境で享受できる。特に、これまでKotlin開発においてはIntelliJ IDEAがデファクトスタンダードであったが、この動きは他のエディタを選ぶ開発者にとって大きなメリットとなる。ただし、バージョン1.0からはIntelliJ IDEA Ultimateのサブスクリプションが必要になる点には留意したい。

Kotlin MultiplatformにおけるiOS連携の改善も進んでいる。「Swift export」は、Kotlinのコードを直接Swiftコードとして生成する新しい仕組みであり、これまでのObjective-C経由での連携に比べて、より自然なSwiftコードを生成できる。これにより、Kotlin Multiplatformを使ってiOSアプリケーションとコードを共有する際の開発体験が向上し、生成されるコード量も大幅に削減されることが示されている。まだアルファ段階だが、今後の進化が期待される。

AIエージェント開発の分野では、Googleが提供するAIエージェント開発キット「ADK (Agent Development Kit)」のKotlin版がリリースされた。これは、Kotlinを使ってAIエージェントを構築するためのフレームワークであり、JetBrainsのKoogやLangChain4jといった他の選択肢と並んで、JVMベースのチームがAIエージェントを開発する際の新たな選択肢となる。

最後にセキュリティに関する重要なニュースも見ていこう。Spring Security 7.1のアップデートで、OAuthアクセストークンの盗難を防ぐためのDPoP (Demonstrating Proof-of-Possession) という機能の挙動が変更された。Spring Security 7.0までは、DPoP関連のクラスが存在すれば自動的にチェックが行われていたが、7.1からは明示的に設定でDPoPを有効にする必要が生じる。もしSpring Boot 4.0から4.1へアップグレードする際にこの変更を知らず、設定を追加しなければ、DPoPのチェックが行われなくなり、セキュリティ上の脆弱性が発生する可能性がある。これに関する警告も表示されないため、開発者はこの変更を認識し、適切に対応する必要がある。

また、Apache Camel、Payara、Micronaut、Open Libertyといった多くの人気フレームワークやアプリケーションサーバーで、複数のセキュリティ脆弱性が修正されている。これは、ソフトウェアを常に最新の状態に保ち、定期的にセキュリティパッチを適用することの重要性を示している。システムエンジニアを目指す上で、セキュリティは常に最優先で考慮すべき事項であり、このようなニュースを通じて、脆弱性情報に常に目を光らせておく習慣を身につけることが重要である。

これらのニュースは、JavaおよびKotlinのエコシステムが活発に進化し続けていることを示している。特にJDK 28の新機能は、今後のJava開発のあり方に大きな影響を与えるだろう。並行処理の安全性向上、起動時間の短縮、メモリ効率の改善、標準JSON APIの導入など、開発体験とアプリケーション性能の両面で大きなメリットが期待できる。Kotlinにおいても、開発環境の改善や新しい技術分野への応用が進んでおり、その勢いは止まらない。セキュリティに関する注意喚起は、開発のあらゆるフェーズでセキュリティを考慮する必要があることを改めて教えてくれる。これらの最新動向を理解し、自身の学習やプロジェクトにどのように活かしていくかを考えることは、システムエンジニアを目指す上で非常に有益となるだろう。

関連コンテンツ

関連IT用語

関連ITニュース