OpenJDK まとめ(2019年5月6日版)
Oracle JDKの公開アップデート提供が終了したことで色々と騒ぎになっていますが、 サードパーティ製のOpenJDK(OpenJDKのディストリビューション)を使えば大抵は解決するだろう。 楽観的ではなくOracleがJava 11をリリースするタイミングで、 JavaFXやJava Mission Control/Java Flight RecorderなどをOSS化しているので、 乗り換えれば良いというお話です。
ちなみに、Java、Java SEが有償化したのではなく、 OpenJDKのディストリビューションのひとつである Oracle JDK の公開アップデートが終了した話のまとめは 「Java 有償化」で誤解する人になるべく分かりやすく説明するためのまとめ - Togetter や、なぜ「Javaが有償化する」と誤解されてしまうのか考えてみる - kazokmr's Blog をご覧下さい。
さて、ここからが本題。
数あるOpenJDKのうち、どれを使えばいいの?ということになりそうなので、 OpenJDKのディストリビューションにはどんなものがあるかご紹介します。
※ 筆者はJavaのいちユーザーに過ぎないため、細かい間違いなどはあるかと思いますがご了承ください。
OpenJDK (Oracle公式バイナリ)
Oracleが中心(あくまでも中心であって、Oracle以外のベンダーも開発に参加しています。新機能の追加は主にOracleらしいです。)に開発されているOpenJDKのOpenJDKプロジェクトによるビルド。 6ヶ月毎にアップデートされて行く。 メジャーバージョンが変わって行くものの、実は今までのOracle JDKでは、 同じメジャーバージョンのアップデートリリースで機能追加が行われていたものが、 きちんと不具合修正のみと機能追加を含むという採番ルールに変わっただけという。。。
JDKの新しいリリース・モデル、および提供ライセンスについて
Red Hat版OpenJDK (この子はだけは無償ではないです)
Red Hat Developer | Red Hat OpenJDK Download
OpenJDKのセキュリティアップデートなどは、JDK 7の頃からRed Hat(最近、RedとHatの間にスペース入るようになったらしい。どうでもいいけど)が中心に行っているそうで、Red Hat Enterprise Linuxと、Windows版が提供されている。
LTSサポートあり。
無償で使えるのはWindows版(おそらくWindows Serverを除く?)だけなので、開発者向けの配布だそうです。
開発者向けの配布で、商用利用はサブスクリプションに加入する必要があるとのこと。
LIBERICA JDK
BellSoft | Java Platform and Applications Experts
BellSoft が提供しているOpenJDKディストリビューション。 LTSサポートあり。 AlpineLinux (must-libc)版あり?(少なくともDockerイメージは提供されています) JavaFX(多分OpenFX)も付属。 Windowsの32bit版もある。
多分、未だJigsaw対応出来ていなくて、Java 8のままなんだけども。。。というプロジェクトや、幾ら何でも6ヶ月毎の更新は対応が間に合わないという型の乗り換え先の最有力候補なんじゃなかろうか?
現状、後述のZuluの方がAlpineLinux対応はしっかりしているらしいです。
では少しだけw
— Takahiro YAMADA (@yamadamn) 2019年5月6日
Liberica JDK(一応Capital)を私が推すのは、あくまでクライアント用でJavaFXを利用していたところです。
先ほどツイートが見えたばかりですが、実はAlpineとかDocker対応はかなり中途半端です。
こちらを参考にしてください (他力本願) https://t.co/3dP7uzaPy0
Zulu Enterprise
Get Java Support OpenJDK Support subscriptions Java Security Updates
Azul Systemsが提供しているOpenJDKディストリビューション。 LTSサポートあり。 AlpineLinux (must-libc)版あり。 ライセンスはOpenJDKと同じGPLv2+クラスパス例外。 Java 11からはLICENSE テキストファイルが同封されなくなったが、同封のreadme.txtに記載されている。 また、それに加えてZulu/Azul Systemsの免責事項などが記載された利用規約が存在する。(記述内容がGPLv2+クラスパス例外と矛盾する場合はGPLv2+クラスパス例外が優先されるようなことが英語で書かれている)
LIBERICA JDKの次に有力な候補ではないかと思われる。(特にAlpineLinuxを使う場合)
ちなみに、ソースコードは要求しないと貰えないようです。 (昔のインターネット回線が遅かったり、常時接続じゃなかった頃を思い出させられる)
Amazon Corretto
Amazon Corretto(本番環境に対応したOpenJDKディストリビューション)| AWS
Amazon(AWS)が提供しているOpenJDKディストリビューション。 LTSサポートあり。 Windows版、Mac版もある。 基本的にはAmazon Linux向けかな? Javaの父であるJames Goslingは、現在Amazonに所属していることもあって話題となった。 Amazon Linux 2ベースで動いているJavaアプリは、これを使うのが良いのだろう。 (うちのプロジェクトは、AWSに乗っていても、後発のAmazon Linuxに乗り換えてすらいないで 他のOpenJDKディストリビューションに乗り換えましたけどね)
SapMachine
SapMachine | An OpenJDK release maintained and supported by SAP
SAPが提供が提供しているOpenJDKディストリビューション。 LTSサポートあり。 PPC用Linux版があるのが特徴。
AdoptOpenJDK
AdoptOpenJDK - Open source, prebuilt OpenJDK binaries
AdoptOpenJDKコミュニティが提供しているOpenJDKディストリビューション。 AdoptOpenJDKプロジェクト自体は、OpenJDKのビルドファームということで、 マイクロソフト含めて様々なベンダーがスポンサーとなっている。 HotSpot VM(Oracle JDKをはじめ、各OpenJDKディストリビューションはこれ)ベースと、 IBMのOpenJ9ベースの両方を提供しているのが特徴。 LTSサポートあり。
ただし、政治的な都合でTCKと呼ばれる互換性確認テストを通せていない。 (AdoptOpenJDKをTCK通したら、他のOpenJDKディストリビューションの存在意義が皆無になるから、 Oracleが嫌がっているという風の噂も。。。噂ですからね)
ちなみに、Windows版にOpenFXをバンドルする予定があるとか。
おまけ
IcedTea
https://icedtea.classpath.org/wiki/Main_Page
Java 8までのRed HatのOpenJDKディストリビューション。 (ページタイトルがMainPageって。。。)
IcedTea-Web
上記IceTeaから分離したJava Web StartのOSS実装。 今後、Java Web Startを無償で使うなら、IceTea-Webになるのだろう。
謝辞
OpenJDKソムリエの @yamadamn さん、ご確認およびご指摘いただきましてありがとうございました。