Javaの仕様変更とアップデートのフォローアップ
Javaは長年にわたり進化を続けており、新しい機能の追加や既存機能の変更、修正などがリリースごとに行われています。本記事では、Javaの仕様変更やアップデートについて、細かな違いや修正事項をフォローアップしていきます。
Java 8 (2014年3月リリース)
ラムダ式の導入
Java 8で導入された最も大きな機能がラムダ式です。ラムダ式によりコードが簡潔になり、funcitonal programmingのスタイルでコーディングできるようになりました。
// Before Java 8
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
// Java 8 with lambda
list.forEach(s -> System.out.println(s));
Stream APIの追加
ラムダ式と組み合わせて使われるStream APIも追加されました。コレクションに対して様々な操作を行うことができ、パラレルストリームによる並列処理も可能になりました。
その他の変更点
- JavaFXの標準化
- 新しいDate/Time API
- 複数の例外をまとめてcatchできるmulti-catch
Java 9 (2017年9月リリース)
モジュールシステムのProject Jigsaw
Javaでもモジュール概念が導入されました。モジュール間の依存関係を明示的に宣言し、アプリケーションの構成を簡素化することができます。
インターフェースにprivateメソッドを許可
インターフェースにprivateメソッドを定義できるようになり、インターフェース内でのヘルパーメソッドの共有が可能になりました。
その他のアップデート
- HTTP/2クライアントの導入
- G1GCの強化
Java 10 (2018年3月リリース)
Javaのリリースサイクルが半年に1回に短縮されたため、Java 10は比較的マイナーアップデートでした。
ローカル変数型推論の導入
var キーワードを使って、ローカル変数の型を推論できるようになりました。
// Before Java 10
String s = "Hello";
List<String> list = new ArrayList<>();
// Java 10
var s = "Hello";
var list = new ArrayList<String>();
Java 11 (2018年9月リリース)
ZGC (Z Garbage Collector)
低レイテンシで、Stop-the-WorldペーズがないZGCが導入されました。大規模データ処理やリアルタイムシステムに適しています。
廃止予定のAPIの削除
Java EEモジュールや32ビット版のパッケージなど、廃止が予告されていたAPIが削除されました。
このように、Javaは継続的に機能拡張やクリーンアップが行われています。毎回のリリースで細かな仕様の変更や修正が加えられているので、アップデートの内容を的確に把握し、移行作業を適切に行う必要があります。次の大きなアップデートは2023年9月に予定されているJava 21です。Java開発者はこうした変更点を常にウォッチし、アプリケーションの最適化とメンテナンスに努める必要があるでしょう。
コメント