オラクルは「Java 13」をサンフランシスコで開催中のイベント「Oracle Code One 2019」で発表しました。明日正式リリース予定です。

2017年9月に登場したJava 9以降、Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるメジャーアップデートが行われています。Java 13は、今年3月に登場したJava 12に続くメジャーアップデートです。

Java 13のおもな新機能は、Application Class-Data Sharing機能を拡張した「Dynamic CDS Archives(JEP 350)」、ZGCガベージコレクタを改善し使われていないヒープメモリを返却する「ZGC: Uncommit Unused Memory(JEP 351)」、Project Loomの一部として既存のSocket APIを再実装した「Reimplement the Legacy Socket API(JEP 353)」、Switch式を可能にする「Switch Expressions(JEP 354)」(プレビュー)、Javaコード中にテキストとしてリテラルを記述できる「Text Blocks(JEP 355)」(プレビュー)など。

Text Blocksについて。例えばHTMLを生成するためのコードとしてテキストを埋め込む場合、次のように記述する必要がありました。
https://www.publickey1.jp/2019/oraclecodeone201907.gif

コードとして読みにくく、またバグが入り込みやすくもあります。

Text Blocksによって、下記のようにコードが読みやすくなり、コード中にHTMLをコピー&ペーストできるようになります。
https://www.publickey1.jp/2019/oraclecodeone201908.gif

しかもHTMLの部分の先頭に入っているスペースについては、Javaのコンパイラがどれが不要なスペースで、どれが必要かを判断して自動的に除去してくれるため、上記の図のグレイのドットで示された空白は自動的に除去されます。

Javaランタイムでの性能向上
半年前に登場したJava 12や今回のJava 13では、目を見張るような大きな新機能追加などは行われていません。

これについてOracle Code One 2019の基調講演に立った米オラクルのJava Language ArchitectであるBrian Goetz氏は、「今後もラムダ式のような大きな機能追加は予定されていない。しかしこれはJavaにイノベーションが起きていないのではなく、(6カ月というタイムベースのリリースによって)小さな機能に分割されて実装されて行っているからだ」と、Javaは今後も進化し続けることを強調しました。
以下ソース
https://www.publickey1.jp/blog/19/java_13zgcswitch_oracle_code_one_2019.html