まとめ

長々と取りとめもなく書きましたが、ここでまとめます。

  • Java→ネイティブ(Javaプログラムからネイティブライブラリを使用する場合)
  • Javaプログラムの作成(nativeメソッドを使用)
  • javahを使用してヘッダファイルの作成
  • ヘッダファイルを使用して、ライブラリの作成
  • ライブラリをPATHに通した状態で使用
  • ネイティブ→Java(ネイティブプログラムから、Javaプログラムを使用する場合)
  • C言語で、JVMの起動からメソッドの実行などのロジックを記述
  • ヘッダファイルと、インポートライブラリを使用してコンパイル
  • jvm.dllをPATHに通した状態で実行

※Borland C++ Compilerを使用する場合は、jvm.libをそのまま使用せずに、
implibというツールを使って、bcc32用に変換する。

色々使ってみましたが、「ネイティブプログラムからJavaを使用する」というサンプルは、あまり使い道がないと思います。
PATHを通す個所がはっきりしないので、単にJavaプログラムを起動するだけであれば、java.exeを実行した方が楽です(でも、この場合はプロセスが起動します)
使い道としては、Java言語で作成されたメソッドを、どうしても使いたい場合などには使用するぐらいだと思います。
そういう場合は普通はJavaプログラムをネイティブに取り込むのではなく、Javaプログラムと連携したほうがよいと思われるわけです。

JNI:Java Native Interfaceプログラミング―C/C++コードを用いたJavaアプリケーション開発
JNIについて詳しく書かれた貴重な一冊。
JNIプログラミング時に必携の本です。
ちなみにJNIについての書籍は、ほとんどありませんが、バイブルといえる本がこれです。

JNIでの開発は情報量が少なくて、プログラムを作成して実際に動作を確認しても、「本当にこれで間違っていないのか?」とか「たまたま動いているだけでメモリリークしているのでは?」とかちょっぴり不安になることも多いです。
この書籍では、JNIプログラミングについて具体的に書いてあります。JNI関係のAPIを使った時に、JVMがどのように動作させるのかを考えながら解説されているため、安全なJNIプログラミングができると思います。
ちょっと高い書籍ですが、JNI開発時には欠かせないバイブルだと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)