2017念にOracle社がJava SEの有償化を発表しました。ライセンスやリリースの考えかたがこれまでと大きく変わったのですが覚えられないので、まとめてみました。
久しぶりにSEらしい記事となります。そういえば自分がこの業界に入ったきっかけ、最初のお仕事はJavaのプログラマーでした。
もう15年くらい前になってしまうのですが、そのころのJavaは1.2とか1.3なんてバージョン名の付け方でしたね。開発のお仕事でJavaに触れることはほとんど無いですが、気が付けば5とか6とか全然違う表記になっていました。そんなJavaが気が付けばいま8ですか。親戚の子供みたいなもんで普段見てないとあっという間に成長するんですね。
と、まぁ疎遠になってしまったJavaではあるのですが、Javaを採用しているプロジェクトやエンドユーザさんと会話することは多いので、ちゃんと押さえておこうかなと思います。
OracleJavaSEの有償版と無償版の違い
有償ライセンスを購入していることによるQAサポートやトラブル対応のちがいモジュール自体は差異ナシ(同一バイナリ)。
過渡期にあたるJava9,10はサポート期間が短い
JavaXXの数字の部分の変わり方
JavaSE11以降は半年毎にJavaXXの数字の部分がインクリメントされていきます。こちらはOracle社がビルドしたOpenJDKとして更新がリリースされるようです。(さらにその半年中に2回の修正モジュール提供があるらしい)
OpenJDKとは何か
OpenJDKとしてjavaのソースコードが提供される。Oracle社がビルドしたバイナリが前述した「Oracle社がビルドしたOpenJDK」となる。サポートはナシ。他ベンダーのビルド版もある。
現行のリリースモデルに近いものは「OracleJavaSE」となる。Oracle者が提供するJDKおよびJRE。Oracle社による有償サポートがある。
企業でシステムとして組み込む場合は「OracleJavaSE」を使い、個人でちょちょっとJava弄ってみるような場合は「Oracle社がビルドしたOpenJDK」を使うことになるのですね。
追加される機能、削除される機能は
Java9以降の追加機能などは詳しく解説しているサイトがたくさんあるのでそちらから正しい情報を手にいれましょう。
Java9の目玉は「jigsaw」でしょうか。細かくjar参照領域を指定できるようになりますが、移行は大変そうですね。
また、Java10から「var」でローカル変数の宣言簡単に出来るのは便利になりそうな反面、新人プログラマによる無茶苦茶な実装が生まれそうな気がしています。
※ぼちぼち追記していきます。