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