この記事は新世代Javaプログラミングガイドの紹介(Java 12編)の続きです。
Java 言語拡張 プロジェクト「Amber」
書籍の最後はAmberプロジェクトについての解説で締めくくられています。
AmberプロジェクトはJava言語をより良い言語に拡張しようとして進められているプロジェクトですが、原著の出版時にはJavaのどのバージョンで使えるようになるか決まっていないものが多かったようです。
もちろん、翻訳書が発売された今でも決まっていないものがあります。
そんな 未来の機能 を含むAmberプロジェクトですが書籍では以下の5つについて解説させています。
- Amber プロジェクトの拡張 enum 型
- データクラスとその利用方法
- テキストブロック
- ラムダの改善ポイント
- パターンマッチング
Java14で使える機能
書籍発売時と違い、Java14が既にリリース済みです。
Java14では上記の機能のうち
- データクラス(Records)
- テキストブロック
- パターンマッチング
がPreview 機能として使うことができます。
テキストブロック
上記の中で個人的に早く正式リリースしてほしいのはテキストブロックです。
テキストブロックの機能はJava 13からPreview 版としてリリースされていますが、Java 14でもまだ正式リリースにはなっておらず、Java 15で正式リリースされると思われます。
Javaで文字列をリテラルで定義する場合、ダブルクォーテーション(")で囲みます。
テキストブロックでは文字列をダブルクォーテーション3つ(""")で囲むことで、改行やダブルクォーテーションなどをエスケープシーケンスを使うことなく定義できます。
たとえば
<HTML>
<BODY>
<H1>Meaning of life</H1>
</BODY>
</HTML>
といった文字列を定義するのに今までは
String html = "<HTML>" +
"\n\t" + "<BODY>" +
"\n\t\t" + "<H1>Meaning of life</H1>" +
"\n\t" + "</BODY>" +
"\n" + "</HTML>";
のようにしていたのが
String html = """
<HTML>
<BODY>
<H1>Meaning of life</H1>
</BODY>
</HTML>
""";
とシンプルに書くことができます。
インデントの部分が気になるかもしれませんが、閉じる側のクォーテーション3つ(""")の前の空白と同じ分の空白が各行の先頭から取り除かれます。
結果、最初に示した文字列を生成することができます。
このように色々と便利な機能について進められているAmberプロジェクトについてわかりやすくまとめられており、さっと読むだけでも将来Java言語がどのように進化するのかが見えてくるようになると思います。
以上、新世代Javaプログラミングガイドの紹介(Java 言語拡張 プロジェクト「Amber」編)でした。