JNI简介

什么是JNI

JNI(java native interface)java本地开发接口,本质上是一种协议,相当于桥梁的作用,通过jni就可以调用C/C++代码,当然也可以用C调用java的代码。

为什么要调用JNI

  • 通过jni技术,可以扩展android手机的功能,比如wifi热点比如NFC技术。
  • native coder执行高效,很明显c语言比java语言更节省内存:比如需要大量运算的游戏(极品飞车等等),万能的解码器,播放器,比如ffmpeg,OpenGl的3D渲染。
  • 代码的复用,有些很完善的工具库是用c写的,比如openCV,7-zip等。
  • 某些特殊的是用场景,比如车载软件系统。

怎么用JNI

  • 看懂c语言的代码
  • 使用android ndk

JNI与NDK的区别和联系

JNI是Java调用Native机制,是Java语言自己的特性全称为Java Native Interface,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.NET可以调用C/C++的API,所以说JNI和Android没有关系,在PC上开发Java的应用,如果运行在Windows平台使用JNI是是经常的,比如说读写Windows的注册表。 而NDK是Google公司推出的帮助Android开发者通过C/C++本地语言编写应用的开发包,包含了C/C++的头文件、库文件、说明文档和示例代码,我们可以理解为Windows Platform SDK一样,是纯C/C++编写的,但是Android并不支持纯C/C++编写的应用,同时NDK提供的库和函数功能很有限,仅仅处理些算法效率敏感的问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Keegan小钢

App架构经验总结(二)

原文链接:http://keeganlee.me/post/architecture/20160303 版权声明:本文刊载在《程序员》杂志2016年3期,版权归...

1213
来自专栏张善友的专栏

VSTS知识整理

原文:http://www.qddn.net/blogs/xumingxsh/archive/2006/01/19/4513.aspx 学习VSTS有一段时间,...

5295
来自专栏张善友的专栏

微软Enterprise Library 4.0将支持依赖注入

下一个微软Enterprise Library的版本——V4——将预置支持依赖注入。依赖注入将通过容器以独立或作为库的一部分来提供。 特别值得一提的是,下一个E...

19210
来自专栏iOS Developer

Biosn收集的Git常见的错误解决方式--转自Bison的技术博客

1402
来自专栏EAWorld

微服务的持续集成,四步“构建”一个代码世界

大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天...

3115
来自专栏吴生的专栏

水平分库分表的关键问题及解决思路

关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联...

44511
来自专栏JAVA高级架构

浅谈高并发解决方案

摘要: 高并发一直是然个人头疼的问题;然而,其解决方式则是一套组合策略,由整体入手,逐步分析,逐步解决部分问题,进而解决所有问题;就像一支庞大的输水管道,不断的...

3336
来自专栏bboysoul

让Lutris来管理你的游戏

Lutris是一个开源游戏平台,和steam一样你可以在上面安装,删除,配置,启动你的游戏,而且最关键的是Lutris自带了20多个模拟器。 下面是它的官网 ...

1033
来自专栏smartguys

(七):C++分布式实时应用框架 2.0

版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!

1453
来自专栏IT大咖说

经验分享 | 极光 iOS 平台上 SDK 架构演进及性能优化

1752

扫码关注云+社区