java关键字native

1.1概述

被native关键字修饰的方法叫做本地方法,本地方法和其它方法不一样,本地方法意味着和平台有关,因此使用了native的程序可移植性都不太高。另外native方法在JVM中运行时数据区也和其它方法不一样,它有专门的本地方法栈。native方法主要用于加载文件和动态链接库,由于Java语言无法访问操作系统底层信息(比如:底层硬件设备等),这时候就需要借助C语言来完成了。被native修饰的方法可以被C语言重写

1.2使用

1.Java程序中声明native修饰的方法,类似于abstract修饰的方法,只有方法签名,没有方法实现。编译该java文件,会产生一个.class文件。
2.使用javah编译上一步产生的class文件,会产生一个.h文件。
3.写一个.cpp文件实现上一步中.h文件中的方法。
4.将上一步的.cpp文件编译成动态链接库文件.dll。
5.最后就可以使用System或是Runtime中的loadLibrary()方法加载上一步的产生的动态连接库文件了。

1.3拓展

1.在声明为native的方法的程序计数器为undefined,在一开始类加载时,native修饰的方法就被保存在了本地方法栈中,当需要调用native方法时,调用的是一个指向本地方法栈中某方法的地址,然后执行方法直接与操作系统交互,返回运行结果。整个过程并没有经过执行引擎的解释器把字节码解释成操作系统语言,PC计数器也就没有起作用。
2.native不能和abstract连用。

posted @ 2020-07-17 21:41  大嘤熊  阅读(350)  评论(0编辑  收藏  举报