GNU Classpath
出典: フリー百科事典『ウィキペディア(Wikipedia)』
GNU Classpath | |
GNU Classpath Swing のデモ画面 |
|
開発元: | GNUプロジェクト (かつては FSF) |
最新版: | 0.97.1 / 2008年3月11日 |
対応OS: | クロスプラットフォーム |
種別: | ライブラリ |
ライセンス: | GPL+linking exception |
公式サイト: | http://www.classpath.org |
GNU Classpath は、Javaの標準クラスライブラリのフリーな実装を作るプロジェクトである。フリーソフトウェア財団のGNUプロジェクトの一部である。作成すべきライブラリは膨大だが、そのほとんどは完了しており、Swing、CORBA なども含まれる。Classpath では J2SE 1.4 および 5.0 の全クラスをほとんど実装してきた。従って Classpath を AzureusやEclipseといった一般的なJavaベースのソフトウェアで使うことができる。
GNU Classpath はライセンス条件の違いがあるため、libgcj と並行して開発された。現在では GPL を採用することで合意がなされ、両プロジェクトは統合された。
目次 |
[編集] ライセンス
GNU Classpath は、GPL と linking exception の条件下でライセンス提供される。すなわち、オープンソースのフリーソフトウェアである。全コードは形式上フリーソフトウェア財団の所有となっており、その所有権は開発者たちとの契約上の義務によって束縛されている。
[編集] Uses
GNU Classpath は多くのフリーなJava実装(Kaffe、SableVM、JamVM、CACAO、Jikes RVM など)で採用されている。というのも、Java仮想マシンを実装した際に標準クラスライブラリが必須であり、GPL ライセンスとするには選択肢はあまりないためである。
他に以下のもので使われている。
- GNU Compiler for Java は Java のコードをネイティブな独立した(JavaVMを必要としない)実行ファイルにコンパイルする機能を持つ。
- IKVM.NET は Java と .NET Framework を結びつけるものである。
- JNode は Java アプリケーションが動作するオペレーティングシステムであり、Java とアセンブリ言語だけで書かれている。
- Jaos は Oberon-2言語と結びついた特殊な JavaVM である。
- Jupiter Project はクラスタ上の分散コンピューティング向け仮想機械。Myrinetで128プロセッサを結合したマシンで動作。
[編集] 歴史
GNU Classpath の開発は5人の開発者が1998年に開始した。その後、他のプロジェクトとの合併を何回か経験している(Kaffe、libgcj)。かつて、GNU Classpath は独自の仮想マシン(Japher)を提供していた。Classpath が標準ライブラリとして充実するにつれて他のプロジェクトで利用されることが多くなり、仮想マシンが使われなくなったため、Japher の開発は中止された。公式の Java 1.4 API のほとんどを実装した後、プロジェクトはバグ修正を主に行うようになった。2006年10月24日、1.4 で最後まで実装されていなかったクラス HTMLWriter の実装が完了した。開発速度(一日平均の追加コード行数で計算)は2006年になって最高潮に達した。
GNU Classpath という名称は Bradley M. Kuhn が初期の開発者 Paul Fisher に示唆したものである。当時、Java のフリーな実装にサン・マイクロシステムズの商標を付与することを強いることについて、コミュニティには大きな懸念があった。Kuhn は Java のライブラリの場所を指す $CLASSPATH という環境変数を名称に使ってはどうかと示唆したのである。$CLASSPATH は実際に使われる際に java(例えば /usr/lib/java
)という文字列を含むディレクトリのパス名に展開される。従って具体的に Java という単語を使わずにそれを連想させることができるのである。Fisher らは $ や全部大文字の名前を好まなかったため、Classpath に落ち着いた。
[編集] 開発チーム
プロジェクトチームには70名の開発者がおり(うち、約20名が常時活動している)、管理者が1名活動している。管理者は法律面の対応をし、定期的なリリースの実行と品質管理にも関与する。管理者は CVS へのアクセス許可も行う。
他のプロジェクトとは異なり、GNU Classpath には正式な階層構造がない。技術的に可能な者が可能なことをしており、明確な分担は存在しない。コード修正はまずディスカッションリストにパッチとして投稿され、問題があればそこで議論される。毎日、5件から8件のパッチ投稿がある。
プロジェクトは独自のテストスイート(Mauve)を使っている。175,000項目のテストが毎日実行され、公式のAPIと互換が保たれていることが確認されている。
[編集] 仮想マシンとの繋がり
GNU Classpath には、公式な Java API ネームスペースにあるクラス群がある。これらクラス内でネイティブコードにアクセスする必要が生じた場合、少数の "VM" クラス群が使われる。VMクラス群は本来のクラス名の前に VM と付けたものである(VMObject、VMStringなど)。VMクラス群は他のコードとは分離して格納され、private属性と final属性を付与される。これらのクラスのメソッドには native というキーワードが含まれ、サポートライブラリが必要であることを示している。このようなライブラリはJava仮想マシンの側で用意する。GNU Classpath が接続できるJava仮想マシンは、そのソースコードにアクセス可能で修正可能な場合である。例えば、サン・マイクロシステムズの仮想マシンはこの条件を満たしていないので、使えない。
[編集] Java 1.5 の新言語機能サポート
バージョン 0.95 以前、GNU Classpath リリースでは 2つの tarball がリリースされていた。一方はメインの開発ブランチであり、もう一方はより実験的なブランチである。後者では総称型、列挙型、アノテーションといった Java 1.5 の新機能が追加されている。
バージョン 0.95 からは Java 1.5 の総称型のような追加機能はメインブランチに完全に統合されている。Eclipse のコンパイラ (ecj) で Java 1.5 のソースコードをバイトコードにコンパイルし、それを GCJ でネイティブコードに変換できる[1]。
[編集] サンのオープンソースコンパイラとのインタフェース
バージョン 0.95 から、GPLのオープンソースのJavaコンパイラ javac で GNU Classpath のランタイム(GIJ)とコンパイラ(GCJ)が利用可能となり、また、GNU Classpath のクラスライブラリやツールや例を javac 自身でコンパイル可能となっている。
[編集] omg.org ドメインに由来するクラス
GNU Classpath は、フリーでないライセンスのコードやフリーでないライセンスのコードから自動的に生成されたコードを受理しない。標準 Java API には omg.org ドメインのクラスが多数含まれており、これらはObject Management GroupがリリースしたIDLファイルから生成されたものである。これらのファイルは改変が許されていないためフリーではない。そのため、GNU Classpath では、OMG の公式仕様書を参照して、対応するクラスを一から手で書いた。従って、GNU Classpath のそれらのコードも他の部分と同様にフリーとなっており、正しく機能する。
[編集] 関連項目
- Apache Harmony
- GCJ
- Kaffe
- IcedTea