2006年11月13日、SunはJava General Public License(GPL)の条件に基づいて、無料のオープンソースソフトウェア(FOSS)としてGNUの大部分をリリースしました。 2007年5月8日、Sunはプロセスを終了し、Sunが著作権を保有していないコードのごく一部を除いて、Javaのすべてのコアコードをフリーソフトウェア/オープンソース配布条件の下で利用可能にしました。 。
OpenJDK(Open Java Development Kit)は、Javaプログラミング言語の無料のオープンソース実装です。これは、Sun Microsystemsが2006年に開始した取り組みの結果です。実装は、リンク例外を除いて、GNU General Public License(GNU GPL)の下でライセンスされます。
問題は、何かを「Java」と呼ぶには、Java仕様に準拠していると認定する必要があるということです。
この認定を受けるための前提条件の1つは、テストスイートを介してJVMを実行することです-Java Technology Compatibility Kit(TCK) 。このテストスイートはオープンソースではありません。
そのため、非常にJavaのように動作し、完全にオープンソースになるJVMを構築できますが、「Java JVM」と呼びたい場合は、以下の認定スイートを購入する必要があります。非オープンソースライセンス多くのオープンソース支持者にとって、これは完全な非スターターです。
削除する前に、この答えを読んでおく必要があります。主な答えは述べました:
Java 7について、JDK7とOpenJDK7は(ほぼ)同一のコードベースを持つことに注意してください。
ほぼ私が強調表示したことに注意してください。
その答えからリンクされた記事から:
[…]しかし、古いクローズドソースコードをまだ使用しているオープンソースの置き換えがあるコードがあります。これは主にフォントとグラフィックのラスタライズにあります。古いクローズドソースラスタライゼーションコードには障害がありましたが、10年以上のバグ修正と微調整などがありました。オープンソースの置き換えにより、製品化されたJDKビルドでそのコードを置き換えるには、おそらく高速かつ安定していて、既存のクローズドコードと同じ品質。
また、Java FAQから:
Java開発キット(JDK)は、無料でダウンロードして商用プログラミングに使用できますが、再配布しない。
したがって、オープンソースではありません。ほぼ。
また、完全にオープンソースであっても、開発モデルとガバナンスはそうではありません。ただし、これはライセンスの問題ではありません。
1997年、Sun MicrosystemsはECMAにJavaの正式化を求めましたが、すぐにプロセスから撤退しました。 Java標準は、実際には Java Community Process によって制御されます。
2006年には、ほとんどのJavaはGPLの条件に基づいてSun Microsystemsによってリリースされましたが、現在の公式実装はOracleが所有しています。
Javaには、ECMA、ISO/IEC、ANSI、またはその他のサードパーティの標準化団体によって承認された正式な標準化が欠けているため、Oracleの実装は事実上の標準です。ただし、GNU Compiler for Java、GNU Classpath、IcedTea-Webなどの代替実装があります。