ホームページ >Java >&#&チュートリアル >Javaはオープンソースですか?
2006 年 11 月 13 日の JavaOne カンファレンスで、Sun は最終的に Java をオープンソースにし、1 年以上かけて JDK のさまざまな部分を GPL v2 (GNU General Public License v2) に基づいて段階的にリリースすると発表しました。この契約に基づいてソースコードを公開し、これらのソースコードを独立して管理するOpenJDK組織を設立します。ごく少量の独自コード (Encumbered Code、そのほとんどは Sun 自身がオープンソースの許可を持っていない) を除いて、OpenJDK には Sun JDK のほぼすべてのコードが含まれています。OpenJDK の品質ディレクターはかつて、JDK 1.7 では Sun が次のように述べていました。コード ファイル ヘッダーの著作権注釈を除いて、JDK と OpenJDK のコードは基本的に同じであるため、OpenJDK 7 と Sun JDK 1.7 は本質的に同じコード ベースから開発された製品です。
2006 年 11 月 13 日、Sun Microsystems は Java を正式にオープンソース化しました。 Java のソース コードに初日からアクセスできるという事実は、Java の初期段階でプラットフォームの確立を促進する戦略でした。
Java の父である James Gosling 氏は、ソース コードを公開する意図は、コミュニティがセキュリティ分析、バグ報告、パフォーマンス向上、リモート ケースの理解を支援できるようにすることであると述べました。 Java で使用されていた元のライセンスでは、ソース コードの内部使用は許可されていましたが、配布は許可されていませんでした。
IBM は当時、Java を Apache Software Foundation に寄付し、Apache ライセンスを使用して配布するよう呼びかけましたが、Sun は最終的に GPL ライセンスに基づいて Java をオープンソースにすることを決定しました。 GPL ライセンスでは、派生バージョンを公的に配布することが求められます。ゴズリング氏は、これによりJavaがオープンソースコミュニティによりよく適応できるようになるだろうと述べた。 Sun は 2010 年に Oracle に買収され、Java も Oracle の手に落ち、Oracle が Java の進化を主導しました。
JDK 1.6 のリリース後、コードの複雑さの増加、JDK のオープンソース、JavaFX の開発、経済危機、Sun の買収により、Sun は JDK 開発以外のことに多くのリソースを費やし、JDK 2 年に 1 つのメジャー バージョンをリリースするという開発スピードを維持します。 JDK 1.6 はこれまでに合計 37 のアップデート バージョンをリリースしており、最新バージョンは 2012 年 10 月 16 日にリリースされた Java SE 6 Update 37 です。
OpenJDK は元々、SunMicrosystems が Java プラットフォーム用に構築した Java 開発環境 (JDK) のオープン ソース バージョンで、完全に無料のオープン ソースです。 Sun Microsystems は、2006 年の JavaOne カンファレンスで Java コードをオープンソースにすることを発表し、2009 年 4 月 15 日に OpenJDK を正式にリリースしました。 Oracle は 2010 年に SunMicrosystem を買収した後、プロジェクトを引き継ぎました。
Java は、リリース プロセス中に openjdk と sun/oracle JDK に分割されます。
JDK と OpenJDK の違いは次の点に要約できます:
ライセンス契約の違い:
openjdk は GPL V2 プロトコルに基づいてリリースされますが、 JDKはJRLを使用してリリースされました。どちらのプロトコルもオープンソースですが、使用上の違いは、GPL V2 では商用利用が許可されているのに対し、JRL では個人的な研究利用のみが許可されていることです。
OpenJDK にはデプロイ (デプロイ) 関数が含まれていません:
デプロイ関数には、ブラウザ プラグイン、Java Web Start、および Java コントロール パネルが含まれます。これらの関数は Openjdk にはありません。
OpenJDK のソースコードが不完全です:
これは容易に考えられますが、GPL プロトコルを採用している Openjdk では、sun jdk のソースコードの一部を openjdk で開いて利用することができません。最も重要なのは、JMX のオプション コンポーネントの SNMP 部分のコードです。したがって、これらのオープンできないソースコードは、OpenJDK のコンパイル時にプラグ化されて使用されますが、プラグを使用しないことも選択できます。 Icedtea では、これらの不完全な部分に対して同様の機能を備えたソースコード (OpenJDK6) を開発し、OpenJDK をより完全なものにしました。
ソース コードの一部がオープン ソース コードに置き換えられました:
財産権の問題により、財産権が SUN ではない多くのソース コードが、同じ権利を持ついくつかのオープン ソース コードに置き換えられました。フォント ラスタライズ エンジンなどの機能を使用しない場合は、代わりに Free Type を使用してください。
openjdk には、最も合理化された JDK のみが含まれています:
OpenJDK には、Rhino Java DB JAXP などの他のソフトウェア パッケージは含まれていません。また、分離できるソフトウェア パッケージも次のように分離されています。ただし、これらのほとんどは無料のソフトウェアであり、自分でダウンロードして参加できます。
Java 商標は使用できません:
これはわかりやすいですね、openjdk がインストールされているマシンでは「java -version」と入力すると openjdk が表示されますが、Icedtea パッチを使用した openjdk の場合は、表示されるのは Java です。 (未検証)
要するに、Java システムにはまだ自由ではない要素が多く、ソース コードの開発が十分に徹底されていないということです。Oracle には JCP をもっと自由でオープンにしてほしいと願っています。これがすべての Java です」コミュニティ希望です。
現時点で、Java でオープンソースとクローズドソースの間に論争がある理由と、誤解の原因も基本的に理解しました。個人的には Java はまだオープンソースだと感じていますが、オープンソースの度合いは 100% ではありません。
Oracle/Sun JDK に含まれる JVM は HotSpotVM です。HotSpot VM には、OpenJDK にはないごくごく少量の関数しかなく、その部分は Oracle の内部コード ベースにあります。これらのプライベートな部分はどれも、JVM のコア機能には触れていません。したがって、Oracle/Sun JDK と OpenJDK は実際には同じコード ベースを使用します。
Oracle 社内従業員の観点から見ると、OracleJDK を構築する場合は、まず http://hg.openjdk.java.net から OpenJDK をチェックアウトし、次に Oracle 内部コードからチェックアウトする必要があります。 Base プライベート パーツをチェックアウトし、OpenJDK コードの下の特定のディレクトリに配置してビルドします。
Oracle JDK はバイナリ インストール パッケージのみをリリースし、OpenJDK はソース コードのみをリリースすることに注意してください。
以上がJavaはオープンソースですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。