ごうぎ@TCIです。
まだ、実験途中でいい加減なところが多いのですが....

今、JavaとRubyでネイティブコードの拡張をやってみてるのですが、
どちらもC言語で記述して、クラスはstructureで定義するようになっ
ていますね。

でも、Rubyは既にあるライブラリに拡張を行う場合はdata_new()等
を使っていけば結構やり易い様に思うのですが、Javaの場合は、 
    ・ まず、Javaでクラスを書いて、ネイティブコードにする所を
     nativeと宣言する。
    ・ 必要な属性を定義する。
    ・javacでコンパイルしてjavahでstubヘッダーを作ると

というアプローチになっていますので、すでにあるCのライブラリ
をJavaのクラスにするには、データの型を合わせたり、Javaのクラ
スの方に必要な属性をすべてJavaの方でも定義して思ったCの構造
体に近い形にする必要があるので、すでにあるものの利用という点
では結構面倒だなと思ってしまいます。Javaのインターフェースか
らのアプローチであれば問題ないのですが。

--
 欲をいえば、RubyにもJavaにもC++のクラスをそれそれのクラスと
して簡単に定義出来ればいいなぁと思うのですが、コンパイラによっ
てシンボル名が変わったりするので難しいのかもしれません。

XeroxのILUは分散型の環境を意識している性か、DCEのIDLに似た
IDLで色んな言語とのインターフェースが記述出来るようで面白い
なと思っています。
 これにRubyも追加出来ると面白いかなと思ったりもします。
 僕は言語屋ではないので、これが難しいことかどうかはわかりま
せんが...
 今の所、Python,Common Lisp, Java用のC++やCのインターフェー
スが記述出来るようです。Javaのインターフェースを作ってみよう
かなと思ったのですが、うまくコンパイルリンク出来なくって、再
度挑戦してみます。


--
gougi / caelum.co.jp (Shigeru Gougi)