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)當中的。
對於上述的三種情況,如果沒有JNI的話,那就會變得異常棘手了。就算找到解決方案了,也是費時費力。其實說到底還是會增加開發和維護的成本。
對於JNI來說:其具體步驟如下:
1.先對Java檔案對應編譯 javac filename.java
filename.java檔案內容eg.
- class HelloWorld
- {
- private native void print();
- static
- {
- System.loadLibrary(“HelloWorld”);
- }
- public static void main(String[] args)
- {
- new HelloWorld().print();
- }
- }
2.生成對應的.h檔案 javah -jni filename此命令執行完後在目錄中會生成HelloWorld.h檔案,該檔案中國包含了一個函式java_HelloWorld_print的宣告。
3.將對應的.c或.cpp檔案製作成動態庫
cc -I/usr/lib/jvm/java-6-sun/include/linux -I/usr/lib/jvm/java-6-sun/include -fPIC -shared -o libHelloWorld.so HelloWorld.c
4.執行
java -Djava.library.path=`.` HelloWorld
本文轉自 驛落黃昏 51CTO部落格,原文連結:http://blog.51cto.com/yiluohuanghun/860269,如需轉載請自行聯絡原作者
相關文章
- jni和ndk詳解
- Cube 技術解讀 | Cube 小程式技術詳解
- Cube 技術解讀 | Cube 卡片技術棧詳解
- Java 本地介面 JNI 使用詳解Java
- SQL 注入技術詳解SQL
- oracle flashback技術詳解Oracle
- 防火牆技術詳解防火牆
- Service Mesh技術詳解
- 【詳解】JNI(Java Native Interface)(一)Java
- 【詳解】JNI (Java Native Interface) (二)Java
- 【詳解】JNI (Java Native Interface) (三)Java
- 【詳解】JNI (Java Native Interface) (四)Java
- Web除錯技術詳解Web除錯
- 詳解Vue.js 技術Vue.js
- web前端技術Mongoose詳解Web前端Go
- Java如何呼叫C語言程式,JNI技術JavaC語言
- PHP 面試詳解之技術篇PHP面試
- Flutter TextField詳解 | 掘金技術徵文Flutter
- 文字預處理技術詳解
- WiFi協議技術詳解概述WiFi協議
- FCKeditor使用方法技術詳解
- Java NIO 緩衝技術詳解Java
- 掌握ASP分頁技術詳解
- ProGuard程式碼混淆技術詳解
- Linux技術——lsof命令詳解Linux
- Linux技術——tcpdump命令詳解LinuxTCP
- Native開發與JNI機制詳解
- linux下JNI開發步驟詳解Linux
- CynosDB技術詳解——架構設計架構
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- Tomcat系列之Java技術詳解TomcatJava
- Linux技術——netstat命令詳解Linux
- Docker之Docker Compose技術詳解。Docker
- Java RMI技術詳解與案例分析Java
- 視訊技術詳解:RTMP H5 直播流技術解析H5
- Android Studio ndk-Jni開發詳解Android
- 從技術到工具再到落地,Pivotal多位技術專家詳解Greenplum
- 詳解TF雲原生技術路線圖