close
コンテンツにスキップ

GNU Compiler for Java

出典: フリー百科事典『ウィキペディア(Wikipedia)』
GNU Compiler for Java
Image
作者 GNUプロジェクト
初版 1998年9月6日 (27年前) (1998-09-06)
最新版
6.5 / 2018年10月26日 (7年前) (2018-10-26)
プログラミング
言語
CC++Java
対応OS Unix-like
サポート状況 終了
種別 コンパイラ
ライセンス GPL
公式サイト http://gcc.gnu.org/java
テンプレートを表示

GNU Compiler for Java(グニュー・コンパイラ・フォー・ジャバ、GCJ、ジーシージェー)は、かつて開発されていたJavaのためのフリーなコンパイラで、GCCの一部であった。Javaソースコードをコンパイルし、Java仮想マシンJavaバイトコードまたは機械語を出力することができた。また、バイトコードを格納したJavaクラスファイルや、それらを格納したJAR全体をマシン語にコンパイルすることもできた。GCJで使用されていたほとんど全てのランタイムライブラリGNU Classpathプロジェクトに由来する。

2007年当時、AWTSwingの2つのグラフィカルAPIをGNU Classpathにサポートさせることに多くの労力が投入されていたが、AWTのサポートは不完全なままであった。削除されるまでに、GCCがサポートしていたのはJava 1.4までであり、ジェネリクスやアノテーションなどそれ以降の機能の大部分を欠いていた。GNU ClasspathもJava 1.2のステータスにさえ完全には到達せず、現在は開発が完全に放棄されたとみられている。

2015年より、新しい開発のアナウンスはなく、製品はメンテナンスモードとなり、オープンソースのJavaツールチェーン開発は主にOpenJDK内で行われるようになった[1]。2016年9月30日、GCJはGCCのtrunkから削除された[2][3]。削除のアナウンスは、GCJを含まないGCC 7.1のリリースとともに行われた[4]。GCJが含まれる最後のリリースはGCC 6となった。

CNI (Compiled Native Interface)

[編集]

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

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

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

脚注

[編集]
  1. GCC Looks To Turn Off Java, Replace With Go Or ADA
  2. Andrew Haley (2016年9月30日). [gcc] Revision 240661”. 2017年12月9日閲覧。
  3. Tromey, Tom (2016年10月2日). The Deletion of gcj”. The Cliffs of Inanity. 2016年10月3日閲覧。
  4. GCC 7 Release Series: Changes, New Features, and Fixes”. 2017年5月9日閲覧。
  5. The GCJ FAQ 2.3 Why does GCJ use CNI? より

関連項目

[編集]

外部リンク

[編集]