JNIを使ってみる

JNIについて

JNIとは、Javaからネイティブなライブラリを起動するための仕組みです。結構古くからあるのですが、あまり使われるケースは少ないです。
それもそのはずで、Javaならばマルチプラットフォームで開発できるのがJavaの売りなのに、それが使えなくなってしまうからです。
とはいっても、「プラットフォームネイティブな処理をしたいのに、Javaではサポートされていない」といったことが発生した場合にはJNIを使わなければ、どうしても対応できないといったことがあります。私もあまり使った機会がないのですが、なかなか面白い技術なので、勉強がてら少し使ってみたいと思います。
WindowsAPIを実行したいなんてときには、JNIを使えばあっさりとできるので、お試しあれ。

ここで使用する環境
私が使っている環境をメインに、開発を進めることにします。
# JDK1.4.1
# Windows2000
# C言語のコンパイラとして、Borland C++ Compiler 5.5.1

JNIのマニュアルには、あまりBCCを使った開発について書いていないし、インターネットで検索してもVCばかりでBCCについて書いてあるページは少ないので、結構貴重な情報になるのではないかと思う。

JNIについては、sunの公式ページが参考になるのでリンクしておきます。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jni/

ちなみにJNIはアルファベットそのままに「ジェイエヌアイ」と呼ぶ。
たまに「ジーニー」と呼ぶ人がいるが、それはJINIのことでJNIはとは全く別の技術なので間違えないように。

準備

準備としてbcc(Borland C++ Compiler)の設定について書いておきます。 Javaと連携するネイティブなライブラリとしては、このコンパイラでコンパイルしたものを使用するということにします。 bccのイン … 続きを読む 準備

Javaから呼び出す

JNIを使用して、JavaからC言語の関数を呼び出す際には、次のような流れになります。 Javaソースの作成(呼び出し側) Javaソースのコンパイル(classの作成) Java classからヘッダファイルの生成 ヘ … 続きを読む Javaから呼び出す

ネイティブからJavaを呼び出す

前章でやったのは、Javaプログラム内から、dll内の関数(ネイティブメソッド)を呼び出す方法となります。 これを利用する事で、OS依存のネイティブAPIをJavaから使用する事も可能になります。 今度は逆に、Windo … 続きを読む ネイティブからJavaを呼び出す

まとめ

長々と取りとめもなく書きましたが、ここでまとめます。 Java→ネイティブ(Javaプログラムからネイティブライブラリを使用する場合) Javaプログラムの作成(nativeメソッドを使用) javahを使用してヘッダフ … 続きを読む まとめ

コメントを残す

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください