Java のライセンス

Java SE他、ソースが GPL v2 で公開されるという発表がありました。
しかし、Javaのライセンスはけっこう複雑でした。まとめてみますが...
お決まりの文句ですが、実際の使用にあたっては、必ず原文を参照し原ライセンスに従ってください。

互換性

Sun のライセンスの大きな目的は、Java 標準の互換性、または主導権を奪われないようにすることだと思われます。

各種ライセンス

Javaにはいろいろなライセンスが存在している。

  • GPL Oracle and Sun Microsystems | Strategic Acquisitions | Oracle参考
    • ソース公開OK、お金は絡みませんという人はこれで完璧。
    • 「クラスパスの例外」が適用され、ほとんど?LGPL状態なので、ライブラリにリンクするだけなら、好きなライセンスを付与できる。この場合、商用利用もOK。
  • JRL Java Research License http://java.net/jrl.csp参考
    • 研究・学術目的の場合、改変も含め JRL ライセンス下であれば再配布可能。商用不可。クリックで同意したことにできる。
  • JIUL Java Internal Use License http://java.net/jiul.csp
    • 内部使用ならご自由にどうぞ。また、コードや派生物が「内部」にある限りでは、それらを用いたサービスを「内部」サーバで運用して、顧客がそれにアクセスしてもよいらしい。
  • JDL Java Distribution License
    • 商用利用向けライセンス。Sun に連絡してライセンス契約しなければならない。場合によってはライセンス料がかかる。互換性テストにパスすることが条件。
  • SCSL Sun Community Source License
    • 意味わからん長いライセンス。今後は上記 JRL,JUL,JDLに置き換わっていくらしい。

判断付きかねる点

上のどれかにはっきりあてはまるなら幸せですが、ライブラリソースを「参考」にしたり、「一部をコピー」して自前のパッケージ階層に取り込んだ場合はどうなるんでしょうか?

JRLやJDLには、こんな項目があります:

Residual Rights. If You examine the Technology after accepting
this License and remember anything about it later, You are not
"tainted" in a way that would prevent You from creating or
contributing to an independent implementation, but this License grants
You no rights to Sun's copyrights or patents for use in such an
implementation.

つまり...ライセンスを受諾した後で、中身をみてなにか覚えていても、「汚染」されないと。「参考」のほうはたぶん、、問題なさそうですが、コピーは...
でも、自前パッケージ階層にとりこむ場合、決して互換性に触れることはないわけです。
だいたい、問題は元のライブラリにバグがあることで、しかもそういうとこに限って適当にprotectedとかになっていて、困る。JDL契約するのはめんどくさそうだし。わからん。

...コピーしたやつとか、思いっきり参考にしているやつなどは、そのクラスのコードだけ例外条項つきGPLで公開しとけばOKということですか??ライセンスはファイル単位で適用されると書いてあったし。

感想

  • うれしいこと。ソースがけっこう自由に使えそう。LinuxJDKJREが標準搭載されそう。結果、パスがGCJをさしてるとかいうおぞましい状況はなくなりそう。デスクトップにも標準プレインストールが増えそう。
  • 懸念すること。頼むから標準はがんばって維持してください。IBMには負けないでください。