コンテンツにスキップ

GNU Compiler for Java

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

これはこのページの過去の版です。Melan (会話 | 投稿記録) による 2007年12月9日 (日) 07:55個人設定で未設定ならUTC)時点の版 (関連項目)であり、現在の版とは大きく異なる場合があります。

Template:Infobox Software2 GCJ (GNU Compiler for Java)はJavaのためのフリーなコンパイラで、GCCの一部である。Javaソースコードをコンパイルし、Java仮想マシンバイトコードまたはマシン語を出力する。また、バイトコードを格納したクラスファイルや、それらを格納したJAR全体をマシン語にコンパイルすることも出来る。GCJで使用されるほとんど全てのランタイムライブラリGNU Classpathプロジェクトに由来する。

AWTSwingの2つのグラフィカルAPIをGNU Classpathにサポートさせることに現在多くの労力が投入されている。AWTとSwingの両方のフルサポートは間近であり、AWT/Swingアプリケーションを実行するためにサン・マイクロシステムズから提供されたランタイムを使用する必要性は遠からずなくなる見通しである。

CNI (Compiled Native Interface)

CNI (Compiled Native Interface)は、ネイティブアプリケーションやC++で記述されたライブラリを、Javaコードとの間で相互に呼び出せるようにするためのGCJのためのソフトウェアフレームワークである。

これは多くのJava仮想マシンで標準とされているJNI(Java Native Interface)フレームワークに似ているが、CNIの作成者はJNIに対して幾つもの優位性を主張している。

我々はCNIをより良い手段だと考えて採用している。特に、標準的なコンパイル技術を使って実装されるもう一つのプログラミング言語に過ぎないとする発想に基づいたJava実装において、より良いと考える。それゆえ、そしてGCCを用いた言語実装は出来るだけ互換であるべきなので、Javaの呼び出し規約は、他の言語、特にC++で使用される規約に対して、実用性を損なわない範囲で極力似ていなければならない。なぜならC++は、JavaをC++のサブセットと考えることもできるためである。CNIは、単にC++とJavaは同じ呼び出し規約とオブジェクト配置を持ち、バイナリ互換である、という発想によるヘルパー関数と規約のセットである。(この説明は単純化されているが、十分に正確である)[1]

  1. ^ The GCJ FAQ 2.3 Why does GCJ use CNI?[1] より

関連項目

外部リンク