JNA與JNI

JNI的缺點:繁瑣

我們知道,使用JNI調用.dll/.so共享類庫是非常非常麻煩和痛苦的。

如果有一個現有的.dll/.so文件,如果使用JNI技術調用,我們首先需要另外使用C語言寫一個.dll/.so共享庫,使用SUN規定的數據結構替代C語言的數據結構,調用已有的  dll/so中公佈的函數。

然後再在Java中載入這個適配器dll/so,再編寫Java   native函數作爲dll中函數的代理。

經過2個繁瑣的步驟才能在Java中調用本地代碼。

因此,很少有Java程序員願意編寫調用dll/.so庫中的原生函數的java程序。這也使Java語言在客戶端上乏善可陳。可以說JNI是Java的一大弱點!
 

JNA優點:簡單

JNA(Java Native Access )提供一組Java工具類用於在運行期動態訪問系統本地庫(native library:如Window的dll,Android的so)而不需要編寫任何Native/JNI代碼。開發人員只要在一個Java接口中描述目標native library的函數與結構,JNA將自動實現Java接口到native function的映射。

在github上的傳送門---JNA


具體例子可以參見我的資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章