さて、OracleがJavaの開発キットを有償化することを発表して1年半が経ち、実際に有償バージョンがリリースされて、更にJDK8がサポート対象外となりました。
これはだいぶ前に書いた記事ですが、その後も状況は刻々と変化していき、いろんなことが具体化してきたので、つらつらと書きたいと思います。
まず、最初に謝っておかなければいけないことがあるのですが、「JDKが有償化してもJREさえ更新しておけばOK」と書いたのは嘘でした。ごめんなさい。
当時見落としていたのか、その後方針が発表されたのかわからないのですが、Oracle社は、JDK11のリリースに伴い(JDK9から?)、公式JREの配布を止めてしまいました。
なので、JREはバージョン8以降、更新されることはありません。困った人も少なからずいるものと思われます。
JRE が必要な人は色々大変だとは思いますが、頑張ってください。
顧客(自分)が一番欲しかったもの
新たな選択肢を検討する前に、かつての Oracle JDK から、私たちはどんな利益を得ていたのでしょうか?
そして、リリースモデルが変更された今、どういった状態がベストなのでしょうか?
そこから考えていきます。
まず、サポートですが、電話やメールでの問い合わせをしていた開発者は、それほど多くは無かったと思います。そういった手厚いサポートが必要な人たちは、リリースモデル変更前から、Oracle社に対して対価を払ってサポート契約を結んでいたので、今後もお金で解決すれば問題ないでしょう。
そうではなく、公開されたものをダウンロードしてインストールして使っていた開発者が、JDK に望む要件を考えてみると、以下のようになると思われます。
- 開発や本番環境にフリーで使用できること
- JDK 一式がインストーラー又はZipを解凍してインストールできること
- Ubuntuで apt install できて apt upgrade もできること
- たまにパッチがリリースされ、セキュリティがそれなりに安全に保たれていること
- 一つのバージョン(少なくともソースコードの互換性が保たれたバージョン)が、数年単位で使用できること
このぐらいのことが、以前の Oracle JDK からは享受できていたと思われます。Oracleさん、ありがとう!
リリースモデル変更後はどうなるかというと、ザックリいうとフリーで使うためには、OpenJDK を利用すればよいのですが、リリース後の3ケ月後に1回パッチが出て、半年後には次のバージョンにアップデートされます。最新の状態に保とうとすると、移行期間なしで次々とメジャーバージョンアップを繰り返すという運用が必要になります。本番系で商用運用しているサーバーで、これはしんどい。
今、ベストな選択肢
ということで、 OpenJDK をベースに長期サポートを提供するベンダーがいくつか出てきましたので、それらを検討したいのですが、面倒なので結論から言います。
それは、 Azul SYSTEMS が提供する Zulu です。
Azul SYSTEMS の提供している比較ページがあるので貼っておきます。提供元の情報なのでお手盛り感はありますが、なかなか良さそうです。
Zulu Comparison Matrix - Azul Systems Inc.
商用サポートを受けるためには、最低1年間 $13,500 とお高いですが、そもそも Oracle JDK 時代もサポートを受けていなかった我々には無用です!
コミュニティバージョンのビルドは、無料でダウンロードして使用できる代わりに一切の保証がありませんが、パッチの提供期間は長く、LTSバージョンはなんと10年以上提供されるようです。それどころか、JDK7なども、いまだにパッチが出ています。すごいですね。これなら安心ですね。
更に嬉しいのが、 apt と yum のリポジトリが公開されていて、サーバー側でも、 apt install や yum install できそうです。サーバー構築時にリポジトリを追加する手間はかかりますが、これなら今まで通りの運用ができそうです。
難点を言うと、名前からそれが OpenJDK のビルド提供だとはとても思えないところでしょうか?^^;
まったく、 Java っぽくも JDK っぽくも OpenJDK っぽくもないので、なんか心的抵抗が強い。。。
Zulu で良さそう
とはいえ、名前の違和感は中身とは関係ないことですので、現時点の情報で判断すると、 Zulu を使っておけば良さそうです。
他のビルドも大きく劣るということはなさそうなので、運用の見通しが立つなら好きなものを使えばよいと思います。
異論や反論はお受けします。
※追記
Zulu のコミュニティビルドは、サポート期間も保証されていないという指摘をいただきました。現時点で、JDK7にパッチを提供しているぐらいなので、当面は大丈夫かとは思いますが、突然サポート方針が変更になる可能性が無いとも限りません。その辺のところは、無償利用に乗っかている立場なので、自己責任ということで理解して使用する必要がありますね。