Java 11 以降、どの JDK を使うか

スポンサーリンク

はじめに

2018 年 12 月の時点で Java の最新バージョンである 11 を使用することを検討しています。Java の開発キットである JDK は、様々な企業、組織から提供されています。しかし、バージョン 11 を境にいろいろとややこしいことになっているため、いろいろな選択肢の中から最適なものを選択する必要がでてきます。個人的な趣味で開発を行う場合、何を使おうかなという話です。

ややこしさの 1 つとして、バージョン 11 を機に、オラクルのライセンスが変更されました。

Oracle JDK 11 のライセンスに関する重要な変更
https://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

JDK 11より、オラクルが提供するOracle JDKのライセンス条項を変更しました。
新しいライセンス、Oracle Technology Network License Agreement for Oracle Java SEは、これまで提供してきた過去のバージョンのJDKのライセンスと大きく異なります。Oracle JDK 11をダウンロードする場合は、この新しいライセンスを必ずご確認ください。

また、オラクルは GPL ライセンス で利用できる JDK 11 を jdk.java.net/11 で提供しています。

なぜ Java ?

言語はあくまで道具であり手段です。目的を達成するために最適な手段が他にあれば、それを検討するのもひとつの選択肢でしょう。ここでは、それらの良い点、良くない点を検討した上で Java が最適な選択肢であろうと決断されたとして進めます。

参考までに、世の中の「今」のトレンドを見てみましょう。いろいろな角度からプログラミング言語に対して順位付けを行っている結果が公開されています。有名と思われるものを 3 つほど紹介します。いずれも 2018 年 12 月に確認した内容です。

TIOBE Index

まずはTIOBEです。よく目にしますね。

TIOBE Index | TIOBE - The Software Quality Company
The TIOBE Programming Community index is an indicator of the popularity of programming languages.

2018 年 12 月の結果です。上記サイトの内容は毎月更新されるため、最新の情報とは異なる可能性があります。

PYPL PopularitY of Programming Language

続いて PYPL です。

PYPL PopularitY of Programming Language index
PYPL popularity of programming language

2018 年 12 月の結果です。上記URLの内容は毎月更新されるため、最新の情報とは異なる可能性があります。

IEEE Spectrum

最後に IEEE です。IEEE といえば、電気、電子、通信のイメージが強いですが、プログラミング言語の順位付けもやっているんですね。

The 2018 Top Programming Languages
Python stays on top, and Assembly enters the Top Ten

2018 年 7 月の記事です。

何ドリブンで JDK 選択するか?

何を重視するかで取るべき選択肢も異なってくるでしょう。パッと思いつくのは、

  • セキュリティパッチなど長期サポートが欲しい
  • お金は一切払いたくない
  • ライセンスに悩みたくない
  • 常に新しいものがいい

などなど。フローチャートみたいなのを描こうともしましたが何を重視するかで何パターンも考慮しないといけないだろうということで止めました。

それでは、2018 年 12 月現在の選択肢の一例です。

出費はしたくない、オラクルの Oracle Technology Network License Agreement for Oracle Java SE とは関わり合いたくない、自分で何とかする派

今後、Java は 6 ヶ月毎に新しいバージョンがリリースされますが、

  • その都度、新しいバージョンを使用し、
  • かつ、Java を使用する環境が Linux か macOS か Windows であり、
  • かつ、GNU General Public License, version 2, with the Classpath Exception ラインセンスで大丈夫

である場合、オラクルの OpenJDK という選択肢があります。

JDK Builds from Oracle

あるいは、Zulu という選択肢もあります。

Azul Zuluをダウンロード 試験済 認証済 OpenJDK でLinuxやWindows、Mac、Solarisを構築
Zuluのダウンロードはこちら 無料 テスト済み 認証済み OpenJDKビルド サポートプラン オープンソース Java SE 無料ダウンロード OpenJDK java 8 java 7 java 6 Java 9 OpenJDK Windows OpenJDK Linux OpenJDK macOS OpenJD...

Zule では、Linux 向けにtar、rpm、debが、macOS 向けに zip、dmg、tarが、Windows 向けに zip、msi が提供されています。さらに Dockerfile やyum、aptリポジトリまで。

Zuleの利用規約は下記のページに書かれています。

Zulu® Terms of Use - Azul Systems, Inc.
Zulu is copyrighted software based on OpenJDK and is 100% open source.By downloading, installing, or otherwise using Zulu, you agree to these terms.

ただし、自分自身が Java の 6 ヶ月のリリースサイクルに追従できるぜ!と思っていても、どうしても使わなければならないフレームワークやライブラリが同じように追従してくれるとは限りません。そのため、この選択肢を取れるのは、開発、運用にあたって Java に関する部分を自分自身ですべてコントロールできる場合ではないでしょうか。

出費はしたくない、オラクルの Oracle Technology Network License Agreement for Oracle Java SE とは関わり合いたくない、セキュリティパッチなんて要らない派

昨今、この選択肢を取ることができるケースはあまり無いと思いますが、リスクアセスメントを行い、リスクを受容できると判断した場合、上記のオラクルの OpenJDK や Zule の OpenJDK を使い続けるという選択肢もあります。

オラクルの Oracle Technology Network License Agreement for Oracle Java SE は理解した、出費はする、同じバージョンを安全に末永く支えてほしい派

いやいや、リリースされてから 7 ヶ月以降も同じバージョンの Java を使い続けたい、かつ、セキュリティも気にする場合は、オラクルの Oracle JDK を使用し、オラクルの有償サポートを受けましょう。ちなみにこちらは Solaris もサポートしています。Linux 向けに deb、rpm、tar が、macOS 向けにdmg、tarが、Windows 向けに exe、zip が、Solaris 向けに tar が提供されています。

Java SE - Downloads | Oracle Technology Network | Oracle
Java SE downloads including: Java Development Kit (JDK), Server Java Runtime Environment (Server JRE), and Java Runtime Environment (JRE).

なお、Oracle Technology Network License Agreement for Oracle Java SE を見ると、開発、テスト、プロトタイプ作成、デモンストレーションの目的以外で Oracle JDK を使用する場合、7 ヶ月以降やセキュリティ云々は関係なく有償サポートを受ける必要があるのではないかと読み取れます。つまり、オラクルの Oracle JDK を商用で使用する場合は問答無用で有償です。しかし、私がこのライセンスの内容を読み取れていない恐れもあります。そのため、下記のOracle Technology Network License Agreement for Oracle Java SE の公式情報をご確認ください。

OTN開発者ライセンス
OTN開発者ライセンス

オラクルには関わり合いたくない、出費はする、同じバージョンを末永く支えて欲しい派

Zulu Enterprise という選択肢があります。

Get Java Support OpenJDK Support subscriptions Java Security Updates
Zulu Enterprise OpenJDK JDK 11 Java 11 Java SE Java 8 support JDK 7 JDK 6 macOS Windows Linux security updates bug fixes premium support standard pricing

また、Microsoft Azure、Azure Stack にデプロイするアプリケーション、あるいはアプリケーションコンポーネントを開発用途に限り、提供される無料のバイナリもあるようです。

Download Azul Zulu tested certified OpenJDK builds Linux Windows Mac
Download Azul Systems Microsoft Azure Zulu Enterprise OpenJDK Java SE open source java 8 java 7 java 11 Docker Windows Linux macOS

オラクルには関わり合いたくない、出費はしたくない、でも同じバージョンを安全になるべく長く使いたい派

そんな都合の良い話があるわけないだろう・・・、と思われるかもしれませんが、あります。AdoptOpenJDK です。

Archive | AdoptOpenJDK
AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. Supported platforms include Linux, macOS, Wind...

JVM が Hotspot の場合、Linux 向けに tarが、macOS 向けに tar が、Windows 向けに zip が提供されています。JVM は OpenJ9 も選択でき、その場合、AIX 向けも提供されています。

Supportページを見ると、少なくとも 2022 年 9 月までサポートすると書かれていますね。サポートレベルは best effort とのことです。

Support | AdoptOpenJDK
AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. Supported platforms include Linux, macOS, Wind...

サポートレベルさえ許容できれば、AdoptOpenJDK で良さそうな場合もあるでしょう。

ここまでは 2018 年 12 月時点で取り得る選択肢です。続いて、少し将来を見据えた選択肢も挙げておきます。

Red Hat

Red Hat Enterprise Linux でお馴染みの Red Hat も OpenJDK 11 を提供するようです。しかし、2018 年 12 月時点では詳細はわかりません。

Red Hat OpenJDK 11 Advice
https://access.redhat.com/articles/3409141

IBM

International Business Machines でお馴染みの IBM も OpenJDK 11 を提供するようです。しかし、2018 年 12 月時点では詳細はわかりません。

Java SE 8 無償サポート終了後の準備は万全でしょうか?
https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?htmlfid=46015546JPJA

Amazon Web Services

2018 年 11 月に下記のアナウンスがありました。

Introducing Amazon Corretto, a No-Cost Distribution of OpenJDK with Long-Term Support
https://aws.amazon.com/jp/blogs/opensource/amazon-corretto-no-cost-distribution-openjdk-long-term-support/

なお、この記事を見て知ったのですが、Wikipedia によると Java の生みの親として知られている James Gosling さんですが、今は AWS に所属されているのですね。

2018 年 12 月時点では、OpenJDK 8 に相当する Amazon Corretto 8 のプレビュー版が提供されています。Amazon Linux 2 向けに rpm が、macOS 向けに pkg が、Windows 向けに msi が提供されています。また、Docker イメージについても触れられています。

OpenJDK 11 に相当する Amazon Corretto 11 は、2019 年 4 月にリリースされるように見受けられますが、私が誤訳しているかもしれません。正確な情報は公式情報をご確認ください。

Amazon Corretto
https://aws.amazon.com/jp/corretto/

Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK).

production-readyですよ、production-ready。

さて、Amazon は、クラウドだけではなく Java でも覇権を取ってしまうのでしょうか?

で、結局 Java 11 は、どの JDK を使えばいいのさ?

長々と書きましたが、ご自身のライフスタイルに合わせて選択ください、ということになります。私は今のところ、

  • 2019 年 4 月?の Amazon Corretto 11 リリースまではオラクルの OpenJDK 11
  • 2019 年 4 月?の Amazon Corretto 11 リリース後は Amazon Corretto 11

を使おうかなと考えています。私は macOS と Ubuntu と CentOS でしか使わないですし。

もっと良いまとめは?

このポストを書いていて見つけました。Java Champions community による Java Is Still Free という文章です。

Java Is Still Free – Java Champions – Medium
This is a repeat of the original Google Doc put together by the Java Champions community of independent Java leaders and experts

オリジナルはGoogle Docにあるようです。

Java Is Still Free
https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo

しかも日本語訳まであるようです。

Javaは今も無償です。
https://docs.google.com/document/d/1HtUnuAkUEDGL2gwUOkrDrmLe_zrD6wpAyqYBZxRmHv4

Java
スポンサーリンク
コピペワールド