以下のカスタマイズを行ったJREを、独自開発のJavaアプリケーションと共に頒布できるか調べたメモ。
頒布したい要件:
注意:著者個人の見解であり、Oracleに確認した結果ではありません。
先に結論だけ書くと、上記カスタマイズを行ったJREを、独自開発のJavaアプリケーションと共に頒布することは「できない」と思われる。
まずJRE単体について:
「バイナリ・コード・ライセンス」というのが出てきたが、こちらになる:
ここで今回の観点で気になるのが以下の箇所:
C.ソフトウェアの頒布許可
本契約の条件、並びにREADMEファイルに規定されている制限事項及び除外事項
(本補足条項の再頒布に関するJavaテクノロジーに関する制限事項を含むが、これに限定されません)
に従って、オラクルはお客様に対し、以下を条件として、本ソフトウェアを複製及び頒布するための非独占的、
譲渡不能の限定的なライセンスを無償で許諾します。
(i)本ソフトウェアを、完全かつ改変されないまま、プログラムの一部としてバンドルされた状態でのみ、
かつお客様のプログラムを実行することを唯一の目的として、頒布すること、
(ii)プログラムが重要かつ主要な機能を本ソフトウェアに与えること、
(iii)本ソフトウェアのコンポーネントを取り替える目的で追加的なソフトウェアを頒布しないこと
今回やろうとしていることは、1. 私が作ったJavaアプリをJREと一緒に頒布する、2. ただし、それを受け取った利用者がさらに他の利用者に頒布することはNGとしたい、ために「C.ソフトウェアの頒布許可」が該当するう。
ちなみに、2. で再頒布を許可する場合は、「D.再頒布可能ファイルの頒布許可」も適用されるが今回は気にしなくて良いと思われる。
この「C.」において、今回問題となりそうなのが(i)と(iii)である。
さて、「バイナリ・コード・ライセンス」で寄り道してみたが、これはJDKについての文章からたどり着いた。
元の「Javaのライセンスと配布に関する情報」だけでは、JREについても「バイナリ・コード・ライセンス」が適用されるか曖昧である。
そこでJREのダウンロードページにアクセスすると、「エンド・ユーザー・ライセンス契約」のリンク先が「Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX」になっていた。
つまり、JREについても「バイナリ・コード・ライセンス」が適用される。従ってJREについても上記の「C.ソフトウェアの頒布許可」の(i), (iii)が懸念されることになる。
ここで一旦整理すると・・・
JRE単体だけでも、早くも雲行きが怪しい。では JCE Unlimited Strength についてはどうか?
このページからだと、「バイナリ・コード・ライセンス」が適用されるように見える。
しかしここで、JRE側のREADMEで「待った」がかかる。
「Unlimited Strength Java Cryptography Extension」のところで以下のように、利用可能な居住地域に住んでいる人がJDKのWebサイトでJCE Unlimited Strengthファイルを入手する、と書かれている。
An unlimited strength version of these files indicating no restrictions on cryptographic strengths
is available on the JDK web site for those living in eligible countries.
Those living in eligible countries may download the unlimited strength version
and replace the strong cryptography jar files with the unlimited strength files.
もともとUnlimited~の主旨としては暗号強度を高める目的であり、国際情勢的にそれが許される地域・許されない地域があることから、無制限な再頒布は認められないものと考えるのが妥当だろう。
「バイナリ・コード・ライセンス」の「C.ソフトウェアの頒布許可」では、READMEファイルに規定されている制限事項及び除外事項に従うことを要求していることから、JREの再頒布についてもJRE8の上記READMEに従う必要がある。
つまり、Unlimited~はJDKのWebサイトから入手することとなり、独自開発のJavaアプリケーションにJREと共に含めることはできない、と読み解くのが自然だろう。
まとめると、以下のカスタマイズを行ったJREを、独自開発のJavaアプリケーションと共に頒布することは「できない」と考えられる。
もともと、Java実行環境の設定を簡単に統一するために調べてみたのが動機であるが、上記の通りカスタマイズ済みのJREをパッケージングして一括配布する道は閉ざされていると考えたほうが良さそううである。
他の方法、例えば設定ファイルやファイル配置を自動調整してくれるような、独自またはサードパーティのアプリケーションの導入によるJava環境構築のガイド・自動化を模索してみようと思う。
余談:Unlimited~を含めず、設定ファイルも含めてJREに手を加えずそのままバンドルするのであれば、問題はない。
実際、JDKのドキュメントの以下のセクションで、独自開発のJavaアプリケーションにJREをバンドルして自己完結型のパッケージングを行う方法が解説されている。これに従えば、オリジナルのJREのコピーを含んだインストーラを作成し、バイナリ・コード・ライセンスに適合した形で再頒布および再頒布したファイルのさらなる再頒布を行うことが可能になると思われる。
コメント