一: native 声明
在 Java 中 native 是关键字它一般在本地声明, 异地用 C 和 C++ 来实现它的声明有几点要注意:
1)native 与访问控制符前后的关系不受限制
2)必须在返回类型之前
3)它一般为非抽象类方法
4)native 方法在异地实现, 象抽象方法一样, 所以没有方法体, 以分号结束如下列 5 种声明:
native public void f(); 正确
private native void f(); 正确
protected int native f(); 错误, 返回类型位置不对, 返回类型必须在 native 之后
public abstract native void f(); native 必然不是 abstract 的
native int f(){} 错误, 因为存在方法体{}
public static native f(); 正确 static 与 native 方法位置随意
二:
JNI 是 Java 本机接口 (Java Native Interface), 是一个本机编程接口, 它是 Java 软件开发工具箱(Java Software Development Kit,SDK) 的一部分 JNI 允许 Java 代码使用以其他语言编写的代码和代码库 Invocation API(JNI 的一部分)可以用来将 Java 虚拟机 (JVM) 嵌入到本机应用程序中, 从而允许程序员从本机代码内部调用 Java 代码
1. 将您的所有本地方法都封装到一个类中, 这个类调用单个的 DLL 对每一种目标操作系统平台, 都可以用特定于适当平台的版本的 DLL 这样可以将本地代码的影响减少到最小, 并有助于将以后所需要的移植问题考虑在内
2. 本地方法尽量简单尽量使您的本地方法对第三方 (包括 Microsoft) 运行时 DLL 的依赖减少到最小使您的本地方法尽量独立, 以将加载您的 DLL 和应用程序所需的开销减少到最小如果需要运行时 DLL, 必须随应用程序一起提供
JNI 的书写步骤如下:
a. 编写带有 native 声明的方法的 Java 类
b. 使用 javac 命令编译编写的 Java 类
c. 使用 java -jni **** 来生成后缀名为. h 的头文件
d. 使用其他语言 (CC++) 实现本地方法
e. 将本地方法编写的文件生成动态链接库
来源: http://www.bubuko.com/infodetail-2504510.html