SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【最新Javaアップデート解説】変更点と過去バージョンからのおさらい

【Java 23リリース】Project Amberの新しい機能でより自然なコーディングがしやすくなる

第2回:Javaのバージョンアップの大きな流れと主なツールの変更点

  • X ポスト
  • このエントリーをはてなブックマークに追加

文字列テンプレート(JEP459 - JDK23で廃止)

 文字列テンプレートはJava21にもPreview版としてあったので、当時の解説記事でも紹介しました。文字列内に変数の値を簡単に差し込めるようにするための新たなJavaの記述方法です。デバッグ時など、HTMLやJSON、SQLといった汎用的なフォーマットを限定的に、簡単に使いたい場合に、魅力的な機能でした。

 しかし、Java23では完全になくなってしまいました。つまり、Java22まではpreview機能としてコンパイルし実行はできたのですが、Java23ではpreview機能としても存在しません。

 理由にはさまざまなことがあるようです。文字列テンプレートの思想としては、さまざな用途に応じたテンプレート処理プロセッサが実装できるようになっていて、多様な用途に使える仕様を目指していました。しかし、サードパーティー製のライブラリが提供する似た機能のシンタックスシュガーと同じようになり、開発者はどちらを使うべきかわかりにくい面もありました。

 特に、SQLなどを扱う場合のPreparedStatementの使い分けや、エスケープ文字のエスケープなども考慮しなくてはいけないため、正しい処理プロセッサを選ばないと危険なコードを生む原因になります。簡単に利用できることが、必ずしもよいソリューションとは言えない部分もあったのだろうと思います。

 preview機能もなくなってしまったことからも、文字列テンプレートはこの考え方のまま、今後も復活することはないと思われます。詳しい背景を知りたい方は、こちらのメーリングリストなどを参照してください。

その他の注目すべき変更

 筆者が本記事で挙げたもの以外に注目している機能として「構造化された並列処理に関するAPI(JEP480)」があります。こちらの機能はProject Loomとして追加された機能です。

 この機能は、新しく追加されたStructuredTaskScopeクラスによって提供されます。例えば、複数同じ処理を実行して、最も早く結果を取得できたものを採用し、それ以外の処理は中断したい場合に利用できます。

 この機能がPreview版として追加されたのはJava21であり、Java23でもPreview版として継続して同じ形として残っています。そのため、Java22やJava23で新規に追加された機能ではありませんが、次のLTSリリースには含まれると思われ、そのときには使い方を含めて紹介したい機能の1つです。

最後に

 これまでのJavaは、「曖昧になりやすい場合があれば、多少不便さやわかりにくさがあってもより明確で安全なコードであることを言語仕様レベルで保証できる」といった方向性を選んできたように思います。例えば、コンストラクタの制限などがその典型例です。「意味的に問題ない場合もあれば、問題が生じるケースがある場合、文法レベルで禁止したほうがいい」というのが、これまでのJavaの考え方です。そして、多くのJava開発者にとってコーディングに生じる面倒や難解さを解決してくれるIDEを前提としていたと思います。

 しかし、Javaがさまざまな場所で使われるようになってきた結果、システム都合の制約やあるべき論が開発者の負担にならないように、より手軽に書きたい(=人が考えやすい自然な理解でコーディングしたい)という方向へと、軸足を移してきたように感じます。このような流れが、Java開発者の裾野を広げることに役立ってくれればと思います。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【最新Javaアップデート解説】変更点と過去バージョンからのおさらい連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20334 2024/10/24 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング