無償でJavaを商用使用する場合に検討すべき3つのJDK


[IPA](https://www.ipa.go.jp/security/announce/java8_eol.html)でも注意喚起されていますが、OracleのJDKがJava 11から商用利用が有償となり、今後無償でJavaを利用するのであれば他のJDKを利用する必要があります。
社内でJavaに関するチームがあるのですが、そのチーム内での調査でOracle以外の各社で提供しているJDKについて@s-tsuchidaに調査をお願いしました。
その調査結果に加えて、個人的にかなり時間をかけて調査してしまったので、個人的に今後Javaを使用するのであれば検討すべきと考える3つのJDKについて紹介します。

# 前提条件

今回紹介する3つのJDKはマルチプラットフォームで使えるJDKに限定しています。
使用するプラットフォームによってはJDKが提供されている場合がありますので、そのような場合はそちらを優先して検討すべきです。
例えば、[Red Hat Enterprise Linux](https://developers.redhat.com/products/rhel/download/)を使用するのであれば、[Red Hat Open JDK](https://developers.redhat.com/products/openjdk/download/)を使うべきですし、LinuxのOSで使うのであればそのLinuxディストリビューションに含まれるJDKを使用することを検討すべきかと思います。

また、バグや脆弱性を修正したバイナリが長期サポートされるものであることが重要となります。

# AdoptOpenJDK

[AdoptOpenJDK - Open source, prebuilt OpenJDK binaries](https://adoptopenjdk.net)

OracleのJDKが有償となった際に最初に本命として挙げられたJDKです。
バイナリの提供にはIBMやMicrosoft等の企業がスポンサーとして大きく関わっています。
[Pleiades All in One](http://mergedoc.osdn.jp/)ではすでにJava 11のJDKとしてAdoptOpenJDKを標準搭載するようになっています。

## サポート期間
- Java 8：2023年9月まで
- Java 11：2022年9月まで

上記サポート期間は最低限としている期間なので伸びる可能性はあります。

欠点としては、リリースノートがないので更新内容やいつ更新されたのかがわかりにくいことと、リリースが遅いことです。
[OpenJDK Authorである久保田祐史さんのスライド](https://www.slideshare.net/YujiKubota/introduction-to-java-11-support-and-jvm-features)によるとビルドやテストを行うためOracleよりも1~2週間くらいリリースが遅いとのことです。

あと、AdoptOpenJDKはバイナリを提供するのみで、有償サポートを行っておりません。
ですが、JVMがOpenJ9のバイナリについてはIBMが[IBM Support for Runtimes](https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&appname=gpateam&supplier=760&letternum=JAJPJP17-0641)という有償サポートを提供しております。

# Zulu

https://jp.azul.com/downloads/zulu/

ZuluはAzul Systemsが提供しているOpen JDKです。
Azulでは他にも組み込み等で使用できるOpen JDKである[Zulu Embedded](https://jp.azul.com/products/zulu-embedded/)や独自のJVMである[Zing](https://jp.azul.com/products/zing/)といった製品があるJavaに特化した企業です。
JCP Executive CommitteeとJSR expert groupsのメンバーであり、[Java is Still Free(日本語翻訳)](https://docs.google.com/document/d/1HtUnuAkUEDGL2gwUOkrDrmLe_zrD6wpAyqYBZxRmHv4/edit)によるとOpenJDK 6のサポートを主体となって行っているようです。
上記で紹介したAdoptOpenJDKについてもIBMやMicrosoftと同じくスポンサーとして大きく関わっています。
また、Microsoftとの関わりが強くAzureを中心にMicrosoft製品のJavaに大きく関わっています。

## サポート期間
- Java 8：2026年9月まで
- Java 11：2027年9月まで

かなり長いサポート期間を上記に記載しましたが、上記サポート期間は**有償サポートであるZulu Enterpriseのサポート期間**になります。
では、Zuluはいつまでサポートされるのかといわれるとサポート期間についての記載はどこにもありませんでした。
ですが、現状、Zuluのダウンロードページでは11、8に加えてZulu Enterpriseの長期サポート期間中の7、6についても最新のバイナリがダウンロードできるようになっています。
下記の記事によるとZulu EnterpriseはZuluに有償サポートを加えた製品とのことなので、無償としているZuluがZulu Enterpriseのベースになる形を変えることがなければ上記のサポート終了までバイナリが提供されるのではないかと思います。

[【GlassFish勉強会レポート】各JDKベンダの動向を知ってJava 11に備えよう：レポート｜gihyo.jp … 技術評論社](https://gihyo.jp/news/report/2018/10/0501)

また、[Zulu EnterpriseのFAQ](https://jp.azul.com/products/zulu-enterprise/zuluentfaq/)によると、Zuluは開発者向けのフルセットのJDKであり、Zulu Enterpriseでは実行環境用のJRE等も提供されるという違いがあります。
Oracleが提供するOpen JDKもJREは提供しないようになったので、JDKさえあればいいという方であれば特に問題にはならないかと思います。

リリースの早さについては情報が少ないのですが、リリースノートによるとJava 11とOctober 2018 Critical PatchのリリースについてはOracleから2日遅れでリリースされているようなので、早めに提供されているものと思います。

Zulu Enterpriseの有償サポートは他の有償サポートと異なりシステムの数で価格が決まるので、有償サポートを使う場合でも価格がわかりやすいと思います。

また、Microsoftと提携しAzureとAzure Stack上での使用目的であれば無償で上記のZulu Enterpriseのサポートが受けられるようになっています。
Zulu Enterpriseはサポート期間が長いので、Azure上での使用であればZuluがかなり有力な選択肢になるのではないでしょうか。
[Microsoft と Azul Systems による Azure での無料 Java LTS のサポート](https://azure.microsoft.com/ja-jp/blog/microsoft-and-azul-systems-bring-free-java-lts-support-to-azure/)

Azure上で使用する場合は下記のページからAzure使用者向けのJDK、JREをダウンロードできます。
[Download Azul Zulu tested certified OpenJDK builds Linux Windows Mac](https://jp.azul.com/downloads/azure-only/zulu/)

# Amazon Corretto

[Downloads for Amazon Corretto 8 - Amazon Corretto 8](https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-8-ug/downloads-list.html)

最近発表されて今後Javaを使用する際の有力な選択肢として話題となっているJDKです。
Amazon CorrettoはAmazon内部で使用していたJavaでそれを外部に提供する形に変えたものとのことです。
AmazonがOpenJDKには2017年から貢献しており、今後増やしていくとのことです。

[Introducing Amazon Corretto, a No-Cost Distribution of OpenJDK with Long-Term Support | AWS Open Source Blog](https://aws.amazon.com/jp/blogs/opensource/amazon-corretto-no-cost-distribution-openjdk-long-term-support/)

[Amazon Corretto FAQs](https://aws.amazon.com/jp/corretto/faqs/#support)

## サポート期間
- Java 8：2023年6月まで
- Java 11：2024年8月まで

上記サポート期間についても最低限としている期間なので伸びる可能性はあります。
Corretto 8についてはプレビュー版が提供されている状況で、正式版については2019年1月に提供開始となる予定だそうです。
Corretto 11については2019年4月以降になるようです。
Corretto 8のプレビュー版ではAmazon Linux 2、Windows、MacでのJDKが提供されていますが、正式版ではUbuntuとRed Hat Enterprise Linux向けのJDKも提供されるとのことです。

現状ではまだ正式に提供されていない状況なのでリリースの早さなど見えていない部分もあるので今後の動向に注目していきたいところです。
また、プレビュー版ではAmazon Linux 2のみJREが提供されているので、AWS上のAmazon Linux 2で運用してもらうことを重視しているのではないかと思います。