last update 2019年6月4日 16:58

Oracle Java有償化。無料で商用利用可能なJavaはどれを選ぶか

Checking plans

ネットで話題になったはもう昨年なので今さらではあるんですが、2019年4月16日から Oracle Java が有償化された件で、結局、今無償で商用利用できる Java はどれを選べばいいのか、というあたりを自分用のメモがてら簡単にまとめておきます。

なお、この記事は「もうJavaはダメになっちゃたの?」と感じている初心者をターゲットに、あえてかなり端折って書いています。

詳しい方や責任あるシステム方式設計を求められている方は、以下のスライドがかなり詳しいので、一度目を通しておくと良いでしょう。

2019年4月のOracle Javaのライセンス変更について

Java SE 8u211 から適用されるようになった OTN ライセンスにより、Oracle Java の無償利用は、開発、テスト、プロトタイプ作成、及びデモンストレーションを目的とした非商用、非本番利用のみ(データ処理、業務利用も除く)に制限されました。

それとは別に、Oracle がビルドした公式の「Open JDK」も存在しており、こちらであれば GPL v2.0 ライセンスの元、無償で商用利用できるわけですが、いかんせん、半年に1回の新バージョンリリース後は旧バージョンのパッチが無償リリースされない、つまり、無償サポート期間が半年しかないため、商用では使いづらい、という問題を抱えているわけです。

じゃあ、何を使ったらいいの?というのが今回の話になります。

Javaは今でも無償で商用利用できる

では、商用利用可能な無償版の Java は存在しないのか、というと、そんな事はありません。

現在、Open JDK をベースとした様々なディストリビューションが存在しており、中には長期に渡る無償アップデートの独自提供を表明しているものもあるわけです。

以下に、その一部例と、JDK 11 のアップデート提供期限を挙げ、簡単に説明しておきます。

AdoptOpenJDK(2023年9月までJDK11をサポート)

AdoptOpenJDK は対応アーキテクチャの多さが特徴のディストリビューションです。Docker / Linux x64 / Windows x64 / Windows x32 / macOS x64 / Linux s390x / Linux ppc64le / Linux aarch64 / Linux arm32 / AIX ppc64 など、幅広いプラットフォームに対応しています。

AdoptOpenJDK はダウンロード時、HotSpot と Eclipse OpenJ9 のいずれかの JVM を選択する必要があり、HotSpot は Oracle JDK でお馴染みの JVM、OpenJ9 は IBM の JDK で利用されているメモリ利用や起動速度にフォーカスした JVM となっています。選択する JVM により対応プラットフォームが変わりますので、こちらで事前確認しておきましょう。

AdoptOpenJDK は、スポンサーに IBM や Microsoft Azure などの大手がいることも強みの1つです。ただし、TCK を通せていない点は気になる方も少なくないでしょう。

別件にはなりますが、Oracle JDK 8 のプロプライエタリコンポーネントと OpenJDK 11 との機能差異については以下となります。

Amazon Correto(2023年6月までJDK 11をサポート)

Amazon Correto は、あの Amazon がリリースしているディストリビューションです。アーキテクチャは Linux x64 / Windows x64 / macOS x64 の3つのみサポート。32bit 版のリリースはありません。レアケースかもですが、Java プログラム内から呼び出す外部ドライバーの都合で 32bit 版が必要な場合などは意識しておいた方が良いでしょう。

LTS対象のバージョンについて

JDK 11 以降の Oracle Java には、3年ごとにLTS(Long Term Support)指定されるフィーチャーリリースがあります。例えば JDK 12 は LTS 指定されないバージョンになっているわけです。

先に紹介した各ディストリビューションは Open JDK をベースとしたプロジェクトですが、それらのプロジェクトが長期サポートを表明しているのもこの LTS 指定のリリースのみですので、選定時は LTS 指定されたバージョンを選択するのが良いでしょう。

他の選択肢について

この記事では2つに絞って紹介しましたが、他にも多くの選択肢があります。

例えば RedHat OpenJDK。これは無料ではありませんが、RHEL(Red Hat Enterprise Linux)などのサブスクリプションに自動付帯する Red Hat OpenJDK のプロダクションサポートの活用、という判断になります。既に RHEL などのサブスクリプションを購入済みの前提にはなりますが、これにより、例えば RedHat OpenJDK 11 であれば追加費用無しで 2024年10月までサポートを受けることができるわけです。

その他、聞いた範囲だと、当面は無償利用可能な最後のバージョンの Oracle JDK を利用する、という方や、サポート期間が短い事を理解した上で Oracle OpenJDK を利用する、という判断も耳にしています。

また、ディストリビューションによっては JavaFX(OpenJFX)をバンドルしている、などの差異もありますので、その他のディストリビューションを選択するケースもあるでしょう。

具体的には BellSoft Liberica JDK などが選択肢に挙がってきそうです。

まとめ

ということで、あえてかなり端折ったわけですが、とりあえず、よくわからない方は Oracle OpenJDK を使うか、先の「Javaは今でも無償で商用利用できる」項に挙げたディストリビューションを使うのが策なのかな、とは思っています。

一応書いておくと、Oracle 単体のライセンス面だけで見れば改悪ばかり、ということで間違いないと感じていますが、実は Open JDK 11 にはこれまで Oracle Java で有償で提供されていた機能が Oracle から寄贈されており、良い面が皆無、というわけではありません。

もちろん、既存システム用の JRE / JDK のアップデートという話になってくると面倒な話も出てきますので諸手を挙げて歓迎している人がどれだけいるか、という話はあるわけですが、問題は見せ方・出し方がかなり悪かったことで情報が錯綜し、後から検索しても最終的にどうすればいいのかが、特に初心者やライトユーザーには非常に分かりにくい状況になってしまった、という部分なのかも、とは感じる部分です。(ひょっとすると初心者だけではない、という話なのかもですが)

関係無いようであるんですが、最近の SNS は明らかに集団心理の増幅装置として機能している側面があるので、そこにどういう印象を与えるのか、という部分は慎重になったほうが良かったのだろうな。とは思ったり。

参考情報・関連情報:

(※2019/6/4 なぜだか意外と読まれているようなので記事をリライト。)

この記事への1件のコメントがあります

  1. Takahiro YAMADA says:

    15日前

    個人的には"改悪"だとは思いませんが、今まで無償で何となく利用していた方にとってはそうなるのでしょうね。
    よろしければこちらをどうぞ。https://togetter.com/li/1356223

    ここの資料で挙げているもののうち、Oracle JDKとRed Hat OpenJDK以外は無償利用はできます。
    つまりサブスクリプションは不要ですが、これらを利用したほうが結果的に安くなる場合もあると思います。

コメントを記入