Java 18正式リリース。デフォルトのCharsetが「UTF-8」に、シンプルWebサーバ搭載など新機能
今回は「Java 18正式リリース。デフォルトのCharsetが「UTF-8」に、シンプルWebサーバ搭載など新機能」についてご紹介します。
関連ワード (処理性能、状態、設定等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Javaの新バージョン「Java 18」が正式にリリースされました。
Java 18 is now available! #Java18 #JDK18 #openjdk
Download now: https://t.co/hTJU1ZzAWQ
Release notes: https://t.co/Xdkj5TObNP
API Javadoc: https://t.co/izFBPlYkd9
Features: https://t.co/3z0l5sXyDX pic.twitter.com/Ct1BvYmDYs— Java (@java) March 22, 2022
Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるメジャーアップデートが行われ、そのなかの1つのバージョンが3年ごとに長期サポート版(LTS:Long Term Support)版に指定されます。
現在のLTS版は2021年9月にリリースされたJava 17です。Java 18は、この次のバージョンとして登場しました。
業務アプリケーションの開発など、一定期間は安定したバージョンを使いたい場合にはひとつ前のJava 17を、最新の機能をいちはやく利用したい場合には今回のJava 18を利用するのが適切でしょう。
参考:3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など
CharsetがデフォルトでUTF-8に、シンプルWebサーバ搭載など
Java 18でもっとも大きな変更点といえそうなのは、Charsetがデフォルトで「UTF-8」になることでしょう(JEP 400)。
これまでJavaのCharsetはJavaVM起動時に決定され、デフォルトではOSに従い、オプションが指定されていればそのオプションに従うことになっていました。これがJava 18からはデフォルトでUTF-8が設定されるようになりました。
JEP 400のページでは、これまでデフォルトの状態ではmacOSのJava APIで出力したデータをWindowsの英語もしくは日本語環境のJava APIで読み込むと文字化けが起きていた、という例が示されています。
すべてのプラットフォームにおいてデフォルトのCharsetがUTF-8になることで、こうした文字化けを防ぐことができるようになります。
シンプルなWebサーバがJDKに組み込まれる「JEP 408」は、開発者にとって便利な機能となりそうです。CLIからWebサーバを立ち上げて静的HTMLを参照できるようになります。サーブレットやCGIなどの動的なページは生成できませんが、プロトタイピングやアドホックな開発の場面で役立つと説明されています。
「JEP 413: Code Snippets in Java API Documentation」は、コードスニペット、つまり小さなコードの断片をJavaDocに組み込むことを可能にする新機能。Java開発者が作るドキュメントにサンプルコードが入るようになるため、より具体的で読みやすくなります。
「JEP 416: Reimplement Core Reflection with Method Handles」は、Java内部で実装されているReflectionsメソッドを、将来の変更に備えてよりセキュアで一貫性の高い形で置き換えた、というもの。
「JEP 417: Vector API (Third Incubator)」は、ベクトル処理に関する最適化や処理性能の向上をしたもの。
「JEP 420: Pattern Matching for switch (Second Preview)」は、文字通りSwitchのなかでパターンマッチングを使えるようにするというものです。
ほかにもJava 18では多くの機能追加や改善、バグフィクスなどが行われています。詳細はJava 18のページを参照してみてください。