您的位置:首页 > 其它

jni运行原理(在底层jni到底是如何运行的)

2016-11-24 14:52 176 查看
首先,这是讲的jni的运行原理,没有代码哦。代码好写,原理难懂,对于不懂原理寸步难行的我来说,一定要知其然也要知其所以然。

然后,不多说,进入正题。

因为最近在研究jni技术,一直没搞明白这个jni与Java的虚拟机之间到底有没有关系,运行原理是什么?与Java层进行通讯的原理是什么?查了一上午,终于知道是个什么东东了.先看下定义(这也是大部分网站都能搜到的定义,比较官方哈)。

JNI

JNI(Java Native Interface)是Java SDK 1.1时正式推出的,目的是为不同JVM实现间提供一个标准接口,从而使Java应用可以使用本地二进制共享库,扩充了原有JVM的能力,同时Java程序仍然无需再次编译就可以运行在其他平台上,即保持了平台独立性又能使用平台相关的本地共享库提升性能。

Java虚拟机

Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

在Java开发中的位置如图,



现在一一目了然了吧。如果还不好理解,我做了一个比喻:

Java层相当于一个中国人,JVM是一个翻译者,host是老外。c/c++也就是native也是一个老外,而jni就是一个眼神或者一个动作,就成了下图:



可以这样理解,本来国人与老外的沟通是通过翻译者来传递信息,可是有时候翻译者也力不从心呀,那就找个老外native吧,毕竟沟通起来无障碍啊。既然在一个应用程序中,那就让两者组成一个couple吧,培养心有灵犀哈哈。长此以往,两人就形成了默契动作jni,Java一个眼神或者皱一下眉,native立刻心领神会,乖乖去执行任务,执行完了再一个眼神jni进行报告(回调),然后夫妻俩亲密无间共同去执行一项任务。

哈哈,便于记忆开个玩笑,枯燥的理论太难记忆啦....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: