android系统是否包含JVM?

时间:2015-02-22 21:06:15

标签: java android jvm jit dalvik

我知道android系统包括Dalvik虚拟机(DVM) 但我不明白android系统是否也包含JVM 或者DVM是JVM的替代品? 感谢

2 个答案:

答案 0 :(得分:18)

  

程序通常用Java编写,并编译为Java虚拟机的字节码,然后转换为Dalvik字节码和   存储在.dex(Dalvik EXecutable)和.odex(Optimized Dalvik EXecutable)中   文件。

简而言之,程序被编译成JVM字节码,然后被解释为DVM字节码。 Dalvik不是运行已编译的Java代码,而是编译它,然后将该代码转换为它自己的代码。它在某种程度上取代了JVM。

  

另一个名为Android Runtime(ART)的运行时环境包含在Android 4.4" KitKat"作为技术预览。 ART完全取代了Dalvik在Android 5.0" Lollipop"。

ART,Android Runtime,取代了Android 5.0中的Dalvik。 ART仍然使用相同的.dex文件,但它们被转换为.elf(可执行文件和可链接格式)文件。这是JVM的另一个替代品,因为Java代码被编译成JVM字节码,然后被翻译成DVM字节码,然后被翻译成ELF文件并执行。

@Chris Thompson在Understanding disassembly of Dalvik code上解释DVM字节码非常出色。

资料来源:Wikipedia /朋友/经验

答案 1 :(得分:7)

  

但我不明白android系统是否包含JVM

没有

  

或者DVM是JVM的替代品?

Dalvik虚拟机用于执行编译为Dalvik字节码的Android应用程序。 Java虚拟机用于执行编译为Java字节码的Java应用程序。你是否认为一个人可以替代另一个人取决于你。