最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA JNI函數(shù)的注冊(cè)過(guò)程詳細(xì)介紹

 更新時(shí)間:2016年11月04日 11:48:29   投稿:lqh  
這篇文章主要介紹了JAVA JNI函數(shù)的注冊(cè)過(guò)程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

JAVA JNI函數(shù)的注冊(cè)過(guò)程詳細(xì)介紹

我們?cè)趈ava中調(diào)用Native code的時(shí)候,一般是通過(guò)JNI來(lái)實(shí)現(xiàn)的,我們只需要在java類(lèi)中加載本地.so庫(kù)文件,并聲明native方法,然后在需要調(diào)用的地方調(diào)用即可,至于java中native方法的具體實(shí)現(xiàn),全部交給了Native層。我們要在java中正確地調(diào)用到本地代碼中對(duì)應(yīng)函數(shù)的前提是什么呢?答案就是通過(guò)一定的機(jī)制建立java中native方法和本地代碼中函數(shù)的一一對(duì)應(yīng)關(guān)系,那么這種機(jī)制是什么呢?就是JNI函數(shù)的注冊(cè)機(jī)制。

  JNI函數(shù)的注冊(cè)有兩種方式,一種是靜態(tài)注冊(cè)方式,另一種是動(dòng)態(tài)注冊(cè)方式。下面我們來(lái)分別介紹這兩實(shí)現(xiàn)方式。

  一.靜態(tài)注冊(cè)。

  1.實(shí)現(xiàn)原理:根據(jù)函數(shù)名來(lái)建立java方法和JNI函數(shù)間的一一對(duì)應(yīng)關(guān)系。

  2.實(shí)現(xiàn)過(guò)程:

   ?、倬帉?xiě)java代碼;

   ?、诰幾gjava代碼,生成.class文件;

   ?、塾眠^(guò)javah指令,利用生成的.class文件生成JNI的.h文件;

    ④生成后的JNI頭文件中包含了Java函數(shù)在JNI層的聲明;

  3.弊端:

   ?、贂?shū)寫(xiě)很不方便,因?yàn)镴NI層函數(shù)的名字必須遵循特定的格式,且名字特別長(zhǎng);

   ?、跁?huì)導(dǎo)致程序員的工作量很大,因?yàn)楸仨殲樗新暶髁薾ative函數(shù)的java類(lèi)編寫(xiě)JNI頭文件;

    ③程序運(yùn)行效率低,因?yàn)槌醮握{(diào)用native函數(shù)時(shí)需要根據(jù)根據(jù)函數(shù)名在JNI層中搜索對(duì)應(yīng)的本地函數(shù),然后建立對(duì)應(yīng)關(guān)系,這個(gè)過(guò)程比較耗時(shí)。

  二.動(dòng)態(tài)注冊(cè)。

  1.實(shí)現(xiàn)原理:直接告訴native函數(shù)其在JNI中對(duì)應(yīng)函數(shù)的指針;

  2.實(shí)現(xiàn)過(guò)程:

    ①利用結(jié)構(gòu)體JNINativeMethod保存Java Native函數(shù)和JNI函數(shù)的對(duì)應(yīng)關(guān)系;

   ?、谠谝粋€(gè)JNINativeMethod數(shù)組中保存所有native函數(shù)和JNI函數(shù)的對(duì)應(yīng)關(guān)系;

   ?、墼贘ava中通過(guò)System.loadLibrary加載完JNI動(dòng)態(tài)庫(kù)之后,調(diào)用JNI_OnLoad函數(shù),開(kāi)始動(dòng)態(tài)注冊(cè);

   ?、躂NI_OnLoad中會(huì)調(diào)用AndroidRuntime::registerNativeMethods函數(shù)進(jìn)行函數(shù)注冊(cè);

   ?、軦ndroidRuntime::registerNativeMethods中最終調(diào)用jniRegisterNativeMethods完成注冊(cè)。

  3.優(yōu)點(diǎn):克服了靜態(tài)注冊(cè)的弊端。

       感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作詳解

    Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作詳解

    JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下
    2022-10-10
  • Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例

    Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例

    本文主要介紹了Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 空指針HttpSession異常之SpringBoot集成WebSocket的方法

    空指針HttpSession異常之SpringBoot集成WebSocket的方法

    文章介紹了在Spring?Boot中集成WebSocket時(shí)遇到的HttpSession為空的問(wèn)題,并探討了三種解決方法,方法一涉及域名配置,方法二通過(guò)監(jiān)聽(tīng)創(chuàng)建Session,而方法三是從request中獲取session并存入數(shù)據(jù),感興趣的朋友一起看看吧
    2025-01-01
  • springboot加載配值文件的實(shí)現(xiàn)步驟

    springboot加載配值文件的實(shí)現(xiàn)步驟

    本文主要介紹了springboot加載配值文件的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    這篇文章主要介紹了Spring框架花式創(chuàng)建Bean的n種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Spring Boot 項(xiàng)目中整合 MyBatis 和 PageHelper的基本步驟

    Spring Boot 項(xiàng)目中整合 MyBatis 和 PageHel

    這篇文章主要介紹了Spring Boot 項(xiàng)目中整合 MyBatis 和 PageHelper的操作步驟,整合 PageHelper 到 Spring Boot 項(xiàng)目中主要包括添加依賴(lài)、配置數(shù)據(jù)源與 MyBatis、配置 PageHelper 以及在業(yè)務(wù)邏輯中使用 PageHelper 進(jìn)行分頁(yè)查詢(xún),需要的朋友可以參考下
    2024-04-04
  • Springboot ApplicationRunner的使用解讀

    Springboot ApplicationRunner的使用解讀

    這篇文章主要介紹了Springboot ApplicationRunner的使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java自定義Enum的實(shí)現(xiàn)示例

    Java自定義Enum的實(shí)現(xiàn)示例

    Java中的自定義Enum類(lèi)型是一種特殊的類(lèi),用于表示固定數(shù)量的常量值,本文主要介紹了Java自定義Enum的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Java中Jackson快速入門(mén)

    Java中Jackson快速入門(mén)

    這篇文章主要介紹了Java中Jackson快速入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法

    java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法,分享一個(gè)文件編碼轉(zhuǎn)換的工具類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

红桥区| 洛南县| 宁陵县| 绥芬河市| 正定县| 秭归县| 东港市| 临泽县| 聂荣县| 密山市| 寿宁县| 察隅县| 绩溪县| 运城市| 香港| 商水县| 大埔县| 卓资县| 肥城市| 湾仔区| 南陵县| 安徽省| 灵川县| 睢宁县| 德令哈市| 普格县| 兴山县| 社旗县| 连江县| 福贡县| 台北市| 盐山县| 西丰县| 易门县| 武山县| 莆田市| 永胜县| 云南省| 禄丰县| 咸宁市| 鄢陵县|