Java 仮想マシンがローカル コードと対話するには 2 つの方法があります。 JNI (Java Native Interface): プログラミング フレームワークを通じてローカル コード関数にアクセスし、ローカル データ構造とリソースを管理します。 JNA (Java Native Access): ローカル コード呼び出しを簡素化し、ローカル関数ライブラリをロードし、ローカル関数にアクセスするためのインターフェイス インスタンスを作成するためのライブラリを提供します。
Java 仮想マシンがネイティブ コードと対話する方法
Java 仮想マシン (JVM) はネイティブ コードと対話でき、 Java プログラムは、JVM の範囲外のリソースにアクセスします。 Java 仮想マシンがネイティブ コードと対話する主な方法は次の 2 つです。
JNI (Java Native Interface)
JNI (Java Native Interface) は、プログラミング フレームワーク 。Java プログラムがネイティブ コード関数を呼び出せるようにします。 Java コードからネイティブ コードにアクセスするメソッドを提供し、ネイティブ データ構造とリソースを管理するメカニズムを提供します。
手順:
例:
// 头文件JNIExample.h JNIEXPORT jint JNICALL Java_com_example_JNIExample_calculate(JNIEnv *env, jobject obj, jint x, jint y) { return x + y; }
// Java代码调用JNI public class JNIExample { static { System.loadLibrary("JNIExample"); // 加载本地函数库 } public static int calculate(int x, int y) { return nativeCalculate(x, y); // 调用本地函数 } private static native int nativeCalculate(int x, int y); // 本地函数声明 }
JNA (Java Native Access)
JNA (Java Native Access) は、ネイティブ コードとの対話を簡素化するライブラリ。 Java コードからネイティブ関数を簡単に呼び出すことができる多くの関数とツールが提供されます。
手順:
例:
// 接口NativeLib.java public interface NativeLib { int calculate(int x, int y); }
// Java代码调用JNA public class JNAExample { private static final NativeLib LIB = (NativeLib) Native.loadLibrary("JNIExample", NativeLib.class); public static int calculate(int x, int y) { return LIB.calculate(x, y); // 调用本地函数 } }
つまり、Java 仮想マシンは JNI および JNA を通じてネイティブ コードと対話し、Java プログラムが Java プログラムのスコープ外のリソースにアクセスできるようにします。 JVM。
以上がJava 仮想マシンがネイティブ コードと対話する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。