The Arrival of Java 18!

原文はこちら。
The original article was written by Dalibor Topić (Principal Product Manager, Oracle).
https://inside.java/2022/03/22/the-arrival-of-java18/

OracleはJDK 18の一般提供を発表いたします。このリリースは6ヶ月のリリースサイクルで時間通りにリリースした9回目のFeature Releaseです。このレベルでリリースを予測でき、そして予測される変更の安定した流れゆえに、開発者が容易にイノベージョンの採用を管理できるようになっています。

Chart showing number of features per release since Java 8

Javaは、パフォーマンス、安定性、セキュリティを高めることができるため、世界で最も人気のあるプログラミング言語となり続けています。

JDK 18 is now available!

Oracleは現在、開発者、エンドユーザー、および企業向けにJDK 18を提供しています。

Oracle Announces Java 18
https://www.oracle.com/news/announcement/oracle-releases-java-18-2022-03-22/

Oracle JDK 18は、Oracle Java SE Support Roadmapに記載されているOracle Critical Patch Update(CPU)スケジュールに従って、6か月間、パフォーマンス、安定性およびセキュリティのアップデートを受けることができます。

Critical Patch Updates, Security Alerts and Bulletins
https://www.oracle.com/security-alerts/
Oracle Java SE Support Roadmap
https://www.oracle.com/java/technologies/java-se-support-roadmap.html

Oracle JDK 18は、長期サポート(LTS)リリースではありません。Oracle JDK 17(2021年9月14日リリース)は、2018年に発表されたリリースサイクルに基づく最新の長期サポートリリース(LTS)です。Oracleは、今後のLTSリリースの間隔を3年から2年に短縮する計画を発表しており、次のLTSは2023年9月リリース予定のJava 21の予定です。

Oracle Releases Java 17
https://www.oracle.com/news/announcement/oracle-releases-java-17-2021-09-14/
Moving the JDK to a Two Year LTS Cadence
https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence
https://logico-jp.io/2021/09/15/moving-the-jdk-to-a-two-year-lts-cadence/

半年前に発表されたもう1つの重要な変更は、摩擦のない無償ライセンスの導入です。これは四半期ごとのパフォーマンス、安定性、セキュリティパッチを含むOracle JDK 17のリリースを組織が無料で使い続けられるようにするもので、JDK 17から、LTSリリースは新しい無償ライセンスで少なくとも3年間利用できるようになり、次のLTSリリースとの重複がまるまる1年間許容されます。JDK 18(およびそのアップデート)のようなLTS以外のリリースも、新しいライセンスのもとで利用できるようになる予定です。

【訳注】
Java SE Roadmapに以下のような表現があります。

Personal, Development and other Users are those who use Java SE under one of the permitted uses at no cost under the Oracle Technology Network License Agreement for Java SE. This includes individuals who use Java SE for free on personal desktops or laptops, or those who use Java SE for development use. Please see the Oracle Java SE Licensing FAQ for more information.

All Users are those who use Java SE 17 and later at no cost under the terms of the Oracle No-Fee Terms and Conditions License.

(中略)

Since September 2021, Oracle provides the Oracle JDK for Java 17 and later under a free use license for All Users. Oracle JDK releases for Java 16 and earlier versions continue to be made available under the Oracle Technology Network License Agreement for Java SE, which is free for Personal, Development and other Users only.

https://www.oracle.com/java/technologies/java-se-support-roadmap.html

Java SE Subscriptionの利用者は、OracleのJava SEサポートと、GraalVM Enterprise、Java Management Service、Advanced Management Consoleなどの商用機能にアクセスできます。新しいライセンスの詳細については、The New Java SE License Terms ブログを参照してください。

Introducing the Free Java License
https://blogs.oracle.com/java/post/free-java-license
https://logico-jp.io/2021/09/15/introducing-the-free-java-license/

Java 18, Together

以前のリリースと同様、Java 18では、引き続きOpenJDKコミュニティの多くの個人や組織からの貢献を褒め称えています。私たちはみんなで一緒にJavaを作っているのです。

JDK 18 Fix Ratio

JDKのリリースでの経時的変化の割合は何年もほぼ一定でしたが、6ヶ月サイクルの下、プロダクションレディな機能や改良が提供されるペースが大幅に改善されました。

従来の「メジャーリリース」のように数年ごとに何万もの修正や100近いJEP(JDK Enhancement Proposals)を提供するのではなく、より管理しやすく予測可能な6ヶ月のスケジュールで、よりスリムな「フィーチャーリリース」として機能強化が提供されるようになりました。変更内容は、重要な新機能から小さな機能強化、日常的なメンテナンス、バグ修正、ドキュメントの改善まで多岐にわたります。各変更は、JDK Bug System内の1つのIssueに対する1つのコミットで表わされます。

JDK Bug System
https://bugs.openjdk.java.net/secure/Dashboard.jspa

GA時にJava 11からJava 18で修正済みとマークされた17,253件のJIRAのIssueのうち、12,442件はOracle勤務者が完了し、4,811件は個人の開発者と他の組織に勤務する開発者による貢献です。JDK 18は、独立した個人開発者によるリリースで最も貢献が多いリリースです。これは、OpenJDKが組織だけでなく、あらゆるタイプの貢献者が独自のスキルをJavaコミュニティに持ち込むことを歓迎する場であることを示しています。

以下のグラフは、Issueと担当者の組織データと照合し、Javaでの貢献の開発を後援している組織をまとめたものです。

Graph showing the number of fixes per organization

Java 18では、修正済みとマークされた2,062件の JIRAのIssueのうち、1,261件がOracle勤務者が対応し、801件が他のJavaコミュニティのメンバーによる貢献でした。

Oracleは、Alibaba、Amazon、ARM、Intel、JetBrains、Red Hat、SAP、Tencentなどの組織で働く開発者の方々の多大な貢献に対して感謝しています。また、Bellsoft、DataDog、Loongson、および独立系開発者のような小規模な組織からの貢献にも感謝しております。彼らは、Java 18の修正の13%に貢献してくれました。

提案された変更点をレビューしてくれた多くの経験豊富な開発者、早期アクセスビルドを試用して問題を報告してくれたアーリーアダプター、OpenJDKメーリングリストにフィードバックを提供してくれた熱心な専門家の皆さんにも等しく感謝しております。

以下の方々は、ビルドの品質に関する貴重なフィードバックを提供してくれたり、良質のバグを記録してくれたり、あるいは頻繁にアップデートを提供してくれたりしました。

  • Jaikiran Pai (Apache Ant)
  • Tilman Hausherr (Apache PDFBox)
  • Martin Grigorov (Apache Tomcat, Apache Wicket)
  • Rafael Winterhalter (Byte Buddy)
  • Yoann Rodière (Hibernate ORM, Validator, Search, Reactive)
  • Marc Hoffman (JaCoCo)
  • David Karnok (RxJava)

さらに、Quality Outreachプログラムを通じて、Java 18早期アクセスビルドのテストに優れたフィードバックを提供し、リリースの品質向上に貢献してくださった以下のFOSS(Free and Open Source)プロジェクトおよび個人の皆様に感謝いたします。

  • Apache Derby (Rick Hillegas)
  • Apache Lucene (Uwe Schindler)
  • Apache MyBatis (Iwao Ave)
  • Apache Zookeeper (Enrico Olivelli)
  • BNYM Code Katas (Chandra Guntur)
  • Karate (Peter Thomas)

Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach

New in Java 18

何千ものパフォーマンス、安定性、セキュリティのアップデートとともに、Java 18には9つの強化/変更(JDK Enhancement Proposals – JEPs)が含まれています。そのうちの2つはインキュベータモジュール(Incubator Module)、1つはプレビュー言語機能です。

JDK 18
https://openjdk.java.net/projects/jdk/18/
JEP 1: JDK Enhancement-Proposal & Roadmap Process
https://openjdk.java.net/jeps/1

インキュベータモジュールは、最終化されていないAPIやツールを開発者やユーザーの手に渡し、フィードバックを収集することで、最終的にJavaプラットフォームの品質を向上させることを目的としてます。

JEP 11: Incubator Modules
https://openjdk.java.net/jeps/11

同様に、プレビュー機能は、Java SEプラットフォームの言語機能もしくはVM機能として完全に仕様化され、実装されてはいるが、まだ不完全なものです。将来のリリースで恒久的なものにする前に、実利用での開発者からのフィードバックを可能にするために、JDKのfeature releaseで利用できるようになっています。プレビュー機能は、Java SE標準に最終化される前に、ツールベンダーがその機能をサポートする作業の機会を提供するものでもあります。

JEP 12: Preview Features
https://openjdk.java.net/jeps/12

Java 18でもたらされる9個のJEPは、4カテゴリに分類されます。

1. Core library improvements and updates

JEP 400: UTF-8 by Default

コードがデフォルトの文字セットに依存する場合に、Javaプログラムの予測性と移植性を高めることを目的として、標準Java APIがデフォルトの文字セットを使用する箇所を明確にし、標準Java API全体でUTF-8を標準とします(コンソールI/Oを除く)。

JEP 408: Simple Web Server

簡単なセットアップと最小限の機能で、すぐに使える静的HTTPファイルサーバーです。開発者のアクティベーションに必要な労力を減らし、JDKをより親しみやすくし、コマンドラインによるデフォルトの実装と、プログラムによる作成とカスタマイズのための小さな API を提供します。

Simple Web Serverについては、Inside Java podcast #22でJulia Boesが詳細を説明しています。

Episode 22 “JEP 408 – Simple Web Server”
https://inside.java/2022/03/04/podcast-022/

JEP 416: Reimplement Core Reflection with Method Handle

将来の言語機能に対するリフレクションサポートの保守・開発コストを削減します。また、Hotspot VMのコードを簡素化します。

JEP 418: Internet-Address Resolution SPI (Service-provider Interface)

通常OSの呼び出しがブロックされるOSネイティブのデフォルトのリゾルバーを、開発者が提供する代替リゾルバーで置き換えることができるようにします。

2. Tooling improvements

JEP 413: Code Snippets in Java API Documentation

API ドキュメントにおけるソースコードスニペットの検証と書式設定を容易にします。正確性は最終的には作者の責任ですが、javadocや関連ツールのサポートを強化することで実現が容易になり、シンタックスハイライトなどの最新のスタイルや、名前と宣言の自動連携が可能になり、スニペットの作成と編集のための統合開発環境(IDE)サポート改善が可能になります。

Inside Java Newscast #20でNicolai Parlogによるコードスニペット機能の紹介ビデオが公開されています。

3. Previews and Incubators

JEP 417: Vector API Third Incubator

サポート対象のCPUアーキテクチャ向けに、幅広いベクトル計算の明確かつ簡潔に、プラットフォーム非依存で信頼性の高い表現方法を導入します。

JEP 419: Foreign Function and Memory API Second Incubator

ネイティブ(ライブラリ)を活用するJavaプログラムを作成するために必要なツールや知識を大幅に簡素化します。これにより、Java開発者はJava以外の専門的なライブラリにアクセスできるようになります。

JEP 420: Pattern Matching for switch Second Preview

switch式やswitch文の表現力と適用範囲を広げることで、Java開発の生産性を向上させます。switchでパターンマッチングを可能にすることで、複雑なデータ指向のクエリをより簡潔に、より安全に表現することができます。

4. Deprecations

JEP 421: Deprecate Finalization for Removal

非推奨の機能への依存を検出するのに役立つ簡単なツールを提供することで、時代遅れのfinalize機能を将来的に削除することに対し、開発者に準備してもらうことを目的としています。

プラットフォームからfinalize機能を徐々に非推奨にする取り組みや、リソースを適切に扱うための代替案に関するBrent Christianとの議論は、Inside Java podcast #21でチェックいただけます。

Episode 21 “JEP 421 and Finalization Deprecation”
https://inside.java/2022/01/12/podcast-021/

Tooling Support

ツールやライブラリによる新機能のタイムリーなサポートは、開発者の生産性向上を支援してくれます。Java 18では、開発者に最新のJavaバージョンをサポートする最もタイムリーなアップデートを提供する主要な IDE ベンダーの努力を引き続き歓迎しています。以下のIDEで、今日からJava 18サポートを利用できます。

Resources

Javaは今日の技術トレンドにおいて、No.1のプログラミング言語としてあり続けています。Java 18の改良が予定通り行われたことが示すように、綿密な計画とエコシステムの継続的な関与を通じて、Javaプラットフォームはモダンな開発とクラウドでの成長で十分対応できるポジションにいます。

ニュースやアップデートの最新情報は、以下の方法で入手できます。

Dev.java: The Destination for Java Developers
https://dev.java/
Javaの知識を深め、コミュニティに参加するためのOracleの専用ポータルです。
Inside Java
https://inside.java/
OracleのJavaチームからのニュースや見解を得られます。
Inside Java Podcasts
https://inside.java/podcast/
OracleのJava担当者が直接お届けする、Java開発者向けのオーディオ番組です。言語、JVM、OpenJDK、プラットフォーム・セキュリティ、LoomやPanamaなどのイノベーション・プロジェクトなど、ありとあらゆるすべてのことを取り上げます。
Inside Java Newscasts
https://www.youtube.com/playlist?list=PLX8CzqL3ArzX8ZzPNjBgji7rznFFiOr58
Inside.Javaポッドキャストをビデオ形式に拡張したビデオ番組です。
Java on YouTube
https://youtube.com/java
Oracleが集めた、Java関連の動画集。Javaの専門知識を深めるのに有用です。
OpenJDKメーリングリスト
https://mail.openjdk.java.net/mailman/listinfo
お気に入りのOpenJDKプロジェクトの進捗を知ることができます。
Twitter
@OpenJDK@Java
Javaの継続的な進化に関するアップデートやニュースを提供するソーシャルストリームです。
Java Magazine
https://blogs.oracle.com/javamagazine/
Oracleが提供する、開発者による開発者のためのJavaに関連する技術記事を集めたデジタル出版物です。
JDK Script Friendly URLs
https://www.oracle.com/java/technologies/jdk-script-friendly-urls/
最新のJDKをプログラムでダウンロードする方法を紹介しています。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中