JavaでJNI(SWIGっていい!)

C++で作られたライブラリを、Javaから使用するにあたって、JNIを調べていましたが、、

  • ネット上に転がっているJNIのサンプルは、簡単なものが多く、実際参考にするには情報が足りない。
  • SunのJNIのドキュメント(JNI - Java Native Interface)を読んだが、理解するにはちょっと時間が…

ということで、SWIGを使ってみることにしました。

SWIGとは、CやC++で書かれたライブラリを、他の言語(主にスクリプト系の言語)から利用するためのコードを自動作成するツールです。SWIG用のインタフェースファイルを作成するだけで、各言語用のラッパーを自動生成してくれるという優れものです。

※日本語サイトは今は落ちているようです…

使ってみた感想ですが、こんな簡単に出来ていいのかってくらい簡単でした。
例外のハンドリングや、C++側のメモリ管理(Javaやってると、ついついdelete忘れがち…)もちゃんと考慮されたラッパーが出来上がります。

今まで、CやC++Javaを組み合わせて使用しようなんてあまり思いませんでしたが、SWIGバインディングが簡単に出来ることがわかったので、今後はパフォーマンスに困ったらCやC++に逃げてみようかと思います。

<参考サイト>