今天在Java基础类库的源代码的时候,遇到了一个关键字:native。
什么是Native Method?
简单地讲,一个用Native关键字修饰的方法就是一个java调用非java代码的接口;
native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中,这个特征并非java语言所特有,很多其它编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数;
由于该方法的并非由java语言实现,所以在源代码中是没有实现体的。。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
JNI的书写步骤如下:
1、编写一个类:
2、在类文件所在路径,打开cmd 执行编译命令javac HelloWorld.java
3、生成.h文件 javah -classpath "D:\test" HelloWolrd
classpath后的是编译的class文件所在路径;
导出类的.h文件出错,参考下面的链接:
用javah 导出类的头文件, 常见的错误及正确的使用方法 - CSDN博客
生成的文件内容如下:
4、c的实现
5、生成一个动态链接库
Windows下的生成方式;要安装Visual Studio
cl -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win64" -LD Hello.c -FeHello.dll
6、直接运行
java HelloWorld