Java 10以降のJavaについて、少し混乱があるようです。
ちょうど僕は数日前までJfokusというJavaカンファレンスでストックホルムに来ており、オラクルのJavaプラットフォームグループのチーフアーキテクト、Mark Reinhold氏による"Moving Java Forward Faster"というセッションに出ていました。
そこで聞いた内容を共有します。なお、そのセッションの動画も公開されています。
所感
何も心配いらない。むしろよいことである。
要約
今までのOracle JDKの無償版はなくなり、OpenJDKが提供されます。Oracle JDKとOpenJDKの違いとしては、Oracle JDKにはオラクルのバイナリコードライセンスがあること、一部のコードが異なる(TCKにより機能的な差はないと保証される)、グラフィック・ラスタライザ、サード・パーティ・フォント、追加ドキュメントなど、クローズドソースのサード・パーティ・コンポーネントが含まれていること、商用機能があること、などでした。
Oracle JDKにある商用機能も、徐々にOpenJDKに統合されます。つまり、今まで商用機能だったものがオープンソースになるのです!具体的にはAppCDS、Java Flight Recorder、Java Mission Control、ZGCです。このうちAppCDSは今のJava 10のビルドに入っています。
OpenJDKビルドのものはGPLライセンスとなります。
リリースサイクルの変更により、OpenJDKの各バージョンは最短6ヶ月(次のバージョンのリリースまで)しかコントリビュータによってサポートされません。ただし、3年ごとにLTSバージョンがあり、そのバージョンは次のLTSバージョンまでの3年間サポートされます。これはOpenJDKに対してのことです。最初のLTSはJava 11、今年2018年の9月です。
あくまで最短6ヶ月(LTSは3年)ですので、場合によってはこれより長くなることもあります。これ以上のサポートを望む場合は、オラクルの有償ライセンスを利用してほしいということでしょう。このことが何か大きな変化をもたらすものではないと理解できます。今Java 7以前を使っているならEOLを過ぎていますが、それは今後LTSバージョンで3年を過ぎても使った場合と捉えてよいでしょう。
今後リリースされるOpenJDKも、今までどおりオラクルのサイトからダウンロードできます。
オラクルの意向
Markさんはこう言っています。
- オラクルはJDKの各リリースをリード&コントリビュートする(今までどおり)
- オラクルは各リリースに対して少なくとも2回のアップデートリリースをリード&コントリビュートする
- オラクルは少なくとも上記のリリースのOpenJDKビルドを公開する
- オラクルは少なくとも2019年1月までJDK 8のアップデートプロジェクトに対してリード&コントリビュートする
- オラクルがビジネス的な理由で作業するエンジニアを提供できなくなった場合、スムーズにリーダシップを移行する
なぜ6ヶ月のリリースサイクルになったのか?
海外の技術系サイトInfoQ.comで詳しく解説されています。日本語版も提供されており、その記事を僕が公式に翻訳していますので、ご覧ください。