この記事は新野淳一氏のブログ「Publickey」に掲載された「3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など」(2021年9月15日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。
Javaの新バージョン「Java 17」が正式にリリースされました。Java 17は、Java 11以来3年ぶりの長期サポート対象となるJavaのバージョンです。
6カ月ごとのフィーチャーリリースと、3年ごとの長期サポート版
Javaは、2017年9月に登場したJava 9から6カ月ごとに「フィーチャーリリース」と呼ばれるメジャーアップデートが行われています。Java 17は3月に登場したJava 16に続くメジャーアップデート版です。
そして2018年9月に登場したJava 11からは、3年ごとに長期サポート(LTS:Long Term Support)対象となるJavaがリリースされる計画となっていました。
下記は2017年にその計画が発表されたときにオラクルから示されたリリース計画の図です。
エンタープライズ向けのシステム開発において、一定期間以上安定したJavaのバージョンで開発と運用を続けたい場合には、この長期サポート対象となっているJavaのバージョンを利用することが適切です。
Java 17はこの計画通り、Java 11以来3年ぶりの長期サポート対象となるバージョンとして登場しました。
ちなみにJava 17登場後も、既存の長期サポート版であるJava 11は(そしてJava 8も)各Javaディストリビューションの提供元のポリシーに従ったサポートが継続されています。
主な新機能など
Java 17の新機能などについて、Oracle OpenJDK 17のリリースノートなどを基に主なものを参照しましょう。
継承できるクラスを制限するSealed Classが追加されました(JEP 409)。また、Apple M1チップ(AArch64)のmacOS 11.0がサポート対象になり(JEP 391)、Apple Metalによる高速なレンダリングを提供するmacOSのAPIにも対応しました(JEP 382)。
Context-Specific Deserialization Filters(JEP 415)は、アプリケーションがデータを送受信する際に、文脈に依存したデシリアライゼーションのフィルターを実装できるようにすることで、より高度なセキュリティを実現する仕組み。
Enhanced Pseudo-Random Number Generator(JEP 356)では、より多様で高度な暗号生成の仕組みをJavaから利用できるようにしています。
ディストリビューションの選択肢が増えたJava
Javaは、オラクルが提供するOracle OpenJDKやOracle JDK、そしてIBMやRed Hatなどが以前から提供してきたディストリビューションだけでなく、Eclipse Foundationが提供するEclipse Adoptium、AWSが提供するAmazon Corretto、そしてマイクロソフトが提供するMicrosoft Build of OpenJDKなど、さまざまなディストリビューションが選択できるようになってきました。
こうしたJavaディストリビューションベンダからも、Java 17の長期サポート版がまもなく登場することになるでしょう。
Java 17の詳しい内容などについては、日本Javaユーザーグループが9月29日にJava 17リリース記念のオンラインイベントを開催されるようです。興味のある方は参加されてはいかがでしょうか。