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

更新於:2019 年 7 月 30 日

544 人瀏覽

開啟您的 職業

完成課程即可獲得認證

開始
廣告