Javaはバージョンごとに新しいAPIや機能が追加され、開発者にとってはこれらの変更を把握することが重要です。本記事では、Java 12以降の各バージョンごとの主要なAPI差分を一覧形式で紹介します。各バージョンの新機能や変更点を理解することで、最新のJavaを効果的に活用できます。
参考サイト
Java 12 (2019年3月)
- JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
新しいガベージコレクターShenandoahが追加され、低レイテンシアプリケーションに対応しました。 - JEP 334: JVM Constants API
新しいjava.lang.invoke.constant
パッケージが追加され、定数プールの管理が強化されました。 - JEP 325: Switch Expressions (Preview)
switch
文が式として使用可能になり、コードの簡潔さと安全性が向上しました。
Java 13 (2019年9月)
- JEP 354: Switch Expressions (Preview)
Java 12で導入されたswitch
式が改善され、再度プレビューとして提供されました。 - JEP 355: Text Blocks (Preview)
複数行の文字列を簡単に記述できる「テキストブロック」が導入され、可読性が向上しました。 - JEP 350: Dynamic CDS Archives
クラスデータ共有(CDS)アーカイブを動的に作成できるようになり、アプリケーションの起動時間が短縮されました。
Java 14 (2020年3月)
- JEP 361: Switch Expressions
switch
式が正式に導入され、プレビューから標準機能になりました。 - JEP 368: Text Blocks
複数行文字列の記述が正式にサポートされ、コードの記述が簡潔に。 - JEP 359: Records (Preview)
データキャリア用のクラスを簡単に定義できるrecord
がプレビュー機能として導入。 - JEP 305: Pattern Matching for instanceof (Preview)
instanceof
演算子にパターンマッチングが追加され、キャストの冗長性が減少。
Java 15 (2020年9月)
- JEP 360: Sealed Classes (Preview)
クラス階層を制限できるシールドクラスが導入され、コードの安全性が向上。 - JEP 378: Text Blocks
テキストブロックが標準機能に。 - JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
セキュリティアルゴリズムとしてEdDSAが追加されました。 - JEP 371: Hidden Classes
JVMで動的に生成され、外部からのアクセスを制限できる「隠れクラス」が導入。
Java 16 (2021年3月)
- JEP 394: Pattern Matching for instanceof
パターンマッチングが正式に導入され、instanceof
の使い勝手が向上。 - JEP 395: Records
record
クラスが標準機能に。 - JEP 338: Vector API (Incubator)
ベクトル操作を効率的に行うAPIがインキュベータモジュールとして追加。 - JEP 376: ZGC: Concurrent Thread-Stack Processing
ZGC(Z Garbage Collector)でスレッドスタックの同時処理が可能になり、パフォーマンスが向上。
Java 17 (2021年9月) – LTS (Long-Term Support)
- JEP 409: Sealed Classes
シールドクラスが正式に導入され、クラスの継承を制限する機能が利用可能に。 - JEP 356: Enhanced Pseudo-Random Number Generators
擬似乱数生成器(PRNG)が強化され、ランダム数の生成が柔軟に。 - JEP 382: New macOS Rendering Pipeline
macOS向けの新しいレンダリングパイプラインが追加され、UIの描画が改善。 - JEP 406: Pattern Matching for switch (Preview)
switch
文にパターンマッチングが導入され、条件分岐がより柔軟に。
Java 18 (2022年3月)
- JEP 413: Code Snippets in Java API Documentation
JavaDocにコードスニペットを埋め込む機能が追加され、ドキュメントの可読性が向上。 - JEP 408: Simple Web Server
簡単なWebサーバーをJavaで実行できる機能が追加され、開発者向けのテストが容易に。 - JEP 416: Reimplement Core Reflection with Method Handles
コアリフレクションがメソッドハンドルを使って再実装され、パフォーマンスが改善。
Java 19 (2022年9月)
- JEP 405: Record Patterns (Preview)
record
のパターンマッチングがプレビューとして導入され、より簡潔なコードが記述可能に。 - JEP 424: Foreign Function & Memory API (Preview)
JNIの代替として、他言語関数やメモリ操作のためのAPIがプレビューとして追加。 - JEP 422: Linux/RISC-V Port
Linux/RISC-V向けのポートが追加され、Javaのプラットフォームサポートが拡充。
Java 20 (2023年3月)
- JEP 429: Scoped Values (Incubator)
スレッドローカルの代替となる、スコープ付きの値を扱うAPIがインキュベータモジュールとして導入。 - JEP 432: Record Patterns (Second Preview)
レコードパターンが第2のプレビューとして再導入され、さらなる改善が。 - JEP 433: Pattern Matching for switch (Fourth Preview)
switch
文のパターンマッチングが第4のプレビューとして更新され、より強力な機能に。
Java 21 (2023年9月) – LTS
- JEP 445: Unnamed Patterns and Variables (Preview)
名前のないパターンと変数を扱う新しい構文がプレビューとして導入され、簡潔なコードが記述可能に。 - JEP 441: Pattern Matching for switch
パターンマッチングがswitch
文の正式機能として導入され、柔軟な条件分岐が可能に。 - JEP 430: String Templates (Preview)
テンプレート文字列を簡単に扱うための構文がプレビューとして追加され、文字列操作が強化。
Java 22 (2024年3月予定)
- JEP 453: Structured Concurrency (Preview)
構造化された並行処理をサポートする新しいAPIがプレビューとして導入され、並行処理の管理が簡素化。 - JEP 442: Foreign Function & Memory API (Third Preview)
他言語との相互運用性を高めるためのAPIが第3のプレビューとして追加され、さらなる安定性と機能強化が。 - JEP 452: Key Encapsulation Mechanism API
鍵カプセル化メカニズム(KEM)のサポートが追加され、暗号化関連の操作が強化。
まとめ
Javaの各バージョンで導入されたAPIや機能の変更点を理解することは、最新のJavaを活用する上で非常に重要です。Java 12以降、さまざまな新機能や改善が行われており、これらを効果的に取り入れることで、開発効率とコードのパフォーマンスを向上させることができます。詳細については、Java New API since JDK 11 を参照してください。
Javaの進化を追いかけ、最新の技術をプロジェクトに取り入れましょう。