JJUG CCCであったJavaのリリースサイクルについてセッションの内容をまとめました。
正式発表はOracleから発表があるとのことだが、現状(2017/11/17)の方針ということだそうです。(下記のセッションで話された内容です。)
————————————————————————————
JDKの新しいリリースモデル
このセッションでは、10月に開催されたJavaOne 2017 San Francisco以降、多くのメディアで取り上げられてきたJDKの新しいリリースモデルについて説明させていただきます。何が変更されるのか、その変更がもたらすメリットと影響についてご理解いただきます。JDKの新しいリリースモデルについてご存知ない方は是非ご参加ください。
————————————————————————————
・新しいリリースモデルの概要
6ヶ月ごとの決めた日にリリース(3月、9月)
新機能は、完成した次のリリースで正式にリリースされる(3月、9月以外のリリースはセキュリティパッチのみを行い、機能の追加は3月および9月のリリースでのみで追加される)
OpenJDKとの用途の明確化をする。(OracleJDKの商用機能をOpenJDKに提供する)
OracleJDKの長期サポートは継続する。ただし、有償となる。
・リリースモデルの変更
[現状→変更]
OpenJDKの提供方法はソースコードのみ → OpenJDKもバイナリ形式で提供し、技術的な差分を2018年後半にはなくす
機能リリースを2年ごとのリリースで提供すること目標とする(大きな機能の実装が間に合わないなどの理由で、リリースの延期が度々発生している) → 必ず3月と9月にリリースを行い、実装された機能からリリースされる
OracleJDKはバイナリで提供し、すべての機能リリースをOracle Lifitime Support Policyに基きサポートする→OracleJDKの3年毎の機能リリースされるバージョンに対してOracle Lifitime Support Policy適用する
更新リリースはメンテナンスと限定的な機能追加アップデータを1月4月7月10月にリリースを行う → メンテナンスのみをリリースする
32bit、64bitのバイナリを提供 → Java10以降は64bitのみ
現在Windowsなどで自動更新を行っている → Javaの自動更新はなくなる
・変わらないこと
JCPによる機能の承認が必要
削除される機能は2バージョン後に削除される(ただし、これまでは数年間の猶予があったが、リリースが半年ごとになったので削除予定となった機能は1年後にはなくなる)
Javaのバージョンの名称 Java10,Java11,Java12と表記される(リリースのサイクルの変更の最初の発表時は18.3,18.9,19.3と表記されるとなっていた)
・リリーススケジュール(今後2年分)
2018年2月 Java10のearly access buildの提供
2018年3月 Java10のリリース OracleJDK(無償) OpenJDK(無償)
Java9のサポート終了(重要 Java8のサポート終了よりも前にJava9のサポートが終了する)
2018年8月 Java11のearly access buildの提供
2018年9月 Java11のリリース OracleJDK(有償かつ長期サポート版) OpenJDK(無償)
Java8、10のサポート終了
2019年2月 Java12のearly access buildの提供
2019年3月 Java12のリリース OracleJDK(有償) OpenJDK(無償)
Java11(OpenJDK)のサポート終了
2019年8月 Java13のearly access buildの提供
2019年9月 Java13のリリース OracleJDK(有償) OpenJDK(無償)
Java12(OracleJDK,OpenJDK)のサポート終了
・未確定の内容
OpenJDKの長期サポート版の用意? DEBOXで発表が会ったとのことだが確定ではない。
・まとめ
無償での利用はOpenJDKになる。しかも、次バージョンが出た時点でOpenJDKはサポートは終了となる。OracleJDKは有償の長期サポート版のみ一定期間サポートされる。長期サポート版でないOracleJDKの場合は、次バージョンがリリースされるとサポートされない。
有償版の機能が無償版でも利用できるようになる。(Java Flight Recoderなど)
リリースの1ヶ月前にはFinal Candidateが提供される。提供される内容は、その時点でJCPを通過し、機能の実装が完了しているものになる。JCPを通過していないものや実装が完了していないものはリリースされない。(リリースの日時がずれることはない)
32bitはリリース対象としない
伊藤さん曰く、Java9、Java10は新しいリリースサイクルに対応するための移行期間用のバージョンという位置づけ。Java11から本格的に運用されるので、移行先としてはJava11を想定するべきであるとのこと。