About Glass

glass は gcc の Java bytecode フロントエンドです. 現在まだ手のついてない部分も多いのですが glass は classes.zip (jdk.1.1.6) 中の全ての .class ファイルをコンパイルできるようになり、linux の上でごく簡単なランタイムライブラリを使って javac のコンパイル版が動いています. 他の CPU に関しては i386 以外でも sparc, mips, sh, arm 等で classes.zip のコンパイルができるところまでは確認しています.

ついに Cygnus の gcc team から GCJ がリリースされました! これは完全な製品レベルを目指し、 .java ソースも compile でき、実行時環境としては kaffe を使うということです.

その他の(商用や研究目的の) Java bytecode compilerとして私が知っているのは

などです. また bytecode の C への translator として

などがあるようです. これらのリストはたぶん不十分だと思います. もし他の bytecode compiler などをご存知でしたらお教えくだされば幸いです.

関連リンクには次のようなものがあります.

[compiler in OOPS]

[GC]

Story

本来は実行時環境での GC で埋め込みアプリケーション指向の少しふつうでないアイデアを実装して、はたして使い物になるかを調べるのが目標でした. ただ linux で動いてしまうと他にもやってみたいことや、やらなければいけなそうな事が山のようにあります. 例えば

JNI compatible な出力をするための -jni という compile option を追加して -jni 付で作った xjavac が動作することを確認しています. runtime library も JNI に対応できれば awt が動かせるめどがつくのですが...

-g option で bytecode のレベルでの gdb による debugging が部分的に可能になりました.

shared library が作れるようになりました. ちなみに i386 版で jdk-1.1.5 を全て compile して1つの shared library にしてしまうと 14.6Mbyte の大きさになりました.

ごく簡単な AWT を使った program が動くようになりました. free な JVM japhar の code を参考に linux 上 Motif clone である LessTif との組み合わせで開発中.

ftp

が download できます.

INSTALL

gcc-2.8.x の source tree を持っていて glass をそれとは別の directory で make するとします.

(1) glass-current.tar.gz を gcc-2.8.x/ で展開します.

(2) もしすでに gcc-2.8.x/ で gcc の configure をしていた場合は

make distclean

によって以前の configuration を消します.

(3) glass を作りたい directory に移動します. 例えば

cd ..
mkdir i386-linux-glass
cd i386-linux-glass

(4) 次のようにして gcc の configuration を行います.

../gcc-2.8.x/configure --srcdir=../gcc-2.8.x

(5) compiler や他の program を作成します.

make LANGUAGES=glass

これでコンパイラ glassc1、 ドライバ glass と glass 風の native method のためのインクルードファイルのジェネレータ glash ができます. これらを install したのち、今度は runtime library libglass.a と classes.zip を全て compile した libclasses.a を build します.

(6) libclasses-current.tar.gz を適当な場所で展開します.

tar xzvf libclasses-current.tar.gz

(7) libraries を作りたい directory に移動します. 例えば

mkdir i386-libclasses
cd i386-libclasses

(8) 次のようにして JDK のある directory を指定して configuration を行います.

../libclasses/configure --srcdir=../libclasses --with-sun-jdk=/usr/local/jdk1.1.5

(9) libraries を作成します.

make

lib*.a はほんの間に合わせの部分があるので、それほどまともなことはできないはずです。(^_^; glass を動かすには CLASSPATH が設定されている必要があります.

予想 FAQ ^^;


* Java 及び Javasoft は Sun Microsystems, Inc の登録商標です.

Index に戻る