您的位置:首页 > 编程语言 > Java开发

JNI - Java Native Interface

2009-11-30 22:32 447 查看
JavaTM Native Interface (JNI) is a standard programming interface for writing Java native methods and embedding the JavaTM virtual machine* into native applications. The primary goal is binary compatibility of native method libraries across all Java virtual machine implementations on a given platform.

以下内容收集自互联网,在Java的文档里也有关于JNI的详细说明
Microsoft Windows XP Professional Version 2002 Service Pack 3
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
Microsoft Visual C++ 6.0
1 编写Java代码
public class Hello
{
    static
    {
        System.loadLibrary("hello"); // 加载后面要生成的dll
    }
    
    public native void sayHello(); // native方法不需要实现
    
    public static void main(String[] args)
    {
        new Hello().sayHello();
    }
}

2 编译Java代码:javac Hello.java

3 生成头文件:javah Hello
生成的头文件里有一个函数原型:
JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *, jobject);
这个函数就对应前面Java代码中的sayHello方法

4 实现函数
#include "jni.h"
JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *env, jobject obj)
{
    printf("Hello, JNI!/n");
}
将这段代码保存,例如保存为Hello.c 
必须引用jni.h,这个文件在jdk里面,例如D:/jdk1.6/include里

5 生成dll
运行VC的Bin目录下的文件VCVARS32.BAT,将VC加入环境变量。运行命令
cl -I D:/jdk1.6/include -I D:/jdk1.6/include/win32 -LD Hello.c -Fehello.dll
-Fe之后的hello.dll就是Java代码System.loadLibrary("hello")要载入的dll

6 运行Java代码:java Hello
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息