Java 方法與本機方法有什麼區別?
本機方法是用其他語言(如 c++ 和 Java)實現其方法的方法。這些程式透過 JNI 或 JNA 介面與 Java 連結。
普通方法和本機方法的區別是本機方法宣告包含 native 關鍵字,而且,該方法的實現將是其他程式語言。
示例
Tester.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)); } }
Tester.c
#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
廣告