Java8からJava21にアップデートしたら異世界になってた
気になったポイントだけ順を追って列挙
Java 9
新しいHTTP Client
try-with-resources構文
JShell(いわゆるREPL)
イミュータブルなSetクラス
Java 10
Local Variable Type Reference
変数宣言で型名の代わりに var を使う事ができるように
右辺の値に基づいて型推論がされる
Java 11
述語関数を反転するPredicate.notの導入
構文的一貫性のため、ラムダ式の引数にvarが付けられるように
Nestmate
ネストされたメソッドに関する内部構造が刷新
Javaコマンドで直接.javaファイルを実行できるように
新しいGC「Epsilon」
Java 12
Collectors.teeingメソッド
新しい数値フォーマッタ
switch式の導入(ただしプレビュー)
instanceof構文を使ったパターンマッチ(プレビュー)
Java 13
switch式で値を返すためにyield構文が使えるようになった
二重引用符3つでテキストブロックが書けるように(プレビュー)
Java 14
switch式が標準に入った
テキストブロックの構文が標準に入った
instanceof構文を使ったパターンマッチが標準に入った
レコードクラスが導入された(プレビュー)
NullPointerExceptionのスタックトレーステキストが改善された
新しいGC「ZGC」が各OS向けに実験的に利用可能に
Java 15
レコードクラスが標準に入った
イミュータブルなデータ構造を表すためのクラス
Scalaでいうところのケースクラスに相当?
継承を制限するsealedクラス(プレビュー)
Java 16
stream.toList()が生えた
SIMDで高速に処理できるVector APIの提案
Java 17
switch式でのパターンマッチ(プレビュー)
sealedクラスが標準に
リリースサイクルが変更
6ヶ月ごとのfeature release
Long-Term Supportバージョン
Java 18
Vector APIが使えるように
APIのデフォルトエンコーディングが全OSでUTF-8に
シンプルなWebサーバー jwebserver
Javadocにおけるコードスニペット
switch文にタイプパターンが付いた(プレビュー)
タイプパターンにガード節が付けられるように(プレビュー)
Java 19
レコード内部の型に対するパターンマッチができるように(プレビュー)
Thread.sleepがDurationを取れるように
仮想スレッド(プレビュー)
プラットフォームスレッドではない、JVMが管理するスレッド
Java 20
拡張forでもパターンマッチができるように(プレビュー)
Java 21
仮想スレッドが標準に
String Templateいわゆる補完文字列(プレビュー)
レコードのパターンマッチが標準に
switchのパターンマッチが標準に
_で使わない値を捨てられるように(プレビュー)
mainメソッドの諸々の呪文が省略できるように(プレビュー)