ホームページ  >  記事  >  Java  >  JNI と Java 基盤テクノロジーのローカル メソッド呼び出しを実装する方法

JNI と Java 基盤テクノロジーのローカル メソッド呼び出しを実装する方法

王林
王林オリジナル
2023-11-08 12:26:11509ブラウズ

JNI と Java 基盤テクノロジーのローカル メソッド呼び出しを実装する方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。