简介
JNI,全称为Java Native Interface,俗称JAVA本地编程接口,它是由SUN公司定义的一套标准接口,它允许JAVA代码和其他语言的代码进行交互。
演变
JDK1.0 只包含了一个本地方法接口还没有JNI,它允许JAVA程序调用C/C++写的程序。
JDK1.1 第一次支持JNI,但是JDK1.1仍在使用老风格的本地代码来实现JAVA的API。
JDK1.2 被彻底改变成符合标准的写法。
JNI官方 https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/intro.html
作用
JNI的主要作用就是为了解决在JVM跨平台的过程中的一些短板而实现,主要是让JAVA代码直接调用平台下其他语言的代码,而开发的一个种标准接口。JVM既是Host OS下的一个Process,也是一个装载Java程序的虚拟系统。
在不能平台下的不同表现形式如上,这些库是脱离了JVM的,他们属于平台但又与JVM关联,他们需要平台环境去编译通过JNI直接用JAVA代码调用,最终通过dlopen、dlsym提供一种动态转载库到内存的机制,在需要的时候,可以调用库中的方法。后面再Android 版JNI详细说下编译写运行的原理。