Javaは今も無償です

このドキュメントはJava Is Still Freeの翻訳です。

Oracle JDKの配布とサポートが少し前に変更され、Oracle JDKやオラクルのOpenJDKビルド、他プロバイダのOpenJDKビルドを利用する際の権利に関して不透明なところが少なからずあります。無償アップデートや (新規と既存の) 有償サポートモデルがさまざまなベンダから提供される予定もあり、検討の余地があります。このドキュメントには要約バージョン と全詳細がある詳細バージョンのセクションがあります。

コメントしたい方

こちらからお願いします。Java Is Still Free Mirror post on Medium.

要約バージョン

今もOracle JDKやオラクルのOpenJDKビルド、他プロバイダのOpenJDKビルドを無償で取得できます (このニュアンスについては以下のコラムや以降のセクションを読んでください)。これは複数のプロバイダがJava SE仕様の実装を提供するからこそ可能となっているのです。

Java SE / OpenJDK / オラクルのOpenJDKビルド / Oracle JDK

OpenJDKコミュニティはJava SE仕様の (GPLv2+CEでの) オープンソースの参照実装 (RI) を作成し維持します。この仕様はJavaコミュニティプロセス (JCP) により管理され、各フィーチャーリリースの包括的なJava Specification Request (JSR) で定義されます。

さまざまなプロバイダによる複数のJava SEの実装があります (たとえばAzul、Eclipse、IBM、レッドハット、オラクル、SAPなど)。もっとも普及しているものがOracle JDKです。

Oracle JDK 8"公式アップデートの終了"過程にあります。つまり、2019年1月以降商用利用に対する無償のアップデートは打ち切られます。一方で、オラクルはJava SE 9以降オラクルのOpenJDKビルドを提供します。これは商用利用も無償です。またAdoptOpenJDKやAzul、IBM、レッドハット、Linuxディストリビュータのような他のプロバイダから無償のOpenJDKが提供されます。

プロバイダはその実装が関連する互換性テストキット (TCK) のテストをすべてパスすることでJava SE仕様の必要要件をすべて満たしていると証明します。

今後JDK取得にはさまざまな選択肢があることになります。ここではJava SE 8 (以前のバージョンと同様に公式アップデート終了プロセスが進行中) と新しいリリースサイクルで初めての長期間サポート (LTS) リリースとなるJava SE 11を取り上げます。

Java SE 8に留まる

さまざまな理由でJava SE 8を使い続けたい人もいます。

  1. オラクルはOracle JDK 8の公式アップデートをデスクトップアプリケーションでの個人利用に対しては少なくとも2020年12月まで、商用利用に対しては2019年1月まで提供します。その期限(ご自身のユースケースがどちらなのかチェックしてください!)の後、有償サポートプランにするか、もしくは他のプロバイダのJava SE 8 / OpenJDK 8バイナリを使うかを選択できます。
  1. アップデートをしないのであれば、いつまでもOracle JDK 8を使い続けることもできます。

  1. Oracle JDK 8を使っていない場合、現行お使いのJava SE 8 / OpenJDK 8プロバイダが、アップデートと選択肢となる有償サポートプラン、もしくはそのどちらかを提供するでしょう。

無償かつ (使用において) フリーのJava SE 8がほしい。何を選べばいい?

2019年1月以降にJava SE 8をアップデートが必要なら、OpenJDKプロバイダから配布されるOpenJDKバイナリを使ってください。OpenJDKプロバイダは、たとえばLinuxディストリビュータやAdoptOpenJDKAzul IBMレッドハットなどです。

Java SE 11 (LTS) を取得する

Java SE 11を利用する選択肢はいくつかあります。以下を注意して読んでください。特にOracle JDKはJava SE 11以降変わります。

  1. Java SE 11からオラクルは (OpenJDKベースの) JDKを提供を次に示す2種類にします。
  1. オラクルのOpenJDKビルド - 既存のオープンソースGPLv2+CEライセンス
  2. Oracle JDK - 有償コマーシャルライセンス (開発利用は無償)、GPLv2+CEを使いたくない人、あるいはオラクル製品やサービスとともにOracle JDKを使っている人向け。

注記: オラクルはオラクルのOpenJDKビルドに対して3ヶ月ごとのアップデートを2回提供ます。そのバージョンをリリースして6ヶ月経つと、ユーザに次のバージョンへの移行を促す予定です (これにはLTSバージョンも含まれます)。

  1. LinuxディストリビュータやAdoptOpenJDKAzulIBMオラクル, レッドハットなど他のさまざまなプロバイダからJava SE / OpenJDKバイナリを取得することもできます。アップデートもありますが、期間はLTSバージョンそれ以外異なります。

無償かつ (使用において) フリーのJava SE 11以降のものがほしい。何を選べばいい?

  1. オープンソースの (GPLv2+CE) ライセンスのオラクルのOpenJDKビルドを使い新しい6ヶ月のリリースサイクルに合わせてください。
  2. もしくは別のOpenJDKプロバイダが配布するOpenJDKバイナリを使ってください。LinuxディストリビュータやAdoptOpenJDKAzulIBMレッドハットなどからのものです。

有償サポート

オラクルは有償サポートOracle JDK 8に対しては少なくとも2025年まで、Oracle JDK 11は少なくとも2026年までフルに提供することを計画しています (詳細) 。Java SE / OpenJDK 8と11のバイナリに対してはAzulやIBM、レッドハットなどから幅広い有償サポートの選択肢提供されています。


このページは要約バージョンと詳細バージョンを分けるため意図的に白紙にしています。


詳細バージョン

このセクションでは、意図的に詳細を記述していますはっきりと説明する必要があるからですすべて読むには相応の時間がかかることをご承知おきください。きっと、役に立つはずです。

以前の投稿や資料の再利用を許可してくれたSimon Ritter氏、Stephen Colebourne氏、Hendrik Ebbers氏、Donald Smith氏、Jonas Konrad氏と他多くの人たちに感謝します。別表 I - 署名者リスト、感謝、リファレンスには再利用の承認をいただいた資料のすべてとこのドキュメントに署名してくれた人々を掲載しています。

このリンクから修正の提案やコメントができます。ぜひフィードバックをお寄せください。

編集履歴

このドキュメントは新情報が判明したり事実に基づくデータにより検証された訂正箇所があれば今後も更新されます。ここで更新をチェックするか@Java_ChampionsTwitterアカウントをフォローしてください。

Version

Date

Comments

1.0.0

2018年9月17日 10:00 UTC

初版

TBD

TBD

TBD

普及活動

このシートでこのドキュメントの普及活動記録しています。このドキュメントをシェアしたら更新してください!


目次

要約バージョン

Java SE 8に留まる

Java SE 11 (LTS)を取得する

有償サポート

詳細バージョン

編集履歴

目次

イントロダクション

新しい6ヶ月リリースサイクルとLTS

オラクルのアップデートプラン

OpenJDKのアップデートプラン

Java SE / OpenJDKプロバイダ

商用サポートを選択する理由は?

プロバイダごとの要約

自分でソースからビルドする

無償のバイナリ配布

商用サポート付き配布

Linuxディストリビュータ

サポートの選択肢

重要なリンク

AdoptOpenJDK

サポートの選択肢

重要なリンク

Azul

サポートの選択肢

重要なリンク

IBM

サポートの選択肢

重要なリンク

オラクル

サポートの選択肢

重要なリンク

レッドハット

サポートの選択肢

重要なリンク

Java Desktop / Java Web Start / JavaFX

JavaFX / OpenJFX

Javaパッケージャ

Java WebStart

FAQ

OpenJDKのバリエーション同士、そしてOracle JDKとの比較

Oracle JDK / OpenJDK 8、 11に対するオラクルの公式アップデート終了

別表 I - 署名者リスト、感謝、リファレンス

イントロダクション

Oracle JDKの配布とサポートが最近変更されたことにより、Javaの将来やそのソフトウェアライフサイクル、ベンダ提供のサポートに関しては、少なからず不透明になってきました。このドキュメントでは、オラクルが行った変更やJava SEユーザが利用できる選択肢をまとめます。

無償(フリー)とは何を意味するのか?

 

このドキュメントの原題はJava is Still Freeなのですが、この"フリー"という単語には、ソフトウェアにおいて2つの違った意味があります。

  • "ビールに対して使われるフリー (訳注: フリービール、無料で飲めるビール)"はソフトウェアのコスト (つまりお金) を指します  (すなわち無償).
  • "スピーチに対して使われるフリー (訳注: フリースピーチ、言論の自由)"はそのソフトウェアでの実行が許可されているということを指します。

要約バージョンで説明したように、Java SEバイナリをオラクルや他の Java SE / OpenJDKプロバイダから"ビールに対して使われるフリー"なものとして取得できます。

プロプライエタリかつ/もしくは使用制限があるJava SEの実装が世の中にはありますが (AzulのZingやOracleのJDKなど) 、大部分のユーザにはGPLv2+CEライセンスである"スピーチに対して使われるフリー"なOpenJDKバイナリを使うという選択肢がつねにあります。

こうした変更が短期間に起こり不透明感が最悪の状況となったため、業界のニュースを注意深く追いかけられない一般的な開発者は混乱しています。こういったことが、以下のような間違った投稿につながっています。

幸運なことに、以下のような、より正確な投稿で釣り合いが取れました。

記事では、みなさんが関心を持っている主な部分と、そこに対してJavaのエコシステムによって実施されたことを説明します。本記事を読み終わるころには、Java SEが今でも十分にメンテされており、その未来はかつてないほど輝いていると理解できるはずです。

新しい6ヶ月リリースサイクルとLTS

2017年に発表された新しいバージョニングスキームに基づいて、Java SEのフィーチャーリリースは、6ヶ月ごとにリリースされます。JCPプロセスの改善により、OpenJDKコミッタは、6ヶ月のサイクルで仕様を変更するような機能  (たとえばJava SE 10でのvar) を導入できるようになりました。

Java / OpenJDKでのLTSは何を意味するのか?

 

 さまざまなコントリビュータが、 (オラクルの主導で) OpenJDKのLTSについて、Java SE 11/17/23といったブランチを、6ヵ月より長い期間メンテナンスすることで合意しました。

オラクルは、OpenJDKのLTSブランチの最初の6ヵ月だけはメンテナンスを主導します。そして、そのメンテナンスに基づいてアップデートを提供し、Oracle OpenJDKビルドを作成します。しかし、その後は有償サポートのOralce JDKだけにしかアップデートを提供しません。

とはいうものの、オラクルは、他のOpenJDKベンダと共同してOpenJDKのコードラインを引き継ぎます。そして、アップデートを提供するために、他のベンダと共にそれに取り組んでいきます。各ベンダは、アップデートとベンダが作成したバイナリに対する有償サポートの提供、もしくはそのどちらかを提供することができます

注記: このことは、OracleのJDKが、他プロバイダが作成するOpenJDKベースのバイナリと異なる可能性があるということを意味します (これは今までもつねにそうでした)。これは、バイナリがTCKをパスする限り、そうしたバイナリもTCKをパスしているのであれば、Java SE標準との互換性がありますので、安心してお使いください。

(LTSが何を意味するかを含めた) 新しいバージョニングスキームと新機能が導入される過程を理解すれば、各バージョンをどのようにメンテナンスしていけばいいか分かるはずです。メンテナンスとはセキュリティパッチと重要なバグフィックスを含んだアップデートリリースの提供を指します。

アップデート vs サポート

アップデートはOpenJDKとOracle JDKに適用するコードパッチを指します。一般的にベンダが公式アップデート終了プロセスに入れると決定するまで無償で提供されます。

サポート はバグ修正の約束を指します。これはユーザの問題に対して回答するスタッフを必要とし、金銭的コストがかかります。誤解のないように言うと、Oracle JDKとOpenJDKに対し無償のサポートは今まで一度もありません。

OpenJDK 8 / Oracle JDK 8以前は、アップデートはオラクルと他のOpenJDKコミッタから“フィーチャーリリース”提供されていました。(6ヵ月サイクルでリリースされた)  8u91、8u111、8u131のようなフィーチャーリリースは、次のフィーチャーリリースによって置き換えられてきました。たとえば、8u111がリリースされた時点で8u91へのアップデート提供されません

OpenJDK 9 / Oracle JDK 9以降、新しい6ヶ月のリリースサイクルが有効となり、アップデートは"フィーチャーリリース"で発生します。すなわち、8u91 -> 8u111のように、12がリリースされた時点でオラクルから11へのアップデートは取得できません (しかし、おそらくレッドハットが主導して、オラクル以外のOpenJDKコミッタがこうしたアップデートを提供するでしょう)

オラクルのアップデートプラン

Java SE 8まで、オラクルは3年以上のライフサイクルであったOracle JDKに対し、アップデートを提供していました。これらのアップデートは個人でも、商用環境でも使用が許可されていました。アップデートはサポートなしで提供されました。サポートを得るにはオラクルからライセンスを購入する必要がありました。有償サポートは、必然的により長期のアップデートサイクルが伴うことにもなりました。

Java SE 9から、オラクルはOracle JDKにをより期間の短いサイクルに変更しました。また、オラクルはOpenJDKビルドの作成も始めました。アップデートは通常次のバージョンのリリースで終了するまでの6ヶ月間提供されます。より長い期間、もしくは本番環境に対してアップデート/サポートが必要であれば、オラクルから購入しなければなりません (すなわちOracle JDKを利用する必要があります)。リリースは、定期的に“LTS”と設定されます。こうしたリリースは、延長期間に対するオラクルの標準サポートライセンスを通じて、オラクルによりサポートされます。現時点でオラクルのOpenJDKビルドに対するアップデートプランは、アップデートを合わせて以下のようになっています。

オラクルのOpenJDK ビルドバージョン

リリース日

 (オラクルによる) 無償アップデートの停止 / 終了

8

2014年3月

少なくとも2020年1月 (個人デスクトップでの利用)

商用利用は2019年1月終了

9

2017年9月

オラクルのOpenJDK 10のビルド提供時に終了予定

10

2018年3月

2018年9月オラクルのOpenJDK 11のビルド提供時に終了予定

11

2018年9月

2019年3月オラクルのOpenJDK 12のビルド提供時に終了予定 (延長の可能性あり)

12

2019年3月

オラクルのOpenJDK 13のビルド提供時に終了予定

13

2019年9月

オラクルのOpenJDK 14のビルド提供時に終了予定

ここでのアイデアは単純です。Sunの時代のJava SEのモデルがそうであったように、オラクルは新しいイノベーションとJava SEを進化させることに注力します。レガシーなバージョンに留まりたい組織は商用サポートを適用することで、留まり続けられます。もちろん、Java SEユーザと開発会社の中にはこのような早いアップグレードが適していないところもあります。


OpenJDKのアップデートプラン

OpenJDKコミュニティはオープンソースで無償のJava SE標準の実装を開発しています。オラクルはこのプロジェクトに大きく貢献しており、これはオラクルのOpenJDKビルドとOracle JDK両方の基盤となっています。OpenJDK 11以降は、Java SE標準に準拠しTCKでテストされたビルドを使用するアプリケーションに対しOracle JDKと相互互換性があります。オラクルは、Oracle OpenJDKビルドへのアップデートを提供する間、継続してOpenJDKへのコントリビュートをします。次のバージョンがリリースされてそのバージョンが終了となる時点で、オラクルは、そのバージョンへのコントリビュートをやめ、次のバージョンのアップデートを開始します。

オラクルはコミュニティによるメンテナンスというアイデアを (OpenJDK 6と7で)   好意的に受け入れており、次のバージョンの開発に移行した時点でOpenJDKを適任な有志のコミュニティに引き継げるようサポートを継続します。オラクルがOpenJDK 6とOpenJDK 7プロジェクトのアップデートを終了したあと、レッドハットがOpenJDK 6とOpenJDK 7を包括的に主導する (そして定期的なアップデートを提供する) 立場を買って出ました。レッドハットがOpenJDK 6の更新を停止したあと、Azul Systemsがプロジェクトをリードする立場を買って出ており、今日に至るまで継続してアップデートを提供しています。

2019年1月に、オラクルがOpenJDK 8のアップデートを停止したあと、レッドハットがOpenJDK 8のリーダに志願する意向です。重要なことですが、レッドハットはOpenJDK 6と7のプロジェクトを主導していますが、彼らが唯一のコントリビュータではないということに注意してください。他のベンダも時々パッチや修正を提供しています。OpenJDK 8では、レッドハット関連企業ではないところ、たとえばアマゾンやAzul、IBMなどからかつてないほどのコントリビュートがあるでしょう。

一貫性を持たせるため、OpenJDKのアップデートサイクルはOracle JDKでLTSとされたものと同じバージョンに対して延長されます。現時点でOpenJDKのサポートサイクルは以下のようになっています。

注記: これらの期間は変更される可能性があり、プロバイダごとに予定へのコミットメントが少しずつ異なります。したがって"少なくとも"という表現を使います。

バージョン

リリース日

無償アップデートの停止 / 終了 (OpenJDKコミュニティメンバによる)

OpenJDK 6

主にAzul systemsがサポート

OpenJDK 7

少なくとも2020年6月まで主にレッドハットがサポート

OpenJDK 8

(LTS)

2014年3月

少なくとも2023年9月まで。2019年1月以降はレッドハットが主導を志願し、アマゾンとAzul Systems、IBMその他がサポートする予定

OpenJDK 9

2017年9月

OpenJDK 10がリリースされた時点で終了

OpenJDK 10

2018年3月

2018年9月OpenJDK 11がリリースされた時点で終了

OpenJDK 11 (LTS)

2018年9月

未定、しかしOpenJDK 6 / 7 / 8の長期のライフサイクル相当となる

OpenJDK 12

2019年3月

OpenJDK 13で停止

OpenJDK 13

2019年9月

OpenJDK 14で停止

Java SE / OpenJDKプロバイダ

今やアップデートと有償サポートの選択肢、もしくはそのどちらかを提供する多くのJava SE / OpenJDKプロバイダがあります。以下のセクションでは多くの詳細を掲載します。短いものがよければStephen Colebourne氏のJava SE 11 Options(邦題: Java SE 11の選択肢)という投稿に要約があります。

アップデート vs サポート

アップデートはOpenJDKとOracle JDKに適用するコードパッチを指します。一般的にベンダが公式アップデート終了過程を経ると決定するまで無償で提供されます。

サポート はバグ修正の約束を指します。これはユーザの問題に対して回答するスタッフを必要とし、金銭的コストがかかります。誤解のないように言うと、Oracle JDKとOpenJDKに対し無償のサポートは今まで一度もありません。

商用サポートを選択する理由は?

適宜修正が必要な場合やあなたのユーザの要求に誰かが返答する必要がある場合、もしくは使用するバイナリがベンダから支援されたものであると安心したい場合AzulやIBM、レッドハット、オラクルなどが選択肢を提供しています。

オープンソースソフトウェアへの金銭的支払いに関する哲学的観点

 

業界全体としてオープンソースソフトウェアを前進させるというのは、強固となっています。その"スピーチに対して使われるフリー"の性質のため、OSSライセンスにより、人々は法的措置の恐れなく、他者のソフトウェアを修正したり改変したりできます。

多くの人々はたくさんのOSSソフトウェアの"ビールに対して使われるフリー"の性質も享受していますが、これは作者に対し大変なコストとなります!ソフトウェア開発者は、誰でもそうですが、彼らが衣食住を満たせるようにする必要があります。オラクルのようなベンダはJava SEに大量の資金を投入しており (毎年少なくとも数千万ドルと考えてください)、どうにかしてそのコストを支払っていく必要があります。

従ってベンダの有償サポートの選択肢を1つ選ぶのはたしかにいい気分がしないでしょうが、Java SEのエコシステムが長期的に持続する未来を手に入れられるように、あなたを含めたエンドユーザはどのようなサポートができるのかについて考えてみることには時に価値があります!


プロバイダごとの要約

自分でソースからビルドする

ソースからビルドする [OpenJDK、商用サポートなし、自分でビルドが必要]:

無償のバイナリ配布

LinuxやWindows、Macなど向けの無償ビルド [OpenJDK、商用サポートなし]:

商用サポート付き配布

商用サポート [すべてJava SE準拠]:

Azul Systems [OpenJDKベース]:

        

IBM [OpenJDKベースのクラスライブラリ + Eclipse OpenJ9 VM]:

Oracle JDK [OpenJDKベース]:

レッドハット [OpenJDKベース]:


Linuxディストリビュータ

さまざまなLinuxディストリビュータがそれぞれのディストリビューションに対してOpenJDKを継続して提供します。DebianやUbuntu、CentOS、Fedora、Mint、Alpineなどですがそれだけに限りません。

サポートの選択肢

  • Linuxディストリビュータは通常有償サポートを提供しません (例外はレッドハットで、RHEL上のOpenJDKをサポートします)。

重要なリンク

詳細はディストリビュータのホームページを見てください。

AdoptOpenJDK

AdoptOpenJDKは幅広いプラットフォーム (LinuxやMac、Windows 32/64、Arm 32/64、 z/OS、Solaris、AIX、PPC、s390など) に対してOpenJDKのバイナリ配布 (HotSpotとEclipse OpenJ9) を提供します。

サポートの選択肢

  • AdoptOpenJDKは有償サポートを提供しません。単にOpenJDKとEclipse OpenJ9の上流プロジェクトから十分にテストしたバイナリ (そのうちのいくつかはTCKをパスしたもの) を提供するだけです。
  • IBMはAdoptOpenJDKでOpenJDK (Eclipse OpenJ9 VM使用) への有償サポートを提供します。

重要なリンク

Azul

AzulはOpenJDKバイナリ (Zulu) と特化したJavaプラットフォーム (Zing) を提供します。

サポートの選択肢

Azulは、LTSバージョン間にある全Javaバージョンをスキップしたくないけれど、6ヶ月ごとに新しいバージョンへ移行できない企業すべてに対し、選択肢を提供していますそして、全LTSリリースをサポートするため、Azulはオラクルより1年長いサポートを提供しています。AzulはZulu JDKに対して中期間サポート (MTS) と呼ぶサポートを提供しています。こちらだとLTSかどうかに関わりなく1バージョンおきのJava SE商用サポートを購入できます。こららのバージョンのサポート期間は異なります。Azulは次のバージョンへの移行に適した準備期間を提供しようとしており、Java SEバージョンのサポートに対して3つの異なる期間を定めています。

オラクルとは異なり、Zuluの商用サポートはCPU単位の定義ではなく、システムの数に基づきます。システムとは物理もしくは仮想サーバとして定義します。スタンダードサポートとプレミアムサポートの違いはサポート提供時間だけです。プレミアムサポートでは24時間年中無休でAzulを呼び出せます。

重要なリンク

IBM

IBMはAIXやLinux (x86、Power、zSystems)、 z/OS、IBM i用のネイティブJDKバイナリを提供しています。IBMはIBM製品やプラットフォームの利用に合わせてJava SEのIBM SDKを提供しています。また開発用途ではdeveloperWorksから取得できます。IBMはAdoptOpenJDKでビルドテストしたOpenJDK (Eclipse OpenJ9使用) のバイナリも提供しています。

サポートの選択肢

Java SE 7と8向けに、IBMは今もセキュリティアップデートとバグフィックスを提供しています。IBMのサポートライフサイクルは継続して更新されます。新しいJava SEリリーススケジュールに基づき、IBM、LTSでないリリースを、OpenJ9を使用するOpenJDKバイナリとして、AdoptOpenJDKから提供すると発表しました。

重要なリンク

オラクル

オラクルは2つのJDKバイナリを作成します。以前からあるOracle JDKOracleのOpenJDKビルドです。

サポートの選択肢

2018年6月、オラクルは時代に合わなくなったJava SE Advanced無期限ライセンスサポート製品をライセンスとサポートを含んだサブスクリプションベースでの提供に置き換えました。そのうちの1つはデスクトップでのJava SEを対象にしており、もう1つはサーバやクラウドでのJava SEと一般的なJava SEを対象にしています。デスクトップでJava SEを使わないのであればJava SE Subscriptionが適切なサポートモデルとなるでしょう。クライアントアプリケーション向けにデスクトップでJava SEを使用するのであれば“Java SE Desktop Subscription”製品が利用できます。ソフトウェアがJava SEサーバとJava SEベースのクライアントを使用するなら両方の製品に申し込みます。

デスクトップのJava SEアプリケーションに対する商用サポートはいくつかの企業にとって非常に重要となるかもしれません。オラクルはJava SEのバージョン11から重要なデスクトップ機能のいくつかをJDKから除外する予定だからです。デスクトップでJava SEを使っている場合以下の記事を読むことを強くお勧めします。

重要なリンク

レッドハット

レッドハットはRed Hat Enterprise Linuxが動作するさまざまなプラットフォーム向けにOpenJDKバイナリを作成しています。

サポートの選択肢

レッドハットはJava SE 9と10のリリースを提供する予定はありません。レッドハットがリリースを計画している次の配布はRed Hat Enterprise Linux 7向けのOpenJDK 11です。現在、Java SE 8がRed Hat Enterprise Linux向けのサポートされたリリースでありレッドハットは2023年までこれをサポートする予定です。

重要なリンク


Java Desktop / Java Web Start / JavaFX

Desktop Java SEはOracle JDK 11から多数の変更が入るため、注意が必要です。

JavaFX / OpenJFX

Java SE 11から、OpenJDKビルドにもOracle JDKバイナリにもJavaFXのライブラリはありません。JavaFXコンポーネントは単独のSDKとしてもしくはビルドツール (たとえばApache MavenやGradleなど) から使用できる成果物として提供されます。この分離でのポジティブな結果として、JavaFXの開発は独自のロードマップを持てるようになりました。

JavaFXは今もOpenJFXで開発されています。これはOpenJDKコミュニティ傘下のプロジェクトです。オラクルや他の企業、より広いコミュニティにいる個人が活発にJavaFXを開発しています。自動的に同期されるGitHubのミラーも作成されており、JavaFXに対してコードや課題でコントリビュートしたい開発者に対してハードルを低くしています。

現時点でOpenJFXに対するビルドはGluonからのみ提供されています。OpenJFXの全ソースコードは100%公開されており、誰でもバイナリを作成したり配布したりできます。OpenJFXでは、OpenJDKのものと同様のアプローチが採られており、JavaFX 11のリリース後はJavaFX 12に注力する、といったことになります。JavaFX開発者とユーザはOpenJFXの最新リリースバージョンの利用が推奨されています。

GluonはJavaFX 11に対して長期間のサポートを望む企業に対しサポートプランを提供しています。

Javaパッケージャ

javapackagerはアプリケーションとそれが依存するものをJVM (のサブセット) にバンドルできるようにするものですが、もはやOpenJFXの一部ではなくなり、Java 11からOracle JDKからも OracleのOpenJDKビルドからも削除されます。OpenJDKにJavaのパッケージングツールを追加するJEPが提案されています。新しいJavaのパッケージングツールはJava 11のリリースには間に合いませんが、GluonはJava 11のアプリケーションをネイティブイメージにパッケージングできるようにするツールを開発しています。

Java WebStart

デスクトップクライアントの配布にJava Web Start技術を使っている場合できるだけ早く現在の状況に関心を持っておくべきです。オラクルがJavaからWeb Startを削除するからです。

  • IBMはIcedTea-Webを含めたOpenJ9使用のOpenJDKをサポートします。
  • レッドハットからのコミュニティビルドには簡易的なIcedTea-Webインストーラ (ojdkbuild) があります。

FAQ

上記の投稿では、みなさんがまさに質問したかったことへの答えを説明するものになっていないかもしれない、という認識はあります。なのでFAQを。

OpenJDKのバリエーション同士、そしてOracle JDKとの比較

Q. OpenJDKとOracleのOpenJDKビルド、そしてOracle JDKの違いは?

ここではJava 11以降のLTSリリースについてのみ話します。Oracle JDKとオラクルのOpenJDKビルドは同一のものですが、異なる方法でライセンスされています (それぞれ商用とGPLv2+CE)。

Oracle JDK / オラクルのOpenJDKビルドと他プロバイダのOpenJDKビルドは最初の6ヶ月間のアップデートに対して同じソースからビルドされ、この期間は互換性があるはずです。6ヶ月経つとOracle JDK / オラクルのOpenJDKビルドはオラクルの独自フォークからビルドされます。他のOpenJDKプロバイダはOpenJDKのアップデートプロジェクトから継続してビルドを作成します。そのため、Oracle JDK / オラクルのOpenJDKビルドと他プロバイダのOpenJDKビルドは、少しやり方が異なります。さまざまな団体からのバイナリは当然ながら時間とともに変化するかもしれません。

Q. (オラクル以外の) プロバイダAのOpenJDKとプロバイダBのOpenJDKの違いは?

ここではLTSリリースについてのみ話します。Java SE 6とJava SE 7のアップデートプロジェクトの場合のように、さまざまなプロバイダがOpenJDKコミュニティにおけるアップストリーム版 (訳注: 開発版的な意味合い) を一緒に開発します。OpenJDKコミュニティは、共通のリポジトリやメーリングリスト、作業を共有するその他インフラを提供しています。その意味としては、OpenJDKベースのバイナリ間にある違いはたいていコアでない機能、たとえば拡張したモニタリングや診断サポートといったものにあるということです。最終的なバイナリにおいては小さな違いがあるかもしれませんが (おそらくプロバイダ独自のツールなど)、今まで長年そうであったように少なくとも同じセキュリティと安定性の基準を持っています。

Oracle JDK / OpenJDK 8、 11に対するオラクルの公式アップデート終了

Oracle JDK 811に対するオラクルからの公式アップデート終了はすぐなので、どの選択をするのかまだはっきりしない人もいます。

Q. Oracle JDK 8 / 11を使い続ける場合、セキュリティやバグの修正を得るためには費用がかかりますか?

Oracle JDK 8は、個人のデスクトップ利用であればかかりません。商用利用では2019年1月以降費用がかかります。Java SE 11以降のOracleのOpenJDKビルドは、最初の6ヶ月のアップデート以降費用がかかります。

Q. OpenJDK 8 / 11を使い続ける場合、セキュリティやバグの修正を得るためには費用がかかりますか?

必ずしもそうではありません。Java SE 6やJava SE 7の場合では、オラクルがOpenJDKコミュニティと連携し、OpenJDKのアップデートプロジェクトのリーダーシップを他のコントリビュータに移行しました。これは10年間に渡りうまく機能してきました。レッドハットがオラクルや他の企業から助けを借りて、OpenJDK 8とOpenJDK 11においてこのリーダーシップを継続する可能性が非常に高いです。これが意味することは、重要なパッチは選択の上バックポートされるであろうということです。さまざまなプロバイダから提供される旧バージョンのOpenJDKベースのバイナリを、無償もしくは有償サポート提供の一部として利用する、という選択肢がみなさんにはあります。特に、OpenJDKには脆弱性調査グループがあり、これはゼロデイ・エクスプロイトやCVEの不具合を処理し、修正を可能な限り早く公開することを保証しています。

Q. Oracle JDK 8と11は今後もダウンロード提供されますか (公式リリースは最後ですか)?たとえば、ある企業がOracle JDK 8上でだけ動作するソフトウェアを保持していて、2019年1月以降に新しいマシンにセットアップする場合です。

今後も、公式アップデートが終了する時点までの、古いバージョンのOracle JDKをダウンロードできます。これらのアーカイブが削除されると考えるべき理由はありません。さらに、Oracle JDK 8は、少なくとも2020年まで個人のデスクトップでの利用に対して無償でアップデートが提供されます。

Q. 商用ソフトウェアの実行にOracle JDK 8を使っている場合、2019年1月以降はライセンスを購入する必要がありますか?

いいえ。ユーザは費用を支払うことなく無期限でOracle JDK 8を使い続けることができます。コストがかかるのは2019年1月以降アップデートを取得したい場合のみです。この場合"Oracle Java SE subscription"を購入する必要があります。これは通常の“公式アップデート終了”過程のあとに起こります。実際のところ10年以上そうなっています。 また、Oracle JDK 8は、少なくとも2020年まで個人のデスクトップでの利用に対して無償でアップデートが提供されることにも注意してください。

Q. 2019年1月以降、Oracle Java Web Start には何が起こりますか?継続して使い続けられますか、もしくは2019年1月時点でライセンスを購入する必要があるのですか?

Web StartはOracle JDK 8の一部なので、Web Startは機能し続けており、無期限にコストなしで利用できています。上述のようにアップデート (バグフィックスとセキュリティパッチ) が必要な場合、"Java SE subscription"を購入する必要があります。顧客がみなさんのエンドユーザである場合、Oracle JDK 8を個人のデスクトップアプリケーションで使用する場合と同様に、少なくとも2020年まで無償での利用が保障されます。オラクルは少なくとも2025年3月までJava Web Startを継続してサポート (すなわちWeb Start対して商用アップデートを提供する) と表明しています。

またIcedTea-Webが代替としてあり、KarakunがWeb StartのOSSの代替製品を開発しています。.

別表 I - 署名者リスト、感謝、リファレンス

ブログ投稿で下地を作ってくれた以下の人々に特に感謝します。このドキュメントにある多数のリンクや資料はこれらの情報源から (許可を得て) コピーして照合したものです。

  1. Javaチャンピオン - Javaエキスパートのコミュニティ組織
  1. Simon Ritter氏 (CTO代理 - Azul) - Javaのアップデートに関する混乱を取り除く
  2. Stephen Colebourne氏 (Joda-Time作者) - Javaは今もコストゼロで利用できるJava 11の選択肢.
  3. Hendrik Ebbers氏 (Karakun共同創業者) - 今すぐJavaにお金を払う必要があるのか?
  4. Johan Vos氏 (Gluon共同創業者) - JavaFXリリースとサポートプラン
  5. Martijn Verburg氏 - このドキュメントの筆頭著者 / ファシリテータ
  6. その他大勢の人たち!
  1. Donald Smith氏 (プロダクト管理のシニアディレクタ) によるOracle Blogsへの投稿
  1. Java SEの使用権と再配布をより早く、簡単に
  2. Oracle Java SE 8の公式アップデートとJava Web Startサポートの延長
  3. 今後のJavaFXと他Java Clientのロードマップを更新
  4. Java SEのリリースサイクルについての更新とFAQ
  5. 新しいOracle Java SE Subscriptionの簡単な要約
  6. Java 11以降のOracle JDKリリース
  1. 他すばらしい人達
  1. Jonas Konrad氏 - Javaのサポート

以下のJavaエコシステムの人々はこのドキュメントをJava SE / OpenJDKの状態と、無償アップデートと有償アップデート、もしくはそのどちらかの今後の予定への公正で偏りのない記録として裏付けをしています。

名前

経歴

Martijn Verburg

AdoptOpenJDKの共同リーダ、 Javaチャンピオン、ロンドンJUGリーダ、JCP Executive Committeeメンバ、Jakarta EE Steering Committeeメンバ、@jClarityのCEO

Hendrik Ebbers

Javaチャンピオン、JUG Dortmundリーダ, JSR EGメンバ、Karakun共同創業者

Ivar Grimstad

Javaチャンピオン、Malmö JUGリーダ、JCP Executive Committeeメンバ、EE4J PMCリード、Jakarta EE WGメンバ

Markus Eisele

Javaチャンピオン

Heinz Kabutz

Javaチャンピオン、The Java Specialists’ Newsletter, JCrete創設者

Ivan St. Ivanov

Javaチャンピオン、Bulgarian JUGリーダ、jPrimeカンファレンス主催者、Virtual JUGリーダ、VIDA Software共同創業者兼シニアプログラマ

Stephen Colebourne

Javaチャンピオン、JodaとThreeTenプロジェクトの作者

Trisha Gee

Javaチャンピオン、Sevilla Javaユーザグループリーダ、JCP Executive Committeeメンバ、JetBrainsのJavaディベロッパアドボケイト

Josh Long

Javaチャンピオン、PivotalのSpringディベロッパアドボケイト、ベストセラー書籍の著者で世界中で講演しているスピーカ

Gail Anderson

Javaチャンピオン、Oracle Developer Champion、Anderson Software Group, Inc共同創業者

Justin Lee

Javaチャンピオン、JSR EGメンバ

Mattias Karlsson

Javaチャンピオン、JUGリーダでJfokusカンファレンス創設者

Andres Almiray

Javaチャンピオン、JCP ECメンバ、Oracle Developer Champion、 世界中でHackergartenを開催

Enrique Zamudio

Javaチャンピオン、 JVMMX (Mexico City JUG), author of j8583, jAlarms, Ceylon to Javascript compiler

Alan Williamson

Javaチャンピオン、著者、ポッドキャスト配信者、MacLaurin GroupのCTO

Maurice Naftalin

Javaチャンピオン、Oracle Developer Champion、著者

Mark Heckler

Javaチャンピオン、PivotalのSpringディベロッパアドボケイト、カンファレンススピーカ、著者

Kirk Pepperdine

Javaチャンピオン、jCrete共同創設者、パフォーマンスチューニングアドボケイト、jClarity共同創業者

Matt Raible

Javaチャンピオン、Web開発者、Oktaのディベロッパアドボケイト、クラシックの VWの熱狂者

Henri Tremblay

Javaチャンピオン、Montréal JUGとDevoxx4kids Québecのリーダ、EasyMockとObjenesisのリード開発者、カンファレンススピーカ

Cay Horstmann

Javaチャンピオン、“Core Java”著者

David Heffelfinger

Javaチャンピオン、Apache NetBeansコミッタ、技術系著者、Jakarta EEコンサルタントでインストラクタ

Josh Juneau

Javaチャンピオン、Apache NetBeansコミッタ、Jakarta EE Mojarraコミッタ、技術系著者、ポッドキャスト配信者

Jonathan Giles

Javaチャンピオン、Dukes Choice Award受賞者、Microsoft Cloudディベロッパアドボケイト、Co-founder共同創業者

Ben Evans

Javaチャンピオン、元JCP ECメンバ、jClarity共同創業者、“Java in a Nutshell”と“Optimizing Java”の著者

Johan Vos

Javaチャンピオン、Oracle Developer Champion、Gluon共同創業者

Thor Henning hetland

Javaチャンピオン、Capra Consultingのプリンシパル。CantaraとjavaBin、JavaZone、Oslo Software Architectureなどのコミュニティリーダ

Simone Bordet

Javaチャンピオン、JUG Torino共同リーダ、Jettyチームメンバ

Holly Cummins

Javaチャンピオン、Enterprise OSGi in Action著者

Daniel Bryant

Javaチャンピオン、Continuous Delivery in Java共著者、LJC内のリーダ

Mohamed Taman

Javaチャンピオン、Oracle Developer Champion、JCPメンバ、EGJUGリーダ、セルビア、ベオフラードにあるWebCentricのシニアエンタープライズアーキテクト / シニアソフトウェアエンジニア。国際的スピーカ。"JavaFX essentials"、"Getting started with clean code, Java SE 9"、“Hands-On Java 10 Programming with JShell”の著者。Duke’s choice 2015、2014の受賞者、JCPのoutstanding adopt-a-jar participant 2013受賞者

Simon Maple

Javaチャンピオン、Oracle Developer Champion、Virtual JUGリーダ、SnykのDeveloper Relationのディレクタ

Oliver Gierke

Javaチャンピオン、Pivotal Software, IncのSpring Dataプロジェクトリード

Jean-Michel Doudoux

Javaチャンピオン、Développons en Java”著者

Michael Kölling

Javaチャンピオン、BlueJとGreenfootの作者、‘Objects First with Java’著者

Mert Çalışkan

JavaチャンピオンOpsGenie Academyのディレクタ、著者、スピーカ

Leonardo M R Lima

Javaチャンピオン、JSRスペックリード

Cesar Hernandez

Javaチャンピオン、Tomitribeのシニアソフトウェアエンジニア、Eclipseファウンデーションコミッタ、Guatemala Javaユーザグループメンバ、スピーカ、Latin America Virtual JUG JEspañolのボードメンバ

Rustam Mehmandarov

Javaチャンピオン、チーフエンジニア、JavaZoneリーダ、javaBin – ノルウェーのJavaユーザグループのボードメンバで元リーダ

Paul Bakker

Javaチャンピオン、Netflixのシニアソフトウェアエンジニア

Geir Magnusson Jr

Javaチャンピオン、Apache Software Foundationメンバ、fuboTVのCTO

Jorge Vargas

Javaチャンピオン、メキシコのJUGであるJavaUPのリーダ、JEspañol JUGのスピーカでメンバ

Bruno Souza

Javaチャンピオン、SouJava JUGのリーダ

Ian F. Darwin

Javaチャンピオン、開発者、著者、トレーナ、メンタ、スピーカ、オライリーのJava CookbookやAndroid Cookbookなどの著者