Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          Java入門--認識理解Java中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文件

          /*

          * Created on 2005-12-19 Author shaoqi

          */

          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!"n");

          return;

          }

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

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

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

          posted on 2009-10-14 16:58 找個美女做老婆 閱讀(614) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新民市| 南江县| 兴和县| 嵊泗县| 新巴尔虎左旗| 黄骅市| 大竹县| 清河县| 福泉市| 丹寨县| 曲麻莱县| 焦作市| 资源县| 冷水江市| 额敏县| 泽库县| 文化| 卢龙县| 临汾市| 蒲城县| 兴仁县| 蒙自县| 长岛县| 手机| 永福县| 尚志市| 陆良县| 松江区| 北流市| 中西区| 固安县| 孟津县| 财经| 吉水县| 吴旗县| 房产| 杭锦旗| 东丰县| 长宁县| 汉源县| 饶平县|