Rumah  >  Artikel  >  Java  >  Cara mesin maya Java berinteraksi dengan kod asli

Cara mesin maya Java berinteraksi dengan kod asli

PHPz
PHPzasal
2024-04-13 22:30:01840semak imbas

Terdapat dua cara untuk mesin maya Java berinteraksi dengan kod tempatan: JNI (Antara Muka Asli Java): mengakses fungsi kod tempatan melalui rangka kerja pengaturcaraan dan mengurus struktur dan sumber data tempatan. JNA (Java Native Access): Menyediakan perpustakaan untuk memudahkan panggilan kod tempatan, memuatkan perpustakaan fungsi tempatan dan mencipta contoh antara muka untuk mengakses fungsi setempat.

Cara mesin maya Java berinteraksi dengan kod asli

Cara Java Virtual Machine Berinteraksi dengan Native Code

Java Virtual Machine (JVM) boleh berinteraksi dengan kod asli, membenarkan program Java mengakses sumber di luar skop JVM. Berikut ialah dua cara utama mesin maya Java berinteraksi dengan kod asli:

JNI (Antara Muka Asli Java)

JNI (Antara Muka Asli Java) ialah rangka kerja pengaturcaraan yang membolehkan program Java memanggil fungsi kod asli. Ia menyediakan kaedah untuk mengakses kod asli daripada kod Java dan menyediakan mekanisme untuk mengurus struktur dan sumber data asli.

Langkah:

  1. Buat fail pengepala JNI untuk mengisytiharkan fungsi setempat yang akan dipanggil.
  2. Tulis kod Java untuk memuatkan fungsi asli.
  3. Gunakan fungsi JNI untuk memanggil kod tempatan.

Contoh:

// 头文件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) ialah perpustakaan yang memudahkan interaksi dengan kod asli. Ia menyediakan banyak fungsi dan alatan yang memudahkan untuk memanggil fungsi asli daripada kod Java.

Langkah:

  1. Buat antara muka yang menerangkan fungsi setempat yang akan dipanggil.
  2. Gunakan JNA untuk memuatkan perpustakaan fungsi tempatan.
  3. Buat contoh antara muka dan panggil fungsi setempat.

Contoh:

// 接口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); // 调用本地函数
    }
}

Ringkasnya, Mesin Maya Java berinteraksi dengan kod asli melalui JNI dan JNA, membenarkan program Java mengakses sumber di luar skop JVM.

Atas ialah kandungan terperinci Cara mesin maya Java berinteraksi dengan kod asli. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn