top / index / prev / next / target / source

2006-12-14 diary: C++言語からJava言語の呼び出しのソースコード(C++ソース)を自動生成する 「blancoJni」 を試作

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

C++言語からJava言語の呼び出しのソースコード(C++ソース)を自動生成する 「blancoJni」 を試作

C++言語から簡単に Java言語を呼び出せるようにするためのソースコード自動生成ツール 「blancoJni」を試作しました。このツールは C++ソースコードを自動生成します。

C++言語からJava言語の呼び出しのソースコード(C++ソース)を自動生成する 「blancoJni」 を試作

C++言語から簡単に Java言語を呼び出せるようにするためのソースコード自動生成ツール 「blancoJni」を試作しました。このツールは C++ソースコードを自動生成します。

blancoJni を使うと、C++言語から Java言語を呼び出す際の あの面倒なコーディングのほとんどを省略することができます。メソッドIDを取得したり、文字コードを変換したり、などの C++から Javaを呼び出す際の特有のコーディングを です。スタティックメソッドかどうか、なんてことも気にしないでよいです。それらコーディングの大部分は blancoJni から自動生成させることができるのです。(blancoJniが自動生成するのは *.h および *.cpp ファイルです。)

なお、このツールのニーズがある人は かなりの少数派だと思います。C++から Javaを呼び出すニーズなんてものは 限られた方々が従事する 秘密の技みたいなもの、と考えています。「mid」や「env->FindClass」などの用語を聞いてピンと来る人が対象のツールです。そもそも C++言語と Java言語の双方を扱うことが出来る人口、あるいはそういうニーズに立たされている人は少ないですものね。

また、blancoJniは 試作段階です。使い勝手の良い自動生成ソースコード、という観点での検討も、これまた難易度高いです。今のところ、「なるべく軽量」を目標にしています。また Windows用C++言語処理系である 「VisualStudio.NET 2005」のC++ にのみ対応しています。他のOSの C++言語処理系には対応していません。ちょちょっと blancoJni自身のソースコードを変更しさえすれば他のOSでも動作するでしょうけれども…。実装されているのは Antタスクのみ です。*.classファイルを入力として動作します。 *.jarファイルの入力では動作しません。

自分用メモ: blancoJni は blancoBcel ベースで作成したのだけれども、よくよく考えたら Apache BCELに依存しなくても単に Java言語のリフレクションだけでも同様の仕様が実現できる、のかどうかを検討すること。あるいは blancoBcel を Apache BCELモードのほかに リフレクションモードも追加する、ことにも価値があるかも知れません。


この日記について