日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Native方法的使用

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 Native方法的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java不是完美的,Java的不足除了體現在運行速度上要比傳統的C++慢許多之外,Java無法直接訪問到操作系統底層(如系統硬件等),為此Java使用native方法來擴展Java程序的功能。


  可以將native方法比作Java程序同C程序的接口,其實現步驟:

  1、在Java中聲明native()方法,然后編譯;

  2、用javah產生一個.h文件;

  3、寫一個.cpp文件實現native導出方法,其中需要包含第二步產生的.h文件(注意其中又包含了JDK帶的jni.h文件);

  4、將第三步的.cpp文件編譯成動態鏈接庫文件;

  5、在Java中用System.loadLibrary()方法加載第四步產生的動態鏈接庫文件,這個native()方法就可以在Java中被訪問了。


  JAVA本地方法適用的情況

  1.為了使用底層的主機平臺的某個特性,而這個特性不能通過JAVA API訪問

  2.為了訪問一個老的系統或者使用一個已有的庫,而這個系統或這個庫不是用JAVA編寫的

  3.為了加快程序的性能,而將一段時間敏感的代碼作為本地方法實現。

  首先寫好JAVA文件

  package com.hode.hodeframework.modelupdate;

    public class CheckFile {

      public native void displayHelloWorld();

    static {
      System.loadLibrary("test");
    }

    public static void main(String[] args) {
     new CheckFile().displayHelloWorld();
   }
  }

  然后根據寫好的文件編譯成CLASS文件

  然后在classes或bin之類的class根目錄下執行javah -jni com.hode.hodeframework.modelupdate.CheckFile,

  就會在根目錄下得到一個com_hode_hodeframework_modelupdate_CheckFile.h的文件

  然后根據頭文件的內容編寫com_hode_hodeframework_modelupdate_CheckFile.c文件

  #include "CheckFile.h"

  #include

  #include

  JNIEXPORT void JNICALL Java_com_hode_hodeframework_modelupdate_CheckFile_displayHelloWorld(JNIEnv *env, jobject obj)

  {

  printf("Hello world!
");

  return;

  }

  之后編譯生成DLL文件如“test.dll”,名稱與System.loadLibrary("test")中的名稱一致

   vc的編譯方法:cl -I%java_home%include -I%java_home%includewin32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll

  最后在運行時加參數-Djava.library.path=[dll存放的路徑]

總結

以上是生活随笔為你收集整理的Native方法的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。