当前位置: 首页 > news >正文

JNI概要

JNI

Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。Interface这个词在开发中比较常见,下图展示了Java Native Interface的作用。
在这里插入图片描述
在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。

  • 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的
  • 希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的
  • 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们
    JNI方法编译在.so文件中,程序运行需要时加载到相应的进程空间中。
    每一个用来实现JNI方法的so文件都应该定义有一个名称为“JNI_OnLoad”的函数。

JNIEnv结构体内有很多函数,还有个变量里边全是函数指针,所以通过这个结构体可以调用到很多的函数。定义在jni.h中。
使用dlopen将JNI so 库加载到内存,Java方法和Native方法有一个mapping table。

可以看看Android 源码_“frameworks/core/jni”_路径下的代码帮助理解,比如其中的AndroidRuntime.cpp。


JNI Spec


http://www.mrgr.cn/news/60500.html

相关文章:

  • 【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展
  • 正则表达式使用举例一(Python下)
  • CAS中的ABA问题
  • 六:Python学习笔记--基础知识(5)集合
  • 【单片机】深入剖析USART与UART的区别
  • 【C++】Map()函数
  • Flutter-Engine 的定制实践:Text 绘制流程浅析及自定义underline的间距
  • EasyExcel文件导入与导出
  • 手机号二要素核验 API 对接说明
  • Nature正刊!Peter Reich院士团队最新重磅成果!一项为期24年的控制实验!
  • 【香蕉成熟度数据集】香蕉新鲜腐烂识别检测 目标检测 机器视觉 (含数据集)
  • CubeMX中的RCC功能详解
  • 线性表(1)
  • 2024年13个热门AI工具:涵盖思维导图、对话助理、绘画提示、批量抠图、翻译、音乐生成、文案撰写等功能
  • 安卓早期apk兼容性适配之内存读写
  • 等长运动:健身新概念,轻松提升肌肉力量
  • 目前市场主流的不同室内定位效果对比
  • IO--多线程(条件变量)
  • 小白如何成为编程高手?
  • 云渲染怎么实现网络连接的方法?一文解析
  • ssm005基于SSM框架的购物商城系统的开发与实现(论文+源码)_kaic
  • 雷池社区版OPEN API使用教程
  • WebRTC VAD 详解与代码示例
  • 雷池社区版中升级雷池遇到问题
  • 【云原生】云原生与DevOps的结合:提升软件开发与交付的效率
  • nacos安装与配置