2009-07-27 8 views
0

gnuクラスパスはJavaライブラリのオープンソースバージョンに過ぎないと思いました。どうやらそれはホストシステムに大きく依存していますか?これは本当ですか。GNUクラスパスでは、クロスプラットフォーム(Win32およびLinux)jarを構築することが可能です

たとえば、Javaバイトコードだけでgnuクラスパス 'rt.jar'を構築することは可能でしょうか、それをブートストラップライブラリとして使用するためのargは何ですか?

答えて

1

各プラットフォームのJava JREは、そのプラットフォームに固有のもので、独自のrt.jarファイルが含まれています。 GNUクラスパスプロジェクトは、Javaクラスライブラリの無料版を作成することを目的としていましたが、Java実装が現在オープンソースであるため、これは歴史的なアーティファクトです。

2

GNUクラスパスの大半はプラットフォームに依存しませんが、仮想マシンとホストオペレーティングシステムとの背後でのやりとりを処理するVM固有のレイヤーがあります。

クラスパスは、Javaプログラマがすぐに使用できるようには設計されていません。クラスパスVM *クラスなどの適切な実装が必要です。これらのクラスは通常、ターゲットVMの開発チームによって提供されます。

以前はクラスパスを使用していた一部のオープンソースJVMプロジェクトがOpenJDKに移行/移行されています。 1つの理由は、Classpathの実装が同等のSun JDKとの互換性がないということです。これは、Class-pathチームが(法律上の理由により)「クリーンルーム」アプローチを採用していることや、SunがオープンソースプロジェクトにJDKテストスイートをライセンス供与しようとしていないことが原因です。 (Apache Harmonyにも後者の問題があります)

関連する問題