JNI と Java の基礎となるテクノロジのローカル メソッド呼び出しを実装する方法
Java はクロスプラットフォームのプログラミング言語ですが、場合によっては基礎となる C または言語と通信する必要があります。対話するための C コード。 Java では、JNI (Java Native Interface) を通じてローカル メソッドにアクセスし、基礎となるコードと通信できます。この記事では、JNI を使用して Java およびネイティブ メソッド呼び出しを実装する方法を紹介し、いくつかの具体的なコード例を示します。
まず、呼び出す必要があるローカル メソッドを宣言するために使用される Java クラスを準備する必要があります。たとえば、JNIExample という名前のクラスを作成します。このクラスは、ローカル メソッド add を宣言します。このメソッドは、2 つの整数を加算して結果を返すために使用されます。
public class JNIExample { static { System.loadLibrary("JNIExample"); } public native int add(int a, int b); }
上記のコードでは、静的コード ブロックを使用して、ネイティブ ライブラリ JNIExample。このネイティブ ライブラリは、ネイティブ メソッドの実装に使用する C/C コードによってコンパイルおよび生成されるダイナミック リンク ライブラリです。
次に、add メソッドを実装するための C/C ソース ファイルを作成する必要があります。このファイルに JNIExample.cpp という名前を付けます。 JNIExample.cpp のサンプル コードは次のとおりです。
#include <jni.h> JNIEXPORT jint JNICALL Java_JNIExample_add(JNIEnv *env, jobject obj, jint a, jint b) { return a + b; }
上記のコードでは、add メソッドを実装し、このメソッドを C/C で実装することで整数の加算演算を完了します。このメソッドの署名は、Java で宣言されたメソッドと一致している必要があり、JNIEXPORT および JNICALL マクロを使用して変更する必要があります。
次に、Java の JNI ツールを使用して、C/C ソース ファイルをプラットフォーム関連のダイナミック リンク ライブラリにコンパイルする必要があります。コマンド ラインで次のコマンドを使用してコンパイルします。
gcc -shared -fpic -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/${TARGET}" -o libJNIExample.so JNIExample.cpp
上記のコマンドでは、gcc コンパイラを使用して JNIExample.cpp を libJNIExample.so ダイナミック リンク ライブラリにコンパイルします。 ${JAVA_HOME} を Java インストール ディレクトリに置き換え、${TARGET} をターゲット オペレーティング システムのディレクトリに置き換えることに注意してください。
コンパイルが完了すると、libJNIExample.so という名前のダイナミック リンク ライブラリが取得されます。このライブラリ ファイルを Java クラスと同じディレクトリに配置するか、ライブラリを含むパスを指定します。
最後に、Java プログラムで JNIExample クラスの add メソッドを呼び出して、ローカル メソッドと対話できます。以下は、JNIExample クラスを使用したサンプル コードです。
public class Main { public static void main(String[] args) { JNIExample jniExample = new JNIExample(); int result = jniExample.add(10, 20); System.out.println("Result: " + result); } }
上記のコードでは、JNIExample オブジェクトを作成し、その add メソッドを呼び出します。このメソッドは、以前に C/C で実装した add メソッドを呼び出し、結果を返します。最後に、結果を出力します。
上記の手順により、JNI を使用して Java およびローカル メソッド呼び出しを実装できます。 JNI を通じて、基礎となる C/C コードと対話して、より柔軟で効率的なアプリケーション開発を実現できます。
以上がJNI と Java 基盤テクノロジーのローカル メソッド呼び出しを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。