Java native 关键字
如你在看 JDK 的源代码的时候,大概率会看到很多方法使用了 native 关键字。
下面是 String 对象 JDK 中的源代码,就带有了一个 native 关键字。
native 是干什么用的
简单来说就是 Java 的 native 方法的实现不是用 Java 实现的,可能在其他语言里面。
一个 Native Method 就是一个 java 调用非 java 代码的接口。
一个Native Method是这样一个java的方法:该方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
使用 native 关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。
JVM 中很多的底层实现都是使用 C 实现的。
看看 openj9 的源代码就知道了。
例如下图上面 openj9 中的 gc,就是 C 实现的。
JDK 在调用上面一些实现的时候,显然是调用了外部的动态库等,所以我们用 native 在这里标记下,表示具体实现在 JVM 里面。
实现
具体的实现是通过 JNI 实现的。
JNI 的全称为 Java Native Interface,一句话来说就是Java的本地接口,和我们常见的很多Java方法,很多实现是由Java本身来实现的,有的时候还需要本地方法来提供相关的功能。
通过 JNI 就可以实现调用了。
在这里 native 只是在 JDK 里面标记下。