GNU Compiler for Java
作者 GNUプロジェクト
最新版
6.5 / 2018年10月26日 (7年前) (2018-10-26)
対応OS Unix-like
種別 コンパイラ
ライセンス GPL
公式サイト http://gcc.gnu.org/java
テンプレートを表示

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

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

2015年より、新しい開発のアナウンスはなく、製品はメンテナンスモードとなった[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?[1] より

関連項目

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

Java

Java SE 6を「OpenJDK」としてGNU一般公開ライセンスの下でリリースした。OpenJDKではソースコードの改変も認められた。GNUプロジェクトは「GNU Interpreter for Java」、GNUコンパイラコレクションの「GNU Compiler for Java」、互換クラスライブラリの「GNU

フリーソフトウェア財団

orgやGNOMEデスクトップ環境のJava依存部の互換性を保証するため、フリーなJava実装(英語版)、GNU Interpreter for Java、GNU ClasspathそしてGNU Compiler for Javaが含まれていた(本項の詳細は、英語版ウィキペディアの記事"License of Java"を参照)。[要出典]

GNU Classpath

他に以下のもので使われている。 GNU Compiler for Java (GCJ) はJavaのコードをネイティブな独立した(Java VMを必要としない)実行ファイルにコンパイルする機能を持つ。 IKVM.NETはJavaと.NET Frameworkを結びつけるものである。 JNodeはJava

Java Development Kit

Runtime for Java(英語版) JVM / JDK Blackdown Java(英語版) – Linux用のSun JDKの移植 GNUプロジェクトのGNU Classpath、GNU Interpreter for Java (GIJ) およびGNU Compiler for Java (GCJ)

C言語

も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。

コンパイラ

コンパイラ(英: compiler)は、高水準言語で書かれたコンピュータプログラムを、 コンピュータが実行や解釈できる形式に、一括して変換するソフトウェア。 コンパイラの技術書のバイブルとされるAlfred V.Aho(アルフレッド・エイホ)著 Compilers, Principles, Techniques

統合開発環境

by AdaCore. GPS uses compilers from the GNU Compiler Collection, taking its name from GNAT, the GNU compiler for the Ada programming language. Ultimate++

Linux

グシステムを開発するのに使われているツール群の多くはGNUツールチェーンというものの中にみられる。これには、GNUコンパイラコレクション (GCC) や GNU build system が含まれている。GCCは、C言語、C++、Ada、Java、Fortranのコンパイラを提供している。今後GC