本机方法是用其他语言(如c ++和Java)完成方法的方法。这些程序使用JNI或JNA接口链接到Java。
普通方法和本机方法之间的区别在于,本机方法声明包含本机关键字,并且该方法的实现将是其他编程语言。
public class Tester { public native int getValue(int i); public static void main(String[] args) { System.loadLibrary("Tester"); System.out.println(new Tester().getValue(2)); } }
#include <jni.h> #include "Tester.h" JNIEXPORT jint JNICALL Java_Tester_getValue( JNIEnv *env, jobject obj, jint i) { return i * i; }
javac Tester.java javah -jni Tester gcc -shared -fpic -o libTester.so -I${JAVA_HOME}/include \ -I${JAVA_HOME}/include/linux Tester.c java -Djava.library.path=. Tester
输出结果
4