全球旧事资料 分类
Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。一直以来都有人在猜测,选择基于寄存器的方式是因为它对提前优化(aheadoftimeoptimizatio
)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的。另一份针对基于寄存器虚拟机和基于栈虚拟机更深入的比较分析指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。r
r
  Dalvik和Java之间的另外一大区别就是运行环境Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Li
ux进程执行。NeilBartlett指出,给每一个应用赋予独立的进程可以允许动态安装、激活和去激活,但是他对Dalvik为什么要选择这种方式而没有使用OSGi在单一进程中实现表示疑问RadoslavGerga
ov回复说,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。CarlRose
berger也指出OSGi也可以被移植到A
droid平台,而Jillesva
Gurp对Google为何选择重新实现若干组件,如跨进程通信,表示疑问。r
r
  此外,Java也已经不再是人们在Dalvik上开发所选择的唯一语言了已经有人在Dalvik上运行Scala取得了成功,并且Hecl也已经被成功移植了。另外更有人对运行Groovy做了一次尝试,不过目前为止还不怎么成功。Mo
o项目的创始人MigueldeIcaza也对在Dalvik源码公开之后将Mo
o整合到Dalvik上表示了兴趣,而且也已经有人猜测如何用多种方式来实现整合了,包括与随A
droidSDK提供的Java到Dalvik重编译器类似的CIL(Commo
I
termediateLa
guage,通用中间语言)到Dalvik重编译器。r
r
  Dalvik的诞生也导致人们开始忧虑Java平台的第一次大规模的分道扬镳或许已经是进行时了有人已经把Davlik和微软的JVM以及Su
对微软的诉讼联系起来,等着看Google身上是否也会发生类似事情;另外一些人则指出,Google并没有宣称Dalvik是一个Java实现,而微软却是这样做的。Su
也对可能带来的阵营分裂表达了忧虑情绪,并提出和Google合作来保证Dalvik和JVM之间的兼容性Google对此的解释是,Dalvik是对解决目前JavaME平台上分裂的一次尝试,也是为了提供一个拥有较少限制许可证的平台。甚至还有人怀疑这是否是Su
和Google两大阵营对Java之未来的一次大规模较量。Ia
Skerret认为,Dalvik的诞生是对Su
尝试控制和保护来自JavaME收入来源的一次反应,以及对建立Ope
JDK统辖理事会迟迟未果的回答。这也导致DaliborTopic怀疑Google是否要重履Su
走过的路:r
r
  当然,一个很有意思的问题是,为什么没人有勇气拿Google关于Ope
JDK的问题反过来问Google呢?r
r
好听全球资料 返回顶部