JNI技術詳解

前段時間探究了點關於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.算法

 

 
  1. class HelloWorld  
  2. {  
  3.     private native void print();  
  4.     static   
  5.     {  
  6.         System.loadLibrary("HelloWorld");  
  7.     }  
  8.     public static void main(String[] args)  
  9.     {  
  10.         new HelloWorld().print();  
  11.     }  
  12. }  

2.生成對應的.h文件 javah -jni filename此命令執行完後在目錄中會生成HelloWorld.h文件,該文件中國包含了一個函數java_HelloWorld_print的聲明。函數

相關文章
相關標籤/搜索