コンテンツにスキップ

GNU Classpath

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。BBB (会話 | 投稿記録) による 2009年12月5日 (土) 01:23個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

GNU Classpath
GNU Classpath Swing のデモ画面
開発元 GNUプロジェクト
(かつては FSF
最新版
リポジトリ ウィキデータを編集
対応OS クロスプラットフォーム
種別 ライブラリ
ライセンス 例外条項付きGPL
公式サイト http://www.classpath.org
テンプレートを表示

GNU Classpath は、Javaの標準クラスライブラリのフリーな実装を作るプロジェクトである。フリーソフトウェア財団GNUプロジェクトの一部である。作成すべきライブラリは膨大だが、そのほとんどは完了しており、SwingCORBA なども含まれる。Classpath では J2SE 1.4 および 5.0 の全クラスをほとんど実装してきた。従って Classpath を AzureusEclipseといった一般的なJavaベースのソフトウェアで使うことができる。

GNU Classpath はライセンス条件の違いがあるため、libgcj と並行して開発された。現在では GPL を採用することで合意がなされ、両プロジェクトは統合された。

ライセンス

GNU Classpath は、リンクに関する例外(en:GPL linking exception)付きのGPLの条件下でライセンス提供される。すなわち、オープンソースフリーソフトウェアである。全コードは形式上フリーソフトウェア財団の所有となっており、その所有権は開発者たちとの契約上の義務によって束縛されている。

Uses

GNU Classpath は多くのフリーなJava実装(KaffeSableVMJamVMCACAOJikes RVM など)で採用されている。というのも、Java仮想マシンを実装した際に標準クラスライブラリが必須であり、GPL ライセンスとするには選択肢はあまりないためである。

他に以下のもので使われている。

歴史

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 のそれらのコードも他の部分と同様にフリーとなっており、正しく機能する。

関連項目

外部リンク