JAVA以其跨平台的特征深受人们喜欢,而又正因为它的跨平台的目标,使得它和当地机器的各类内部联络变得很少,约束了它的功用。处理JAVA对当地操做的一种办法就是JNI。
JAVA通过JNI挪用当地办法,而当地办法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。
通过挪用当地的库文件的内部办法,使JAVA能够实现和当地机器的密切联络,挪用系统级的各接口办法。
简单介绍及利用如下:
一、JAVA中所需要做的工做
在JAVA法式中,起首需要在类中声明所挪用的库名称,如下:
static {
System。
loadLibrary(“goodluck”);
在那里,库的扩展名字能够不消写出来,事实是DLL仍是SO,由系统本身揣度。
还需对将要挪用的办法做当地声明,关键字为native。且只需要声明,而不需要详细实现。如下:
public native static void set(int i);
public native static int get();
然后编译该JAVA法式文件,生成CLASS,再用JAVAH号令,JNI就会生成C/C++的头文件。
例如法式testdll。java,内容为:
public class testdll
static
System。loadLibrary("goodluck");
public native static int get();
public native static void set(int i);
public static void main(String[] args)
testdll test = new testdll();
test。
set
(10);
System。out。println(test。get());
用javac testdll。java编译它,会生成testdll。class。
再用javah testdll,则会在当前目次下生成testdll。
h文件,那个文件需要被C/C++法式挪用来生成所需的库文件。