[Gauche-devel-jp] Re: Gauche-JNI?

Back to archive index

えんどう yasuy****@javao*****
2005年 1月 2日 (日) 11:28:07 JST


 えんどうです。

>ところでここでやりたいことが、既存のJava実装で提供されている
>JNIとGaucheのブリッジを作ることで、外部のJava VMとGaucheの
>間で相互に呼び出しができるようにする、ということだとすると(*)、

欲しくなった動機はThe Project Looking Glassです。

https://lg3d.dev.java.net/

これはJavaで書かれたデスクトップ環境で、
3Dオブジェクトがデスクトップ環境でシームレスに動作します。

この環境にはまだスクリプト言語がないので、
Gaucheで用のJNIラッパーを書いてJava VMをロードしたり、
Java APIを利用したりできれば便利に思いました。

>その設計の選択によっては、JNIのAPIそのものをGaucheレベルに
>見せない方が良い (高レベルのAPIのみ見せる) 可能性もあるんじゃないか
>という気がします。

JNIではなくもっと上のレベルでバインディングするやり方でしょうか。

>どのJava実装をターゲットにするのかと、GCをどうするかについて
>具体的な案はありますか。

Java VMバージョンは 1.5 を考えています。<http://java.sun.com/j2se/1.5.0/>

GCに関しては、
Java 側で確保されたメモリーをGauche側が開放してしまうのはまずいですが、
GCの対象にしない方法は選択できますでしょうか?

JavaからGaucheを呼び出すことは考えていなかったのですが、
JNIではクラスローダーがネイティブライブラリをアンロードするとき
JNI_OnUnloadという関数が呼ばれる仕様らしい
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jni/spec/invocation.html#JNI_OnUnload
ので、もしJavaからGaucheを呼び出すならこれに対応する必要がありそうです。

あとJavaが参照しているGauche側オブジェクトがGauche側でGCされちゃうのも
まずいのですね。JNIを経由する限り直接参照しないとは思いますが。

-- 
ENDO Yasuyuki <yasuy****@javao*****>
http://www.javaopen.org/~yasuyuki/
http://www.javaopen.org/jfriends/




Gauche-devel-jp メーリングリストの案内
Back to archive index