システムブログ システムソリューションのメンバーが
システムの素晴らしさを紹介いたします

株式会社東洋のシステム開発は、無駄のない仕様をはじめ、簡単な入力画面や検索機能が人気です。
システムソリューションのメンバーがその素晴らしい機能をひとつずつ紹介いたします。

JNIとC言語

今回は、弊社で開発しております販売管理システムQuestPlusの主コンピュータ言語であるJavaから呼び出せるインタフェースであるJNIと、呼び出される言語の例としてC言語の一部の言語仕様を紹介させて頂きます。

JNIで規定されているのはAPIで、名称、引数、返値の仕様が定められています。

先ずは、Java側でメソッドのインタフェースだけ定義しておきます。

Javaのソースのクラス内に上記のようなメソッド定義を作成しておきます。

次に、JNI定義の設定ファイルをxml形式で作成します。
Eclipseでは、その設定ファイルを作っておけば、定義を作成できる機能が用意されています。

上記の内容を『build.xml』として保存しておきます。
このファイルを置いているディレクトリを「basedir」として、上記の相対パス下がEclipseのJavaクラスファイルの置き場所という例です。
「javah」というのは、JDKに含まれるJNIで使われるプログラムで「arg」タグは起動時の引数です。
「.で区切られた正式なクラス名」の箇所には、JNIで使うクラス名を記述します。

これを実行すると、同じディレクトリにクラス名の「.」を「_」に変えた名前のヘッダファイルが作成されます。
その中には、上記の「test1」のメソッドのC(C++含む)言語用の関数インタフェースが入っています。
それらの言語で開発する際は、その関数インタフェースを使います。

以上、JNIと関数インタフェースの作り方の紹介でした。