java - android dalvik vm 是 java vm 的副本还是单独的 vm

标签 java android

最近 oracle 和 google 之间的争论,我很好奇 dalvik 虚拟机是否真的是 java vm 的副本....google 说它是一种洁净室技术,不涉及 java vm.. 那为什么它使用java来生成字节码???

最佳答案

与直觉相反,Java VM 并不解释 Java。它解释编译器生成的 Java 字节码(来自 Java 源代码,或者可能来自某些其他语言)。字节码本身是根据 Java 的一般思想设计的,但它不一定是由 Java 生成的。同样,Java 编译的结果不一定是 Java 字节码。它可以是CPU的 native 指令,也可以是其他格式的字节码。

Dalvik 就是后者。

Dalvik VM 以自己的格式解释字节码。 Android SDK 附带一个 Java 编译器,可以读取 Java 源代码并生成 Dalvik 字节码。所以不,Java VM 不是。好吧,它是一个虚拟机,而且源代码的语言恰好是 Java。

关于java - android dalvik vm 是 java vm 的副本还是单独的 vm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8408842/

相关文章:

将 spring-boot 应用程序部署到 Cloud Foundry 时出现 java.lang.NoSuchMethodException

java - 我们可以在Java中使用可变长度参数来实现动态数组吗?

java - 类型不兼容,需要 java.lang.Integer[],找到 Int[]?

Java比较器的使用

将 Excel 日期数据保存到 MySQL 时,Java 日期格式化程序不起作用

安卓 GPS 分组

java - Gradle的播放服务非常慢:8.4.0

android - 单击按钮后更新 TextView?

java - xsd2java 工具?

android - 如何通过共享 Intent 共享整个 Android 应用程序