首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

java-native步骤总结

2012-11-23 
java-native方法总结native方法的方法体不需在java文件中实现 而在cpp文件中实现?可以将native方法比作Jav

java-native方法总结

native方法的方法体不需在java文件中实现 而在cpp文件中实现?

可以将native方法比作Java程序同C程序的接口,其实现步骤:?

  1、在Java中声明native()方法,然后编译;?

  2、用javah产生一个.h文件;?

  3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);?

  4、将第三步的.cpp文件编译成动态链接库文件;?

  5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。

?

调用这些方法的其他类甚至不知道它所调用的是一个本地方法。JVM将控制调用本地方法的所有细节

java应用需要与java外面的环境交互。这是本地方法存在的主要原因,如 与操作系统交互:?

? ? ? ? ? ?JVM支持着java语言本身和运行时库,它是java程序赖以生存的平台,它由一个解释器(解释字节码)和一些连接到本地代码的库组成。

? ? ? ? ? ?然而不管怎 样,它毕竟不是一个完整的系统,它经常依赖于一些底层(underneath在下面的)系统的支持。

? ? ? ? ? ?这些底层系统常常是强大的操作系统。通过使用本地方法,我们得以用java实现了jre的与底层系统的交互,甚至JVM的一些部分就是用C写的,

? ? ? ? ? ?还有,如果我们要使用一些java语言本身没有提供封装的操作系统的特性时,我们也需要使用本地方法。

?

public class Object {

? ? ? ? private static native void registerNatives();//告诉JVM有native方法

? ? ? ? static {

? ? ? ? ? ? ? ? registerNatives();

? ? ? ? }

? ? ? ? public final native Class<?> getClass(); ? ? ? ?

? ? ? ? protected native Object clone() throws CloneNotSupportedException;

? ? ? ? /**虽然Class也是extendsObject但不会死循环调

? ? ? ? 因为public String getName() {if (name == null)name = getName0();return name;}

? ? ? ? private native String getName0();也是native的

? ? ? ? */

? ? ? ? public String toString() {

? ? ? ? ? ? ? ? return getClass().getName() + "@" + Integer.toHexString(hashCode());

? ? ? ? }

? ? ? ? //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

? ? ? ? protected void finalize() throws Throwable { }

}

热点排行