DVM是解释器还是编译器?为什么谷歌必须在已经存在JVM的情况下提出DVM? JVM不能用于移动平台吗?如果不是为什么不呢?
答案 0 :(得分:3)
DVM是翻译还是翻译 编译器?
有一个名为 dx 的工具可将您的java字节码转换为dex文件。因此,您使用java编译以创建Java字节码(类文件),并且dx工具将这些字节码转换为.dex文件(可执行文件)。
为什么谷歌必须提出 已经存在JVM的DVM?
Dalvik经过优化,可在移动设备或低内存要求的设备上运行。与JVM相比,Dalvik VM占用的空间更少。
一个重要因素是 LICENSE 。如果Google必须转到J2ME,那么该应用程序必须获得许可等,Google希望避免获得许可。
同样来自@leo's - Is Dalvik the better J2ME?的引用:
因为J2ME不是很强大 框架,你有一个 编程语言,但它取决于 供应商哪个功能他 喜欢整合,每一部手机 是不同的。这使得移植J2ME 一个真正的痛苦。
3)
JVM是否可以在移动设备中使用? 平台?如果不是为什么不呢?
目前,没有,因为它需要资源(在PC上可用)才能运行。此外,它是一个堆栈计算机,因此它使用“指令在堆栈上加载数据并操纵该数据,因此,需要比注册机器更多的指令来实现相同的高级代码”(source)。 / p>
我们可以期待未来的移动/便携设备能够具备运行JVM的处理能力,存储能力和安全功能,但就目前而言,Dalvik是王者! : - )
希望这有帮助。
答案 1 :(得分:1)
DVM =口译员wiki
Dalvik经过优化,具有不同的架构以支持Android功能。看看上面的wiki链接,你会得到一切的答案。 JVM可用于移动平台。事实上,J2ME基于JVM。
答案 2 :(得分:1)
DVM是翻译还是翻译 编译器?
鉴于2.2附带的Dalvik版本具有即时编译功能,答案是肯定的。
为什么谷歌必须提出 已经存在JVM的DVM?
JVM是否可以在移动设备中使用? 平台?如果不是为什么不呢?
当你说“JVM”时,我会假设你的意思是Sun的* JVM。它没有理由不能在移动平台中使用,而且它已经存在。 (“移动”是一个非常广泛的术语。)然而,在每个环境中,该特定实现并不理想,并且Java总是有许多方法来运行其字节码,从桌面上的VM到硅直接运行它。
究竟是什么推动了实施Dalvik的决定只是一个问题,只有编写它的人才能回答,尽管它可能归结为许可或有能力根据他们的喜好对其进行微调。但总的来说,Dalvik更紧凑的可执行格式(DEX)使其更适合于机载内存非常珍贵的环境,就像早期的Android设备一样。基于寄存器的实现还可以提供比Sun基于堆栈的JVM更好的计算性能和更低的功耗,适用于操作系统所针对的CPU类型。
*对不起,拉里,没有汤给你。