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

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

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

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

我們?cè)趈ava中調(diào)用Native code的時(shí)候,一般是通過JNI來實(shí)現(xiàn)的,我們只需要在java類中加載本地.so庫文件,并聲明native方法,然后在需要調(diào)用的地方調(diào)用即可,至于java中native方法的具體實(shí)現(xiàn),全部交給了Native層。我們要在java中正確地調(diào)用到本地代碼中對(duì)應(yīng)函數(shù)的前提是什么呢?答案就是通過一定的機(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è)方式。下面我們來分別介紹這兩實(shí)現(xiàn)方式。

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

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

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

   ?、倬帉慾ava代碼;

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

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

   ?、苌珊蟮腏NI頭文件中包含了Java函數(shù)在JNI層的聲明;

  3.弊端:

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

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

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

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

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

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

    ①利用結(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中通過System.loadLibrary加載完JNI動(dòng)態(tài)庫之后,調(diào)用JNI_OnLoad函數(shù),開始動(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ù)庫操作詳解

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

    JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫操作,需要的朋友可以參考下
    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)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 空指針HttpSession異常之SpringBoot集成WebSocket的方法

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

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

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

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

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

    這篇文章主要介紹了Spring框架花式創(chuàng)建Bean的n種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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)目中主要包括添加依賴、配置數(shù)據(jù)源與 MyBatis、配置 PageHelper 以及在業(yè)務(wù)邏輯中使用 PageHelper 進(jì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類型是一種特殊的類,用于表示固定數(shù)量的常量值,本文主要介紹了Java自定義Enum的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Java中Jackson快速入門

    Java中Jackson快速入門

    這篇文章主要介紹了Java中Jackson快速入門,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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)換的工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

都安| 江永县| 喀什市| 会昌县| 化州市| 胶南市| 固始县| 嘉善县| 仙游县| 揭西县| 资中县| 绥宁县| 垣曲县| 永仁县| 苍溪县| 保康县| 鞍山市| 弥勒县| 古田县| 巴彦淖尔市| 闽侯县| 抚顺市| 铜川市| 奉节县| 乌拉特前旗| 曲水县| 新巴尔虎右旗| 巴彦县| 祁连县| 宜都市| 沧州市| 美姑县| 高阳县| 安吉县| 潮安县| 新源县| 方正县| 临湘市| 南川市| 西宁市| 沧源|