一: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.使用其他语言(C、C++)实现本地方法
e.将本地方法编写的文件生成动态链接库
原文地址:https://www.cnblogs.com/huan-guo/p/8463132.html