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)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 墨脱县| 泰州市| 漯河市| 绥江县| 宜阳县| 浦东新区| 平安县| 娄底市| 宜兰县| 闵行区| 田林县| 江达县| 财经| 兰州市| 四平市| 磴口县| 镶黄旗| 深泽县| 泾阳县| 临邑县| 通榆县| 兴义市| 安图县| 宜川县| 肥东县| 达尔| 贵定县| 定兴县| 开封县| 新乐市| 五莲县| 聂拉木县| 保德县| 青海省| 磐石市| 海门市| 瓦房店市| 含山县| 额济纳旗| 平原县| 大丰市|