前段時間探究了點關於JNI技術方面的東西,在網上找,發現關於這方面的東西不多
基本上也是找不到,因此就決定寫下來,作個筆記:
JNI:
JNI是Java Native Interface的縮寫,中文爲JAVA本地調用。從Java1.1開始,Java Native Interface(JNI)標準成爲java平臺的一部分,它容許Java代碼和其餘語言寫的代碼進行交互。JNI一開始是爲了本地已編譯語言,尤爲是C和C++而設計的,
可是它並不妨礙你使用其餘語言,只要調用約定受支持就能夠了。
咱們知道Java是一種平臺無關性的語言,平臺對於上層的java代碼來講是透明的,因此在多數時間咱們是不須要JNI的
但在下面這幾種狀況下你可能會用到JNI技術:
1.你的Java代碼,須要獲得一個文件的屬性。可是你找遍了JDK幫助文檔也找不到相關的API。
2.在本地還有一個別的系統,不過他不是Java語言實現的,這個時候你的老闆要求你把兩套系統整合到一塊兒。
3.你的Java代碼中須要用到某種算法,不過算法是用C實現並封裝在動態連接庫文件(DLL)當中的。html
對於上述的三種狀況,若是沒有JNI的話,那就會變得異常棘手了。就算找到解決方案了,也是費時費力。其實說到底仍是會增長開發和維護的成本。java
我有幾張阿里雲幸運券分享給你,用券購買或者升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,立刻就要搶光了。
對於JNI來講:其具體步驟以下:
1.先對Java文件對應編譯 javac filename.java
filename.java文件內容eg.算法
2.生成對應的.h文件 javah -jni filename此命令執行完後在目錄中會生成HelloWorld.h文件,該文件中國包含了一個函數java_HelloWorld_print的聲明。函數