JNI 的主要功能
调用本地代码:Java程序可以调用C/C++等语言编写的本地代码。这对于需要进行高性能计算或访问特定平台特性(如硬件接口)特别有用。
本地代码调用Java代码:本地代码也可以通过JNI调用Java方法,实现双向通信。
访问底层操作系统功能:通过JNI,Java应用可以直接访问底层操作系统功能,这在某些情况下可以提供更高的性能或实现Java标准库无法提供的功能。
本地方法栈的作用:本地方法栈用于存储本地方法的局部变量、调用状态等,在 Java 线程调用本地方法时使用。
JNI 的执行过程:当 Java 调用本地方法时,JVM 将从 Java 方法栈切换到本地方法栈,执行本地代码,然后返回结果。
优点
性能:本地代码通常比Java代码执行更快,尤其是在需要直接访问硬件或操作系统资源时。
功能:可以访问Java标准库无法提供的底层操作系统功能或已有的本地库。
JNI会导致和平台相关性,从而影响JAVA的多平台性。