JNI 是 Java Native Interface 的缩写,即 Java 本地接口。它允许 Java 代码调用 C/C++ 代码,反之亦然。JNI 是 Java 和 C/C++ 代码之间的桥梁,使得这两种语言可以相互通信。
JNI 参数可以是本地引用或全局引用。本地引用是指 JNI 函数调用在本地方法栈中执行的 C/C++ 函数。全局引用是指 JNI 函数调用在 Java 代码中声明的全局 C/C++ 变量或函数。
在 JNI 中,参数传递的方式有两种:通过值传递和通过引用传递。通过值传递的方式是将参数复制一份,然后传递给函数。通过引用传递的方式是将参数直接传递给函数,函数可以修改参数的值,也可以修改参数的引用指向的对象。
JNI 提供了许多函数,用于将 Java 对象转换为 C/C++ 对象,或将 C/C++ 对象转换为 Java 对象。这些函数包括:
JNI_VERSION_1_8
:用于设置 JNI 版本。JNI_VERSION_1_6
:用于设置 JNI 版本。JNI_VERSION_1_4
:用于设置 JNI 版本。JNI_VERSION_1_2
:用于设置 JNI 版本。JNI_VERSION_1_1
:用于设置 JNI 版本。JNI_GetCreatedJavaVMs
:用于获取已创建的 Java 虚拟机列表。JNI_CreateJavaVM
:用于创建 Java 虚拟机。JNI_DeleteJavaVM
:用于删除 Java 虚拟机。JNI_GetJavaVMs
:用于获取 Java 虚拟机列表。JNI_GetDefaultJavaVMInitArgs
:用于获取默认的 Java 虚拟机初始化参数。JNI_CreateJavaVM_extended
:用于创建 Java 虚拟机。JNI_CreateJavaVM_extended_noinit
:用于创建 Java 虚拟机。JNI_GetCreatedJavaVMs_extended
:用于获取已创建的 Java 虚拟机列表。JNI_GetJavaVMs_extended
:用于获取 Java 虚拟机列表。JNI_GetDefaultJavaVMInitArgs_extended
:用于获取默认的 Java 虚拟机初始化参数。JNI_CreateJavaVM_extended_no_init
:用于创建 Java 虚拟机。JNI_CreateJavaVM_extended_with_init_args
:用于创建 Java 虚拟机。JNI_GetCreatedJavaVMs_extended_no_init
:用于获取已创建的 Java 虚拟机列表。JNI_GetJavaVMs_extended_no_init
:用于获取 Java 虚拟机列表。JNI_GetDefaultJavaVMInitArgs_extended_no_init
:用于获取默认的 Java 虚拟机初始化参数。JNI_CreateJavaVM_extended_with_init_args_no_init
:用于创建 Java 虚拟机。JNI_GetCreatedJavaVMs_extended_with_init_args
:用于获取已创建的 Java 虚拟机列表。JNI_GetJavaVMs_extended_with_init_args
:用于获取 Java 虚拟机列表。JNI_GetDefaultJavaVMInitArgs_extended_with_init_args
:用于获取默认的 Java 虚拟机初始化参数。JNI_CreateJavaVM_extended_with_init_args_no_init_or_return_val
:用于创建 Java 虚拟机。JNI_GetCreatedJavaVMs_extended_with_init_args_no_init_or_return_val
:用于获取已创建的 Java 虚拟机列表。JNI_GetJavaVMs_extended_with_init_args_no_init_or_return_val
:用于获取 Java 虚拟机列表。JNI_GetDefaultJavaVMInitArgs_extended_with_init_args_no_init_or_return_val
:用于获取默认的 Java 虚拟机初始化参数。JNI_CreateJavaVM_extended_with_init_args_no_init_return_val
:用于创建 Java 虚拟机。JNI_GetCreatedJavaVMs_extended_with_init_args_no_init_return_val
:用于获取已创建的 Java 虚拟机列表。JNI_GetJavaVMs_extended_with_init_args_no_init_return_val
:用于获取 Java 虚拟机列表。领取专属 10元无门槛券
手把手带您无忧上云