我知道android系统包括Dalvik虚拟机( DVM ),但我不明白android系统是否也包含JVM,还是DVM是JVM的替代品?谢谢
发布于 2015-02-22 21:25:12
程序通常用Java编写并编译为Java虚拟机的字节码,然后将其转换为Dalvik字节码并存储在.dex (Dalvik EXecutable)和.odex (优化的Dalvik EXecutable)文件中。
简而言之,将程序编译为JVM字节码,然后将其解释为DVM字节码。Dalvik编译Java代码,然后将其转换为自己的代码,而不是运行编译后的Java代码。在某种程度上,它是JVM的替代品。
在Android4.4 "KitKat“中包含了一个称为Android (ART)的替代运行时环境,作为技术预览。在Android5.0 "Lollipop“中,ART完全取代了Dalvik。
Android运行时的ART在Android5.0中取代了Dalvik。ART仍然使用相同的.dex文件,但它们被转换为.elf(可执行和可链接格式)文件。这是JVM的另一个替代品,因为Java代码被编译成JVM字节码,然后转换为DVM字节码,然后转换成ELF文件并执行。
@Chris在理解Dalvik代码的反汇编上解释了DVM字节码,做得很好。
资料来源:维基百科 /之友/经验
发布于 2015-02-22 21:08:09
但我不明白android系统是否包括JVM
不是的。
或者DVM是JVM的替代品?
Dalvik虚拟机用于执行编译为Dalvik字节码的Android应用程序。Java虚拟机用于执行编译为Java字节码的Java应用程序。你是否认为其中一个是替代另一个取决于你。
https://stackoverflow.com/questions/28663243
复制相似问题