DVM是解释器还是编译器?

时间:2011-04-09 21:34:01

标签: java android

DVM是解释器还是编译器?为什么谷歌必须在已经存在JVM的情况下提出DVM? JVM不能用于移动平台吗?如果不是为什么不呢?

3 个答案:

答案 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类型。

*对不起,拉里,没有汤给你。

相关问题