Java核心代码(四)native方法
来源:互联网 发布:能在淘宝上发布 编辑:程序博客网 时间:2024/06/05 05:18
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 { }
}
- Java核心代码(四)native方法
- Java IO核心操作(四)
- Java核心J2SE(四)
- java native关键字(java本地方法)
- Java核心代码(二)Class loader
- Java核心代码(二)ServiceLoader用例
- Java核心代码例程
- JAVA中native方法(实现例子)
- Java Native方法(Object.HashCode())
- 什么是java本地方法(Native Method)
- java Native方法(Object.HashCode())
- Java Native方法
- JAVA中native方法
- java native方法
- java native方法
- java native关键字方法
- java native方法
- java的native方法
- javascript实现按数字键1获取img图片的焦点,按回车键刷新图片
- Java核心代码(三)javap跟踪String类"+"加号验证
- android_10 activityA调activityB
- Unity3D应用防外挂与防破解
- JVM terminated.Exit Code=-1
- Java核心代码(四)native方法
- Java核心代码(二)Class loader
- android_11 activityA调activityB,再返回activityA
- android_11 activity 生命周期
- Java语法(五)JVM 总结
- 深入理解 GraphQL
- Java语法(一)基本语法(think in java 笔记)
- 利用PickerView完成地址选择器(省市二级联动)
- android_12 activity 保存状态