セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

マーブルワーズ

Oralce JDK の有償化後の今 OpenJDK ベースでベストな選択肢

さて、OracleがJavaの開発キットを有償化することを発表して1年半が経ち、実際に有償バージョンがリリースされて、更にJDK8がサポート対象外となりました。

qtamaki.hatenablog.com

これはだいぶ前に書いた記事ですが、その後も状況は刻々と変化していき、いろんなことが具体化してきたので、つらつらと書きたいと思います。

まず、最初に謝っておかなければいけないことがあるのですが、「JDKが有償化してもJREさえ更新しておけばOK」と書いたのは嘘でした。ごめんなさい。

当時見落としていたのか、その後方針が発表されたのかわからないのですが、Oracle社は、JDK11のリリースに伴い(JDK9から?)、公式JREの配布を止めてしまいました。

なので、JREはバージョン8以降、更新されることはありません。困った人も少なからずいるものと思われます。

JRE が必要な人は色々大変だとは思いますが、頑張ってください。

顧客(自分)が一番欲しかったもの

新たな選択肢を検討する前に、かつての Oracle JDK から、私たちはどんな利益を得ていたのでしょうか?

そして、リリースモデルが変更された今、どういった状態がベストなのでしょうか?

そこから考えていきます。

まず、サポートですが、電話やメールでの問い合わせをしていた開発者は、それほど多くは無かったと思います。そういった手厚いサポートが必要な人たちは、リリースモデル変更前から、Oracle社に対して対価を払ってサポート契約を結んでいたので、今後もお金で解決すれば問題ないでしょう。

そうではなく、公開されたものをダウンロードしてインストールして使っていた開発者が、JDK に望む要件を考えてみると、以下のようになると思われます。

  1. 開発や本番環境にフリーで使用できること
  2. JDK 一式がインストーラー又はZipを解凍してインストールできること
  3. Ubuntuで apt install できて apt upgrade もできること
  4. たまにパッチがリリースされ、セキュリティがそれなりに安全に保たれていること
  5. 一つのバージョン(少なくともソースコードの互換性が保たれたバージョン)が、数年単位で使用できること

このぐらいのことが、以前の 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にパッチを提供しているぐらいなので、当面は大丈夫かとは思いますが、突然サポート方針が変更になる可能性が無いとも限りません。その辺のところは、無償利用に乗っかている立場なので、自己責任ということで理解して使用する必要がありますね。

zulu_wire_basket_5Div4716