Java 10の新機能とリリースモデル:6ヶ月サイクルとLTSの解説
Java 10はJavaリリースケイデンスにおける主要なリリースで、2018年3月20日にリリースされました。Java 10からOracleはJavaのリリースケイデンスを新しいモデル、すなわち6ヶ月ごとのリリースサイクルとOracle Java SE製品のLTS(Long Term Support:長期サポート)モデルに変更しました。
Java 10以降、Oracleは6ヶ月ごとに新しいJavaバージョンをリリースし、各バージョンには1〜2つの主要機能が含まれます。Oracleは「リリース列車」という概念を採用しており、各リリース列車は6ヶ月間でスケジュールされます。この期間内に開発された機能がリリースに含まれ、間に合わない機能は次のリリース列車に持ち越されます。
Oracle JDKとOpenJDK
Oracle JDKのバイナリの多くはOracleのプロプライエタリライセンスで、再配布に複数の制約があります。一方、OpenJDKは開発者コミュニティにとってよりフレンドリーです。Java 10以降、OracleはコミュニティベースのJava開発を促進するため、OpenJDKを主要なJDKとして推進することを決定しました。Oracleは独自のJDKも引き続き提供しますが、3年後にLTS版としてリリースします。したがって、OpenJDKバイナリは6ヶ月ごとにリリースされます。
OpenJDKはクラウドとコンテナに優しく、コンテナの一部として自由に配布できます。OracleのOpenJDK推進により、Javaはクラウドやコンテナでの開発・デプロイにより適したものになります。
Java 9とJava 10は非LTSリリースです。Java 11がLTSリリースとなります。
主な新機能
Java 10で導入された主要な新機能(JEP)は以下の通りです。
- JEP 286 - ローカル変数型推論(
varキーワード) - JEP 322 - 時間ベースのリリースバージョニング
- JEP 304 - ガベージコレクターインターフェース
- JEP 307 - G1の並列フルGC
- JEP 316 - 代替メモリデバイスへのヒープ割り当て
- JEP 296 - JDKフォレストの単一リポジトリへの統合
- JEP 310 - アプリケーションクラスデータ共有(AppCDS)
- JEP 314 - 追加Unicode言語タグ拡張
- JEP 319 - ルート証明書
- JEP 317 - 実験的JavaベースJITコンパイラ(Graal)
- JEP 312 - スレッドローカルハンドシェイク
- JEP 313 - ネイティブヘッダー生成ツール(javah)の削除
Java 10では70以上のAPIが新しいメソッドとオプションで拡張され、非推奨APIとオプションが削除されました。詳細は次の章で説明します。
Java
- Cプログラミング言語:包括的な概要
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Javaプログラミング言語:進化、バージョン、応用分野