我知道android系统包括Dalvik虚拟机(DVM) 但我不明白android系统是否也包含JVM 或者DVM是JVM的替代品? 感谢
答案 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应用程序。你是否认为一个人可以替代另一个人取决于你。