奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

JAVA JNI函數的注冊過程介紹

時間:2024-09-16 15:08:09 java語言 我要投稿
  • 相關推薦

JAVA JNI函數的注冊過程介紹

  我們在java中調用Native code的時候,一般是通過JNI來實現的,我們只需要在java類中加載本地.so庫文件,并聲明native方法,然后在需要調用的地方調用即可,至于java中native方法的具體實現,全部交給了Native層。我們要在java中正確地調用到本地代碼中對應函數的前提是什么呢?答案就是通過一定的機制建立java中native方法和本地代碼中函數的一一對應關系,那么這種機制是什么呢?就是JNI函數的注冊機制。

  JNI函數的注冊有兩種方式,一種是靜態注冊方式,另一種是動態注冊方式。下面我們來分別介紹這兩實現方式。

  一.靜態注冊。

  1.實現原理:根據函數名來建立java方法和JNI函數間的一一對應關系。

  2.實現過程:

  ①編寫java代碼;

  ②編譯java代碼,生成.class文件;

  ③用過javah指令,利用生成的.class文件生成JNI的.h文件;

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

  3.弊端:

  ①書寫很不方便,因為JNI層函數的名字必須遵循特定的格式,且名字特別長;

  ②會導致程序員的工作量很大,因為必須為所有聲明了native函數的java類編寫JNI頭文件;

  ③程序運行效率低,因為初次調用native函數時需要根據根據函數名在JNI層中搜索對應的本地函數,然后建立對應關系,這個過程比較耗時。

  二.動態注冊。

  1.實現原理:直接告訴native函數其在JNI中對應函數的指針;

  2.實現過程:

  ①利用結構體JNINativeMethod保存Java Native函數和JNI函數的對應關系;

  ②在一個JNINativeMethod數組中保存所有native函數和JNI函數的對應關系;

  ③在Java中通過System.loadLibrary加載完JNI動態庫之后,調用JNI_OnLoad函數,開始動態注冊;

  ④JNI_OnLoad中會調用AndroidRuntime::registerNativeMethods函數進行函數注冊;

  ⑤AndroidRuntime::registerNativeMethods中最終調用jniRegisterNativeMethods完成注冊。

  3.優點:克服了靜態注冊的弊端。

【JAVA JNI函數的注冊過程介紹】相關文章:

java構造函數調用技巧10-26

java調用c函數的實例09-16

Java面向過程教程10-05

java構造函數實現代碼示例08-23

Java程序調用C/C++語言函數的方法07-31

wps常用函數介紹05-30

Java 循環結構介紹08-13

Java語言的優點介紹07-01

介紹Java array接口10-06

JAVA語言的介紹及發展10-06

主站蜘蛛池模板: 博爱县| 台州市| 锡林浩特市| 阳城县| 齐河县| 大竹县| 东光县| 大石桥市| 南漳县| 砚山县| 绥滨县| 陆河县| 井陉县| 株洲市| 乐平市| 望江县| 新巴尔虎左旗| 嘉禾县| 江油市| 怀化市| 舒城县| 三门峡市| 大渡口区| 黑龙江省| 麻城市| 富蕴县| 台北市| 开远市| 新建县| 伊宁市| 宁明县| 嘉定区| 布尔津县| 柳州市| 虹口区| 洛隆县| 凤翔县| 武夷山市| 海淀区| 宣恩县| 海林市|