国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java中非常有用的接口jni

2019-11-17 04:17:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

由于項(xiàng)目需要,才了解到這個(gè)接口,,覺(jué)得非常好,所以共享給大家,一塊學(xué)習(xí)下!我就少說(shuō)兩句,復(fù)制些專業(yè)人士的說(shuō)法了啊

 JNI  就是 java Native Interface  的縮寫,  是 Java 語(yǔ)言與其他類型語(yǔ)言交互的接口. 現(xiàn)在來(lái)看看什么時(shí)候會(huì)用到 jni 技術(shù)..
當(dāng)出現(xiàn)一些用java語(yǔ)言無(wú)法處理的任務(wù)時(shí),開發(fā)人員就可以利用JNI技術(shù)來(lái)完成。一般來(lái)說(shuō)下面幾種情況需要用到JNI技術(shù):
    一、 開發(fā)時(shí),需要調(diào)用java語(yǔ)言不支持的依賴于操作系統(tǒng)平臺(tái)的特性的一些功能。例如:需要調(diào)用當(dāng)前的Unix系統(tǒng)的某個(gè)功能,而java不支持這個(gè)功能,就需要用到JNI技術(shù)來(lái)實(shí)現(xiàn)。
    二、 開發(fā)時(shí),為了整合一些以前的非java語(yǔ)言開發(fā)的某些系統(tǒng)。例如,需要用到開發(fā)早期實(shí)現(xiàn)的一些C或C++語(yǔ)言開發(fā)的一些功能或系統(tǒng),將這些功能整合到當(dāng)前的系統(tǒng)或新的版本中。
    三、 開發(fā)時(shí),為了節(jié)省程序的運(yùn)行時(shí)間,必須采用一些低級(jí)或中級(jí)語(yǔ)言。例如為了創(chuàng)建一個(gè)省時(shí)的應(yīng)用,不得不采用匯編語(yǔ)言,然后采用java語(yǔ)言通過(guò)JNI技術(shù)調(diào)用這個(gè)低級(jí)語(yǔ)言的應(yīng)用。 

 

具體實(shí)現(xiàn),,我沒(méi)有VC++,所以也復(fù)制下高手的代碼了,呵呵,不過(guò)原理很清楚了

 

Java中使用JNI調(diào)用DLL
1 編寫范例文檔
public class TestNative{
  
  PRivate native int add(int x,int y);
  
  public static void main(String[] args) {
    TestNative hh = new TestNative();
    int r = hh.add(30,20);
    System.out.println("result = "+r);
  }

  static {
    System.loadLibrary("DLL_0305");
  }
}
其中
LoadLibrary中的DLL文件名稱可以隨便定.只要做好的動(dòng)態(tài)鏈接庫(kù)改名成這個(gè)字符串就可以了.而native函數(shù)的來(lái)源就是該動(dòng)態(tài)鏈接庫(kù).
2. 做好該步準(zhǔn)備以后,用javac TestNative.java生成.class.檢驗(yàn)語(yǔ)法.
3. 語(yǔ)法檢查通過(guò)以后,用javah TestNative生成.h的C頭文件.
4. 打開VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library .在向?qū)е羞x擇空工程.
5. 把剛才javah生成的那個(gè)頭文件加入工程 .然后 文件->;新建->;textFile 自己做一個(gè).c文件.實(shí)現(xiàn)自己的native函數(shù).清單如下:

#include<jni.h>;

JNIEXPORT jint JNICALL Java_TestNative_add
  (JNIEnv *ev, jobject obj, jint x, jint y)
{
return x+y;
}
備注:
A  其中的jni.h通常在 jdk/include/ 可以先拷貝到VC安裝目錄下的include目錄下.一勞永逸,以后可以方便使用JNI技術(shù).
B  全部的數(shù)據(jù)類型需要考慮Java和VC的接口問(wèn)題.用jint  jstring 等.
C  函數(shù)名稱和自動(dòng)生成的.h文件中規(guī)定的一致.命名規(guī)則是: Java_使用類_方法名 
6 全編譯一下工程.
  如果沒(méi)有出錯(cuò),則此時(shí)生成動(dòng)態(tài)鏈接庫(kù)成功.
  把動(dòng)態(tài)鏈接庫(kù)拷貝到TestNative.java所在的目錄上.
7 運(yùn)行java TestNative看結(jié)果吧.


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汕尾市| 汉阴县| 平阴县| 太和县| 南城县| 巴里| 方山县| 吐鲁番市| 水富县| 荥经县| 道真| 辽中县| 信宜市| 淮南市| 仪征市| 涞源县| 易门县| 天长市| 台东市| 梓潼县| 南城县| 邛崃市| 阿鲁科尔沁旗| 诸暨市| 松滋市| 合阳县| 满城县| 扎赉特旗| 沂南县| 荣昌县| 富蕴县| 日喀则市| 美姑县| 大化| 剑阁县| 佛坪县| 惠东县| 东乡县| 阜宁县| 社会| 错那县|