「Java 12」リリース

 米Oracleは3月19日、「Java SE 12(JDK 12)」を公開した。ガベージコレクタ関連の強化などの機能が加わっている。

 Java SE 12は2018年10月に公開されたバージョン11に続く最新版。Javaは2017年の「Java 9」公開以来、3年に1度メジャーリリースを公開するサイクルから、毎年3月と9月にフィーチャーリリースを行う方針に変更している。これにより新機能をタイムリーに提供できるため、開発者は継続的に強化を利用でき、大型の変更に対応する必要がなくなるとOracleは説明している。

 各バージョンは次期版のリリースまでアップデートが行われるほか、3年に1度LTS(長期サポート版)がリリースされる方針で、最新のLTS版はJava 11。今回リリースされたJava SE 12は秋公開予定のJava SE 13まで最低2回のアップデートが行われる予定。Java 11については2023年9月までサポートが継続される。

 OracleはJavaのリリースサイクルとサポートだけでなく提供方法についても変更している。Java SE 11以降は、GNU General Public License v2 with the Classpath Exception(GPL v2+CPE)で利用できるOpenJDKと商用ライセンスのOracle JDKを提供する方針に切り替えている。

 Java SE 12では合計8つのJEP(JDK Enhancement Proposals、JDK強化提案)が採用された(一部実験的、プレビュー扱い)。その1つとして、Switch Expressionsをプレビューとして導入した。条件分岐のSwitch文を拡張して文または式として利用できるようにするもので、スコープと制御フローの振る舞いを通常型または簡素型で利用できる。

 また、ガベージコレクタ(GC)の新しいアルゴリズム「Shenandoah」を実験導入した。Javaスレッドの実行と同時にEvacuationを実行することでGCが一時停止する時間を削減するという。また、既存のGCであるG1も強化され、自動的にJavaヒープメモリをアイドル時にOSに戻すようになった。G1では、一時停止のターゲットを超えそうな時にMixed Collectionsを停止できるようにする強化も加わった。

 このほか、マイクロベンチマークのスイートの導入、JVM Constants APIの導入も加わった。JDKビルドプロセスでのクラスデータ共有(CDS)アーカイブの生成も強化した。また、2種類あったARM64ビット用ポートのソースコードを、32ビットのARMポートと64ビットのaarch64ポートを維持しつつ1種類にした。

 Java SE Development Kit 12は専用のページより入手できる。

Java SE Development Kit 12ダウンロード
https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html