JNI基礎(chǔ)解析

一、什么是 JNI

定義:Java Native Interface,即 Java本地接口
作用:使得Java 與 本地其他類型語(yǔ)言(如C、C++)交互
特別注意:
JNI是 Java 調(diào)用 Native 語(yǔ)言的一種特性
JNI 是屬于 Java 的,與 Android 無(wú)直接關(guān)系

二、為什么要有 JNI

背景:實(shí)際使用中,Java 需要與 本地代碼 進(jìn)行交互
問題:因?yàn)?Java 具備跨平臺(tái)的特點(diǎn),所以Java 與 本地代碼交互的能力非常弱
解決方案: 采用 JNI特性 增強(qiáng) Java 與 本地代碼交互的能力

三、實(shí)現(xiàn)步驟

在Java中聲明Native方法(即需要調(diào)用的本地方法)
編譯上述 Java源文件javac(得到 .class文件)
通過(guò) javah 命令導(dǎo)出JNI的頭文件(.h文件)
使用 Java需要交互的本地代碼 實(shí)現(xiàn)在 Java中聲明的Native方法
編譯.so庫(kù)文件
通過(guò)Java命令執(zhí)行 Java程序,最終實(shí)現(xiàn)Java調(diào)用本地代碼

四、交叉編譯

1、交叉編譯的概念
交叉編譯即在一個(gè)平臺(tái),編譯出另一個(gè)平臺(tái)能夠執(zhí)行的二進(jìn)制代碼
主流平臺(tái)有: Windows、 Mac os、 Linux
主流處理器: x86、 arm、 mips

2、交叉編譯的原理
即在一個(gè)平臺(tái)上,模擬其他平臺(tái)的特性
編譯的流程: 源代碼-->編譯-->鏈接-->可執(zhí)行程序

3、交叉編譯的工具鏈
多個(gè)工具的集合,一個(gè)工具使用完后接著調(diào)用下一個(gè)工具

4、常見的交叉編譯工具
NDK(Native Development Kit): 開發(fā)JNI必備工具,就是模擬其他平臺(tái)特性類編譯代碼的工具
CDT(C/C++ Development Tools): 是Eclipse開發(fā)C語(yǔ)言的一個(gè)插件,高亮顯示C語(yǔ)言的語(yǔ)法
Cygwin: 一個(gè)Windows平臺(tái)的Unix模擬器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • _ 聲明: 對(duì)原文格式以及內(nèi)容做了細(xì)微的修改和美化, 主要為了方便閱讀和理解 _ 一. 基礎(chǔ) Java Nativ...
    元亨利貞o閱讀 6,088評(píng)論 0 34
  • 注:原文地址 1. JNI 概念 1.1 概念 JNI 全稱 Java Native Interface,Java...
    cfanr閱讀 58,507評(píng)論 9 133
  • 原鏈接:http://www.ibm.com/developerworks/cn/java/j-jni/ 使用 J...
    王朋6閱讀 8,218評(píng)論 0 8
  • 1.印象深刻的地方(1)王璽琪小組對(duì)第十四心理健康相關(guān)內(nèi)容的講解; (2)老師對(duì)情緒管理的講述; (3)心理老師讓...
    規(guī)拒k閱讀 183評(píng)論 0 1
  • 爸爸最近總覺得胸悶,喘不上氣來(lái),說(shuō)是著風(fēng)了,憋的實(shí)在難受,我們找人住進(jìn)了省x院。省x院是省里最好的治療心腦血管疾病...
    總在成長(zhǎng)閱讀 593評(píng)論 10 4

友情鏈接更多精彩內(nèi)容