Java中的native关键字

今天在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博客

生成的文件内容如下:


第一个参数是调用JNI方法时使用的JNI Environment指针。第二个参数是指向在此Java代码中实例化的Java对象HelloWorld的一个句柄。其他参数是方法本身的参数

4、c的实现


c文件

5、生成一个动态链接库

Windows下的生成方式;要安装Visual Studio

cl -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win64" -LD Hello.c -FeHello.dll


6、直接运行

java HelloWorld

你可能感兴趣的:(Java中的native关键字)