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进行报告(回调),然后夫妻俩亲密无间共同去执行一项任务。
哈哈,便于记忆开个玩笑,枯燥的理论太难记忆啦....
然后,不多说,进入正题。
因为最近在研究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进行报告(回调),然后夫妻俩亲密无间共同去执行一项任务。
哈哈,便于记忆开个玩笑,枯燥的理论太难记忆啦....
相关文章推荐
- 如何的获得动态类的实例对象、调用其方法及InvocationHandler的运行原理
- 视频编解码原理及如何在VC6.0中运行JM8.6
- 一个程序在计算机中到底是如何运行的?
- 如何查看,当运行一个hibernate 方法后到底执行了哪些SQL语句
- 一个程序在计算机中到底是如何运行的?
- HDFS的运行原理,如何实现HDFS的高可用
- 如何在Hadoop集群运行JNI程序
- Demo:Hanoi塔问题到底是如何运行的?
- 深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
- php运行原理如何理解
- 如何不安装opencvManager运行opencv软件(不是那种简单的jni方式)
- 如何在Hadoop集群运行JNI程序
- PHP的运行原理 : 内幕:PHP是如何显示“你好世界”的?
- Cocos2d-x-3.6 用户交互原理---------如何通过JNI连接Java和C++
- 一个程序在计算机中到底是如何运行的?
- Node的定义、Node运行的基础、Node如何实现类似于多线程的原理
- java JNI 实现原理 (二) Linux 下如何 load JNILibrary
- 视频编解码原理及如何在VC6.0中运行JM8.6
- X Server的原理解析-后半部讲解了Linux下如何运行另一台Linux上的图形程序
- 手把手将你如何使用JNI分析其背后原理