JNI基础解析

一、什么是 JNI

定义:Java Native Interface,即 Java本地接口
作用:使得Java 与 本地其他类型语言(如C、C++)交互
特别注意:
JNI是 Java 调用 Native 语言的一种特性
JNI 是属于 Java 的,与 Android 无直接关系

二、为什么要有 JNI

背景:实际使用中,Java 需要与 本地代码 进行交互
问题:因为 Java 具备跨平台的特点,所以Java 与 本地代码交互的能力非常弱
解决方案: 采用 JNI特性 增强 Java 与 本地代码交互的能力

三、实现步骤

在Java中声明Native方法(即需要调用的本地方法)
编译上述 Java源文件javac(得到 .class文件)
通过 javah 命令导出JNI的头文件(.h文件)
使用 Java需要交互的本地代码 实现在 Java中声明的Native方法
编译.so库文件
通过Java命令执行 Java程序,最终实现Java调用本地代码

四、交叉编译

1、交叉编译的概念
交叉编译即在一个平台,编译出另一个平台能够执行的二进制代码
主流平台有: Windows、 Mac os、 Linux
主流处理器: x86、 arm、 mips

2、交叉编译的原理
即在一个平台上,模拟其他平台的特性
编译的流程: 源代码-->编译-->链接-->可执行程序

3、交叉编译的工具链
多个工具的集合,一个工具使用完后接着调用下一个工具

4、常见的交叉编译工具
NDK(Native Development Kit): 开发JNI必备工具,就是模拟其他平台特性类编译代码的工具
CDT(C/C++ Development Tools): 是Eclipse开发C语言的一个插件,高亮显示C语言的语法
Cygwin: 一个Windows平台的Unix模拟器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • _ 声明: 对原文格式以及内容做了细微的修改和美化, 主要为了方便阅读和理解 _ 一. 基础 Java Nativ...
    元亨利贞o阅读 11,197评论 0 34
  • 注:原文地址 1. JNI 概念 1.1 概念 JNI 全称 Java Native Interface,Java...
    cfanr阅读 58,333评论 9 133
  • 原链接:http://www.ibm.com/developerworks/cn/java/j-jni/ 使用 J...
    王朋6阅读 12,474评论 0 8
  • 1.印象深刻的地方(1)王玺琪小组对第十四心理健康相关内容的讲解; (2)老师对情绪管理的讲述; (3)心理老师让...
    规拒k阅读 1,111评论 0 1
  • 爸爸最近总觉得胸闷,喘不上气来,说是着风了,憋的实在难受,我们找人住进了省x院。省x院是省里最好的治疗心脑血管疾病...
    总在成长阅读 3,430评论 10 4