JavaはエンタープライズからWebサイトまで幅広く使われている言語です。その中で企業ユースではOracle JDKが広く使われてきている歴史があります。もちろん各社提供のOpenJDKも引き続き無償で提供され、様々なプラットフォームでサポートとライセンス付きのJDKが立ち上がり、各社から提供されています。
この記事では Oracle JDKのライセンス・サポートについて解説しています。
この記事では、技術的な解説ではなく、ライセンス観点での Oracle JDKを整理していきます。無償・有償の商用ライセンスでの違いなど、解説をしていきます。またライセンスの見解を述べるものでは無いですので、それぞれのライセンス定義から各自でご判断ください。
JDKについて知りたい場合は、Wikipediaをみてください
参考 : OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava
言葉の定義
- BCL : Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX
- NFTC : Oracle No-Fee Terms and Conditions (NFTC)
- OTN for Java SE : Oracle Technology Network License Agreement for Oracle Java SE
- OTNはオラクルのトライアルライセンス全体を指すので、Java SE向けであることを明示します
- 有償のサポート : Javaのサポートサービス → つまり商用ライセンス
- 商用ライセンス : Javaのライセンス(ここでは言及しません)
- JRE(実行環境)も含めての話であることを前提 (JREは無償?という勘違いがよくあるため)
JDKいろいろ
JDKは無償で提供されるOpenJDKから、各プラットフォーム上ではライセンス・サポートされるJDKと、商用ライセンス・サポートされるJDKと様々あります。この記事ではサーバーサイドで動かす場合を前提として記載します。分かりやすくするため、登場するのはOracle OpenJDK・Oracle JDKのみとします。
番号は特に意味はありません。
- Oracle JDK
- Oracle OpenJDK
- Red Hat build of OpenJDK
- Azul Zulu
- BellSoft Liberica JDK
- SAP SapMachine
- Amazon Corretto
- Microsoft Build of OpenJDK
- Eclipse Temurin (Adoptium)
- 富士通OpenJDK
- 日立JavaVM
参考 : OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava
この項目だけでもマサカリ飛んできそうですが、熟練者の皆さまは温かい目で見ましょう。
「ライセンス」と「サポート」の違い
大前提として、「ライセンスされます」と「サポートされます」の違いを理解します。
「ライセンスされます」
- 利用する権利はあるが、サポートが無い状態です
- 有償のサポートを得るか、ライセンス範囲での問い合わせ方法を得る
「サポートされます」
- 利用する権利があり、かつサポートも提供される
- オラクル製品(アプリケーション・WebLogic)に組み込まれている場合は、製品のサポートに含まれます
Oracle JDKでのライセンス・サポートについて補足
無償でライセンスされる時期については原則はサポートありません。サポートを求めたい場合は有償の商用ライセンスかOCI上で動かすことを検討してください。またOCIではクライアント系はライセンスされません。様々なケースを整理できない場合は、商用ライセンスを利用した方が無難です。
オラクル製品のサポートは、Oracle JDKを前提としています。他社JDKでも動かしてみたら当然動くケースと動かないケースに加えて、サポートという意味で他社JDKを保証しているケースと保証していないケースがあります。オラクル製品によっても微妙に違ったりしていますので、MOS Knowledgeを確認してください。だいたいは他社JDKでも製品は稼働しますがJDK由来の問題が発生した場合、その問題解決にサーティフィケーションしているJDKやOracle JDKの用意を求める場合もあります。他社JDKを見渡しても製品サポートやJava問題解消・セキュリティにはとても良いJDKであることを予めお知らせします。
Javaのリリースモデルについての理解
OpenJDKの位置付け
最初に OpenJDK のリリースサイクルについて理解します。 OpenJDKはJava SEのオープンソースです。OpenJDKはOracleをはじめとした複数ベンダーや個人が参加し、GNU GPLv2としてリリースされています。リリースは半年に一度行われます。Oracleは現状OpenJDKのビルドバイナリとしてOracle JDKとOracle OpenJDKを提供しています。以降は、前者のOracle JDKについて触れます。
Oracle JDKの位置付け
つぎに、Oracle JDKのリリースサイクルについて理解します。OpenJDKのリリーススケジュールに併せて Oracle JDKがリリースされており、Ver 17以降では 17・21・25・29と4つずつでLTS(ロングタームサポート)が提供されます。リリースは半年に一度ですので、2年に一度は新しいLTSバージョンがリリースされ、1年間の移行猶予期間があるスケジュールを組んでいます。
- Java 8(u202)以前はBCL
- Java 8 u211以降と、9〜16はOTN for Java SE
- Java 17以降はNFTC → OTN for Java SE
それぞれでリリースされています。このライセンスされている状況により本番利用が可能か?という判断の分かれ目になります。
Java 8(u202)以前はBCL
Java 8リリース中にOracle JDKからOpenJDKに寄贈があり、リリースアップデート途中でライセンス形態が異なります。u202以前はBCL、u211以降はOTN for Java SEです。Java Archiveサイトから現在でもダウンロードができ、BCLでダウンロードして利用できることが明記されています。
(小声)もしライセンス違反だと言われたら、BCLにダウングレード可能か、後に紹介するNFTCのバージョンへのアップグレードを検討ください。
BCLであってもサポートが必要な場合は、Java SE Universal Subscription の契約が必要です。
利用メモ
利用方法 | ライセンス |
---|---|
本番環境の利用 | OK |
開発環境の利用 | OK |
サポート | 無し(別途契約) |
再配布 | NG |
実行場所 | サーバー・端末 |
Java 8 u211以降と、9〜16は OTN for Java SE
Java 8 u211以降から、16まではOTN for Java SEで利用ができます。注意が必要なのはOTN for Java SEでリリースされたバージョンでは【本番環境での利用には、ライセンスが必要となる】ことです。ライセンスを充当するには Java SE Universal Subscription の契約が必要です。
利用メモ
利用方法 | ライセンス |
---|---|
本番環境の利用 | NG |
開発環境の利用 | OK |
サポート | 無し(別途契約) |
再配布 | NG |
実行場所 | サーバー・端末 |
Java 17以降はNFTC→OTN for Java SE混在
Java 17以降は、NFTCライセンスで提供されます。但し「NFTCでの提供期間中にリリースされたアップデート」までがNFTCとしてリリースされますが、NFTC提供期間が終了すると以降のアップデートはOTN for Java SEに切り替わります。NFTCであってもサポートが必要な場合は、Java SE Universal Subscription の契約が必要です。
例として、17.0.1はNFTCとして提供されるが、17.0.13ではOTN for Java SEとして提供されます。17.0.12まではNFTCでリリースされたもの、過去のJDK18等もNFTCとして現在もダウンロードできインストール可能です
例として、17.0.1はNFTCとして提供されるが、17.0.13ではOTN for Java SEとして提供されます。17.0.12まではNFTCでリリースされたもの、過去のJDK18等もNFTCとして現在もダウンロードできインストール可能です
「Java 17(NFTC)は次のLTSに移行しないと本番利用では違反」はデマ
JDKのライセンス許諾はインストールしたアップデートの時によりますので、ライセンスだけが勝手に切り替わることはありません。(許諾を踏めない) アップデートしないのであればNFTCとして継続利用ができます。ただしセキュリティアップデートできなくなります。
NFTC利用ケース Javaは商用ライセンスを契約しなくても利用はできます
最新のアップデートを利用する場合はOTN for Java SEでの利用が必要となります。NFTCで利用したい場合はアップデート.12以前をArchiveからダウンロードしてください。
例:Java17を本番環境で利用する
利用ケース | ライセンス形態 | セキュリティアップデート提供 | 有償サポートの必要性 |
---|---|---|---|
17.0.12を既にインストールしており、使い続ける場合 | NFTC(No-Fee License) | 2024年9月まで提供されていたリリース | 不要(しかし、セキュリティなど注意) |
17.0.12を17.0.13にアップデートもしくは17.0.13以後を新規インストールする場合 | OTN for Java SEでライセンスされる | 有償サポートがあれば長期的に提供される | 本番用途では有償サポート契約が必須 |
利用メモ
利用方法 | ライセンス |
---|---|
本番環境の利用 | OK |
開発環境の利用 | OK |
サポート | 無し(別途契約) |
再配布 | ※条件による |
実行場所 | サーバー・端末 |
- Oracle No-Fee Terms and Conditions (NFTC)
- Oracle Technology Network License Agreement for Oracle Java SE
OCIで Oracle JDKを利用する
各社プラットフォーマーが独自JDKを提供するように、Oracleも自社で展開するクラウドサービス上にてJDKを動かす場合の優遇処置があります。
2025年5月時点では、下記のサポートが有効なJDKはライセンス・サポートされています。
Service Descriptions内での記載
For (a) all IaaS Cloud Services and (b) PaaS Cloud Services that permit direct user access to the operating system, You will receive a free Oracle Java SE license for Your instances in the Oracle Public Cloud that will be provided in accordance with the Oracle Technology Network License Agreement for Oracle Java SE found here. You will also receive Oracle Cloud Support for Oracle Java SE for the foregoing usage and that technical support will be provided in accordance with the Oracle Hosting and Delivery Policies.
日本語参考訳 : (a)すべてのIaaSクラウドサービスおよび(b)オペレーティングシステムへの直接ユーザー・アクセスを許可するPaaSクラウドサービスについては、お客様は、Oracle Public Cloud内のインスタンスに対して、Oracle Technology Network License Agreement for Oracle Java SE(こちらを参照)に従って提供されるOracle Java SEの無償ライセンスを受け取ります。また、お客様は、上記の使用に対してOracle Cloud Support for Oracle Java SEを受け取り、そのテクニカル・サポートはOracle Hosting and Delivery Policiesに従って提供されます。
当然ですが、有償で利用していることが前提です。(Always Freeやトライアル環境からはライセンス・サポートされません)
利用メモ
利用方法 | ライセンス |
---|---|
本番環境の利用 | OK |
開発環境の利用 | OK |
サポート | OK |
再配布 | NG |
実行場所 | OCI上のみ |
- Oracle No-Fee Terms and Conditions (NFTC)
- Oracle PaaS and IaaS Universal Credits Service Descriptions
本番環境でも Oracle JDKを無償で使いたい!!
OCIでは利用料のみでOracle JDKを使えますが、それ以外の環境では下記のようにBCL・NFTCによるライセンス方式であれば無償で利用ができます。
利用方法がライセンスの定義に基づいているかは各自でしっかり確認する事をオススメします。
商用ライセンスサポート期間
有償の商用ライセンスについても、加入・契約することで長期的なアップデートのサポートを受けられるメリットがあります。アップデートリリースにより BCL・NFTCでの利用範囲から外れ、OTN for Java SE扱いとなり、商用ライセンスを契約する流れとなります。
トラブルとなるポイント
今までの個人的な経験や実際に見聞きしたトラブルについて記載します。あくまでも参考なので、各自必要に応じて各ベンダーにお問い合わせください
「開発環境」はどこまでか?
OTN for Java SE でライセンスされるとき、本番NG・開発OKと説明しました。ただ開発環境といっても本番に繋がる場合は本番環境同等と見做されることがあります。開発環境がどのような使われ方をしているのかはよく注意をしましょう。ケースによっては本番同等と見做される場合があります。
(i) Personal Use
(ii) Development Use
(iii) Oracle Approved Product Use
(iv) Oracle Cloud Infrastructure Use
ライセンスはこの4例で適用されます。どれかに該当すれば良いです。これらを超える利用の場合は別途で何らか有償の商用ライセンスが必要です。この中で(ii) “Development Use” についてフォーカスします。
規約から引用します
“Development Use” refers to Your internal use of the Programs to develop, test, prototype and demonstrate Your Applications. For purposes of clarity, the “to develop” grant includes using the Programs to run profilers, debuggers and Integrated Development Environments (IDE Tools) where the primary purpose of the IDE Tools is profiling, debugging and source code editing Applications.*
日本語参考訳 :「開発利用」とは、貴社がアプリケーションの開発、テスト、プロトタイピング、およびデモを行うためのプログラムの内部利用を指します。明確さを期すため、「開発」の許諾には、IDEツール(プロファイラー、デバッガー、統合開発環境(IDEツール)を含む)を、その主要な目的がアプリケーションのプロファイリング、デバッグ、またはソースコードの編集である場合に、プログラムを実行する行為が含まれます。
つまりは “Development Use” であるための上記条件へ収まるようにしましょう。
「勝手にアップデートされた」
端末でJavaをインストールしている場合、Java 8 u202を超えて自動アップデートされているケースあります。私の端末では u451のアップデートの案内が来ています。最初のインストールではu202以前でも自動アップデートによりOTN for Java SEに変わってしまうので、端末管理は適切にしましょう。
Java 17(NFTC)が勝手にアップデートされることはありません。
「アプリケーション提供元が勝手に入れていた」
使用するシステムの構成にJavaでインストール構成している場合、アプリケーションベンダーが使用しているケースなどがあります。このケースでは提供元にお問い合わせください。ユーザーとしては許諾していないものになりますので、再配布のライセンスにあたるのか、一時的に利用して削除して良いものなのか、ご確認ください。
「Red HatのLinux使っていて、サポート受けている」
Red Hat Enterprise Linux で Red Hat build of OpenJDK がサポートされます。同じように Oracle JDKもサポートされるケースもあるようなないような話がありますが、原則は別物です。別途ライセンスとして商用ライセンスの契約が必要となるケースがあります。
「仮想環境上で利用している」
Oracle JDKの商用ライセンスを契約する場合、Oracle Master Agreement(OMA)を介して契約を締結します。つまり他のオラクルライセンス同等のルールとなります。
代表的な問題が仮想環境上での利用ケースです。 BCLとNFTCではOMAとは関係ないので問題無い ですが、 OTN for Java SEになることで必要となる場合がある商用ライセンスでは影響があります 。DB等では区画を区切って適切に運用しているケースが多数ですが、JDKまでパーティショニングポリシーに対処しているケースは少ないと思いますのでご注意ください。
パーティショニングポリシーについての解説
仮にVMwareを利用している場合、利用環境がネットワーク・ストレージで分離されている環境であるかを確認してください。環境の共有状況は仮想技術で様々方式がありますが、移行をすることにエクスポート・インポートをする必要がある環境までが共有状態であるとは言い切れません。
「可能性がある」というのは、技術的に移行の実行可能である状況でなければ良く、「可能性がある」というだけでは市道を歩いているだけで「道路交通法違反になっている可能性があるので、あなたの行為は違法でない『無実』を証明しろ」と言っているようなものです。
従業員数によるライセンス体系であれば、本件は関係がないです。
「WebLogicで利用している」
WebLogic(WLS)はオラクルが提供し、Javaの実行環境として利用ができ、ライセンス・サポートされます。これによりJavaの商用ライセンスを契約する必要がないと思われる方がたまに居ますが、構成は何でもいいというわけではなく、WLS配下のJava Runtimeとして利用、WebAPもWLS上で動作させることに限定されます。適切な構成をご確認ください。
「WebLogic使っているサーバーでバッチ(JDK使用)廻した」系の話は、
WebLogic構成の外であるので、ライセンス違反となる可能性がある
「インストール時に何も警告でなかった」
そんなわけないのですけどね・・・
古いバージョンについても、ダウンロード時もライセンスの扱いについては説明が掲載されています。
NFTCも次のリリースからはOTN for Java SEだよ、ってアナウンスしてくれています。
2024/9/11に確認しました。
「外部に提供したい」
契約上、"Internal Business Operation" というものが何を指すのか?です。
「契約者の内部業務処理」といえばわかりやすいかもしれません。契約した企業・個人の業務のためのデータ処理のためにシステムを利用することに利用することです。そのシステムへのライセンスされています。Oracle Database のライセンスでも同様の考えです。
下記は厳格に定義されていませんが、著者の感覚的なコメントです。
「Webサービスで外部向けにサービス提供する」
そのサービスは提供社の内部業務処理のものですので、"Internal Business Operation"に定義される内部業務処理に該当するものと考えます。ECサイト・モールも含まれます。
「SaaSサービスを展開して、他社にシステム提供して使用したい」
相手方の会社さんの内部業務処理に該当すると考えます。外部サービス向けの条項が付いた商用ライセンスが必要となると考えます。一例はSaaS型人事・会計管理システム等です。
「端末で組み込みで利用している」
これはサーバの話なので、端末側のライセンスの件については別途営業にお問い合わせください。
※JRE(Java Runtime Environment)は Oracle JDKのライセンスに含まれています。
「アプリケーションのインストールで再配布したい」
再配布については別途営業にお問い合わせください。