このエントリは以下のエントリをベースにしています。
This entry is based on the following one written by Sharat Chander (Director, Java SE Product Management, Oracle).
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13
2017年のJava 9リリース以後、Javaのリリースサイクルが変わりました。メジャーリリースは3年以上のサイクル、フィーチャーリリースが6ヵ月毎に変わっています。この変更の大きな理由の一つとして、継続的な改善に対して、開発者が予測できるスケジュールでアクセスできるようにすることがあります。フィーチャーリリースは現在3月、9月の年2回確実にリリースされていますが、これは開発者が数年ごとに一度に数百もの変更を管理する必要がなくなったことを意味します。
Update and FAQ on the Java SE Release Cadence
https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
https://orablogs-jp.blogspot.com/2018/05/update-and-faq-on-java-se-release.html
より詳細かつ迅速な方法で新しい拡張機能にアクセスできるようになったことで、12個の新たな拡張機能を提供したJava 10、17個の新たな拡張機能を提供したJava 11、8個の新しい拡張機能を提供したJava 12で実証された、イノベーションのペースをずっと簡単に開発者は管理できます。
JDK 10
http://openjdk.java.net/projects/jdk/10/
JDK 11
http://openjdk.java.net/projects/jdk/11/
JDK 12
http://openjdk.java.net/projects/jdk/12/
The Arrival of Java 13!
OracleはJava 13をエンタープライズならびに開発者向けにJava 13を提供します。JDK 13は、2020年3月に予定されているOracle JDK 14の登場までに、OracleのCPU (Critical Patch Update) のスケジュールごとに最小2個のアップデートがリリースされる予定です。なお、JDK 14の早期アクセスビルドはすでにご利用いただけるようになっています。
Oracle Keeps Driving Developer Productivity with New Java Release
https://www.oracle.com/corporate/pressrelease/oow19-new-java-release-091619.html
Critical Patch Updates, Security Alerts and Bulletins
https://www.oracle.com/technetwork/topics/security/alerts-086861.html
JDK 14 Early-Access Builds
http://jdk.java.net/14/
再度、OracleはJava 13をオープンソースのクラスパス例外付きのGNU General Public Licence v2 (GPLv2+CPE) に基づいてOracle OpenJDKリリースとしてリリースします。また、Oracle製品やサービスの一部としてOracle JDKリリースを使用する方々や、オープンソースソフトウェアを使いたくない方々向けに商用ライセンスの下でもOracle JDKをリリースします。
OpenJDK 13
https://jdk.java.net/13/
Java 13, Together
Java 11やJava 12と同様に、OpenJDKコミュニティの多くの個人や組織からJava 13に寄せられた貢献を称え続けています。私たちが全員一緒になってJavaをつくっています!
Building JDK 11 Together
https://blogs.oracle.com/java-platform-group/building-jdk-11-together
https://orablogs-jp.blogspot.com/2018/10/building-jdk-11-together.html
The arrival of Java 12!
https://blogs.oracle.com/java-platform-group/the-arrival-of-java-12
JDK 13 Fix Ratio
長期にわたるJDKの全体的な変化率は基本的に長年一定でしたが、6か月サイクルになったことで、開発者に提供されるイノベーションのペースが大幅に改善されました。数年ごとに大規模なメジャーリリースで数万個の修正と約100個のJEPを利用できるようにする代わりに、管理しやすく予測可能な6か月のスケジュールで小規模な機能リリースで機能拡張を利用できます。この変更は、重要な機能から、定期的なメンテナンス、バグ修正、ドキュメントの改善といった小さな拡張にまで及びます。こうした変更の各々は、JDK Bug Systemの単一の問題に対する単一のコミットで表現されています。
JDK Bug System
https://bugs.openjdk.java.net/secure/Dashboard.jspa
JDK 13での修正対象としてマークされているJIRA上の2,126個のIssueのうち、1,454個がOracleで働く人々が、671個は個人開発者や他の企業に属する開発者が、それぞれ対応しました。Issueと担当者の組織データを照合すると、以下のようなJDK 13での修正開発を後援する組織のグラフができました。

Oracle所属の開発者はJIRAのIssueの70%弱をJDK 13開発期間中に解決したのに対し、30%弱を他の企業に所属の開発者が修正しました。OracleはGoogleやRed Hat、SAPといった企業に属する開発者の多大な貢献に感謝すると共に、Bellsoftのような小規模な組織や、JDK 13の修正の5%に貢献してくださった個人開発者のみなさまにも感謝申し上げます。
このリリースで注目すべきは、ARMサポートに関心のある組織からの貢献です。 Ampere Computing、ARM、Huawei、Linaroの方々がこの点で貢献してくださいました。このリリースでは、MIPSベースのCPUに取り組んでいるLoongsonからの貢献もありました。
Oracleは、提案された変更をレビューしてくださった多くの経験豊富な開発者、早期アクセスビルドを試して問題を報告してくださったアーリーアダプター、OpenJDKメーリングリストに関するフィードバックを提供した専門家に感謝しています。また、Nicolai Parlogの”Definitive Guide To Switch Expressions In Java 13″のような、新機能を紹介する高品質のコンテンツを提供してくれた人たちにも感謝申し上げます。
Definitive Guide To Switch Expressions In Java 13
https://blog.codefx.org/java/switch-expressions/
New Enhancements in Java 13
Java 13では、2つのプレビュー機能を含む5つの拡張機能が提供されます。
JDK 13
http://openjdk.java.net/projects/jdk/13/
JEP 350 – Dynamic CDS Archives
アプリケーションクラスデータ共有 (JEP 310) を拡張して、Javaアプリケーション実行の最後にクラスの動的アーカイブを可能にします。アーカイブされたクラスには、デフォルトのベースレイヤーCDSアーカイブに存在しない、ロードされたすべてのアプリケーションクラスとライブラリクラスが含まれます。
JEP 310: Application Class-Data Sharing
https://openjdk.java.net/jeps/310
JEP 351 – ZGC: Uncommit Unused Memory
ZGCを拡張し、利用されていないヒープメモリをOSに返すようにしました。
JEP 353 – Reimplement the Legacy Socket API
java.net.Socket と java.net.ServerSocket APIが利用する配下の実装をよりシンプルかつモダンな実装に置き換え、メンテナンスとデバッグを容易にしました。この新たな実装により、現在Project Loomで調査中の、fiberとしても知られるユーザーモードスレッドへの対応が簡単になると考えています。
Loom – Fibers, Continuations and Tail-Calls for the JVM
https://openjdk.java.net/projects/loom
JEP 354 – Switch Expressions (Preview)
switchを拡張して、ステートメントまたは式として使用できるようにします。これにより、日常のコーディングが簡素化され、スイッチでのパターンマッチング(JEP 305)の利用に対応できるようにしています。
JEP 305: Pattern Matching for instanceof (Preview)
https://openjdk.java.net/jeps/305
JEP 355 – Text Blocks (Preview)
Java言語にテキストブロックを追加しました。これにより、よくあるエスケープシーケンスを避けながら、ソースコードの複数行にわたる文字列を簡単に表現できるようになり、Javaプログラムの作成タスクを簡素化でき、Javaプログラム内のJava以外の言語で表現されたコードを示す文字列の可読性を高めます。同様に、新しいコンストラクトが同じ文字列セットを文字列リテラルとして表現し、同じエスケープシーケンスを解釈し、文字列リテラルのように操作できることを規定することにより、文字列リテラルからの移行をサポートします。
Javaは、ソフトウェアプログラマーが選択するプログラミング言語の第1位であり続けています。また、Java 13での改善のオンタイムデリバリが示すように、継続的かつよく考えられた計画とエコシステムの関与を通じて、Javaプラットフォームはクラウドでの最新の開発と成長のためによい状況にあります。