» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] 安卓虚拟机是什么意思?

posted by wap, platform: iPhone
好像是因为安卓基于Java虚拟机。


TOP

posted by wap, platform: iPhone
槽点很多嗯。

ART本质上仍然是一个Java虚拟机。它所支持的Dalvik指令集跟之前Dalvik VM所支持的一样,而该指令集是JVM指令集的一种机械映射,两个指令集之间高度对应。

ART当然还支持JNI。它对JNI的支持主要在源码的runtime/jni_*文件里实现,例如 runtime/jni_internal.cc。

ART虽然主要通过AOT编译支持Java的运行,但仍然带有解释器。
ART会自动选择一部分Java方法使用AOT编译的方式,在程序执行前就编译生成好相应的机器码,到真的运行时只需要执行那些机器码即可;但是没有被选上做AOT编译的Java方法则仍然需要由解释器来执行。
解释器的实现在 runtime/interpreter。最近还多了个用汇编写的优化版解释器,在 runtime/interpreter/mterp ,本质上就是把Dalvik VM的汇编写的解释器移植到了ART上。
另外ART其实从一开始就有计划支持JIT编译,只是最初发布的时候还没做到这块。现在的代码已经开始有一些初步实现了,其接口代码在 compiler/jit 。

至于ART上能不能用Java以外的编程语言,基本上原本Dalvik支持什么ART就支持什么——不想要Java的话其它JVM语言许多都能行,Groovy、Clojure、Scala啥的嗯。



TOP

posted by wap, platform: iPhone
安卓从其诞生起就赋予了虚拟机的伟大基因,与生俱来的东西怎么可能丢弃?个别安卓爱好者可不要数典忘祖啊。


TOP

发新话题
     
官方公众号及微博