BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル Javaと.NETの特許問題への短い紹介

Javaと.NETの特許問題への短い紹介

ブックマーク

原文(投稿日:2010/09/09)へのリンク

Javaから始める。Javaには、ライセンシングに2つの選択肢がある。1つ目は、OpenJDKのコードを使うことができる(恐らく自分の修正と一緒に)。2つ目は、Javaの仕様をベースに、Javaの新しい実装ができる。

OpenJDKを守る明示的な特許ライセンスは、存在しない。OpenJDKは、GPLv2によって守られている 。一般に信じられているのは、GPLv2の下でコードをライセンスした場合には、そのライセンスには、暗黙の特許ライセンスを含んでいることである。2004年に、 Free Software Foundationのシニア弁護士である Dan Ravicher氏は、BSDとGPLの弱い特許保証について警告し、そして特許供与を付けることを勧めた。

つまり、暗黙の特許ライセンスの請求範囲は、不明確である。一方、OpenJDKを無修正で使うだけなら、あなたは、完全に守られるべきである。もう一方で、あなたがそれを拡張的に変更すると、もはやJavaとして認められず、Oracleの非Java 特許を侵害することになり、恐らくあなたは、暗黙的なライセンスによって守られないだろう。守られるところと守られないところの境界線は、どこかは、非常に曖昧で、不明確である。

もし自分で実装するオプションを選んだ場合には、明確な特許ライセンスが存在する。もし仕様を完全に実装し、ある禁止されている変更せずに(標準クラスへのフィールドとメソッドの追加、標準ネームスペースに新しいものを追加、など)、そしてもしあなたの実装が "Technology Compatibility Kit"をパスすれば、そのライセンスは、あなたを守ってくれる。

これの大きな問題は、TCK要求である。Sunは、そのようなことをやっている人たちが、TCKにアクセスさせないようにできた(そして、そうした)、Javaでは、きらったのである。TCKがない、あなたの実装には、特許ライセンスは、供与されないのである。2007年に、Apacheの Geir Magnusson氏が、Harmonyプロジェクトが「Java SE5 TCKの容認できるライセンスを取得する」ことができなかったことについて、公開書簡で問題提起した。

上記のどの選択肢もGoogleには、当てはまらない。彼らは、幾つかの理由によりOpenJDKオプションを採用できなかった。一つ目がGPL。ハンドセット メーカーやキャリヤは、競争相手との差別化のために独占所有権のある フィーチャを追加したがる。Googleは、Androidがもしこれを許さないライセンスの下にあったら、Androidは、受け入れられないだろう、と思った。二つ目は、Java SE(OpenJDKが実装したもの)は、携帯電話のようなデバイスに、本当に相応しくないことである。もしGoogleがJava MEのようにそのコードを変更したら、暗黙の特許ライセンスが彼らを守ってくれるのかどうか、誰にも定かでないような曖昧な立場にGoogleが立つことになる。

Java SEの仕様に従って独自のJavaを実装し、それからそれを拡張していく(特許ライセンスが変更を禁じている部分を注意深く変更しないようにして)ほうがうまくいっただろう - しかしそれでもなおTCKの問題はある。このやり方も大変苦難の道であったろう、Sunは、Googleが単にJava MEのライセンスに従って欲しかったからである。

そのような訳で、Googleは、Javaのシンタックスとセマンティックを使っているが、JavaVMを使っていない。特許の保護はない。

では、.NETと比べよう。Googleであろうがなかろうが、Monoを使うのは、より安全だったろう。独立の.NET実装に対する Microsoftの特許ライセンスは、Microsoft Community Promiseである。Sunの特許ライセンスのように、仕様の必須部分を全て実装する必要がある。Sunと違って、パスしなければならない特別なテストも改善の制限も無い。仕様書の必須項目を実装する -あなたは、素晴らしい。(もしあなたが改善すれば、その改善部分は、約束によって守られないだろう。もちろん、だから、何らかの注意がまだ、必要である)。

なので、直ちに、特許関係の事態は、ずっとよくなる --特許ライセンスを得るために、あなたの実装に対して Microsoftの許可を得る必要がないのである。このほうが、Googleがやろうとしていたことに、ずっと合っていた。

Monoは、仕様の必須部分に加えて、改善強化も実装している。それらの強化部分のいくつかは、Winformのような仕様にない部分で、 Microsoft .NET frameworkの実装である。Monoのそのような部分は、特許問題があり得た。なので、もしGoogleがMonoを使ったなら、一番いいのは、そのような所は、避けることである。

Googleは、携帯電話のような小さな低パワーのデバイスにもっと合うように、Monoを修正しなければならなかったろう。その場合、 ECMA/ISOの仕様外になるので、特許リスクを負うことになる。しかし、Microsoftには、Java Meに相当するような .NET Micro Frameworkと呼ばれるものがある。.NET Micro Frameworkのライセンスは、Apache2なのである。このライセンスには、明確な特許供与が付いている。もしGoogleがAndroidをMonoと.NET Micro Frameworkからのコードをベースにしたのなら、おそらくMicrosoftの特許に対しては、全ての部分が守られたであろう -- Community Promiseが全てのECMA/ISO 標準部分を守り、Apache2ライセンスによる特許供与がモバイル向けに強化した部分を守る。

結局のところ、Microsoftは、技術を公開する正常なルールに従っている、ということである。彼らは、C#と.NETの両方を独立した標準団体に提出した。彼らは、標準が要求する部分を実装しなければならない、という一般的で正常な制約以外は、何の制約もなく、それらの標準の実装を守る、特許ライセンスを提供した。

Sunは、正常なルールに従わなかった。彼らは、Javaを独立の標準団体に提出することを拒否した。Sunは、あなたがライセンスを得る前に、事実上、あなたの実装に対して承認を得ることを要求する標準となるように、特許ライセンスに紐をつけた。後に、彼らは、GPLの下でOpenJDKをリリースした。これは、改善であるが、それに明示的な特許ライセンスを付けなかった。なので Sun/Oracleからの特許訴訟 のリスクを負わずに、OpenJDK(修正を加えながら)をどう扱えばいいのか、誰にもわからない。

この記事に星をつける

おすすめ度
スタイル

BT