日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

JNI 程序設計與性能優化

系統 2044 0

1、基本概念
??? JNI是Java Native Interface(Java本地接口)的縮寫。所謂本地接口,是相對運行在Java虛擬機“沙箱”中的Java程序而言的,指直接運行在操作系統之上,與操作系統直接交互的程序。
??? JNI技術架構
???? 可以形象直觀地把JNI看做是Java和本地應用程序的黏合劑。
???????? JNI框架
??? 缺點:JNI犧牲了Java的平臺移植性、JNI提高了應用系統之間的耦合度。
??? 使用JNI調用本地程序接口的情況:
?????? -- 為了實現Java語言所不能實現的功能:例如關閉系統、獲取CPU繁忙程度等。
?????? -- 為了獲取更好的程序運行性能:和其他語言一樣,Java程序運行的性能很大程度上取決于程序代碼的編寫質量,但? 是在一些實時性要求高的應用場合,以“半編譯”形態出現的Java語言是難以勝任的,這時借助運行性能更佳的本地程序來完成這些關鍵任務更為合理。
?????? -- 為了保護歷史投資
2、調用C程序
??? 步驟:
??? (1) 編寫主調方的Java類。該類要聲明將調用的C函數,一方面載入本地的動態鏈接庫文件(即.dll文件)。
??? (2) 使用javac命令編譯Java類。

??? (3) 使用javah命令為C程序生成頭文件(即.h文件)。在自動生成的頭文件中將聲明有待實現的C函數。
??? (4) 編寫C程序。在C程序中實現頭文件中聲明的函數。
??? (5) 將C程序文件編譯成動態鏈接庫文件。

    public class HelloWorld {
 public native void displayHelloWorld();// 定義本地方法
 public native void displayMyName();// 定義本地方法
 /*
  * 調入本地庫,Java程序將在java.library.path參數所指向的路徑,以及PATH環境變量所指向的路徑中尋找并載入hello.dll文件。
  * 可以使用System.load()以絕對路徑的方式載入動態鏈接庫,
  * 例如:System.load("e:/somelibrary.dll")。在采用System.load()的情況下,不必設置環境變量和參數。
  */
 static {
  System.loadLibrary("hello");
 }
 public static void main(String[] args) {
  new HelloWorld().displayHelloWorld();
  new HelloWorld().displayMyName();
 }
}

  

??本地方法和接口方法:
????? Interface中聲明的只是方法的結構而已,可以認為是對方法做出的定義,Interface自身并不實現方法,更沒有能力提供方法;而native方法卻可以認為是Class自身提供的方法,只不過這種方法不是由自身來實現的,而是依靠本地動態鏈接庫輸出的函數。
????? 在Java中調用native方法和調用普通方法是完全相同的。
參考: http://book.csdn.net/bookfiles/606/10060619592.shtml

JNI 程序設計與性能優化


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 新龙县| 庐江县| 建瓯市| 锦屏县| 杭锦旗| 右玉县| 武义县| 宝山区| 始兴县| 蒙阴县| 武胜县| 彰武县| 西林县| 电白县| 孙吴县| 苍溪县| 高雄市| 汕头市| 永城市| 双柏县| 吴江市| 绥滨县| 京山县| 东莞市| 喀什市| 德兴市| 本溪| 泰来县| 施甸县| 和田县| 东台市| 阿鲁科尔沁旗| 清镇市| 寿光市| 固原市| 扎鲁特旗| 怀来县| 盘山县| 陵川县| 横峰县| 白水县|