Android是否阉割ARM的Jazelle技术?

我所看到的理由是,我们应该说Android中的Java字节码“混蛋”就是性能。 (我怀疑还有另外一个原因。)但是,通过改变字节代码,他们没有使用Jazelle模拟等硬件加速技术,从而降低了Mobile Java平台的性能。

我知道目标平台是一个基于ARM的移动平台。 虽然它可能给你更好的性能在其他CPU架构似乎吐在面对ARM和Jazelle。

Java性能有什么样的量化效应?

它是否真的提高了性能,如果是这样的话?

对其他平台有什么影响? (即x86,mips,yadda,yadda,yadda …)

Solutions Collecting From Web of "Android是否阉割ARM的Jazelle技术?"

是的,Dalvik让Jazelle变得毫无用处。 唯一的问题是,Jazelle是有用的,还是90%的营销炒作? 一个好的JIT或者AOT(提前的)编译器往往比尝试使用专门的指令提供更好的性能。 Dalvik的基于寄存器的方法可能比传统的java字节码解释器更快,但是如果解释器和JIT之间的差别较小。 希望Android的下一个版本之一有一个JIT。

使用最先进的垃圾回收器和优化器来编写一个优秀的虚拟机需要5 – 10年的时间。 Sun(和微软)花了那么多年。 Google没有。 希望他们会继续投资,以便有一天Android Java代码不会比应该慢90%。

维基百科:Dalvik虚拟机 :

与大多数虚拟机和堆栈机器的真正的Java虚拟机不同,Dalvik VM是基于寄存器的架构。

针对低内存需求进行了优化,Dalvik具有一些与其他标准虚拟机不同的特性:

  • 虚拟机减less了占用空间。
  • Dalvik没有即时编译器。
  • 常量池已被修改为仅使用32位索引来简化解释器。
  • 它使用自己的字节码,而不是Java字节码。

此外,Dalvik的devise使设备可以高效地运行VM的多个实例。

编辑 :参见Wikipedia: 打开手机联盟 。 创始成员包括英特尔,摩托罗拉,高通和德州仪器。 ARM在一年后的2008年12月join。所以,我认为当这个目标是创buildiPhone / Blackberry开源竞争对手时,这些公司依靠非会员的专有技术是没有意义的。

我的印象是,Dalvik更希望空间效率高于执行效率。 另外从维基百科:

未压缩的 .dex文件通常比从相同的.class文件派生的压缩的 .jar(Java归档文件)小几个百分点。

虽然目前的手机可能会使用支持Jazelle的ARM,但这并不一定是正确的。

另外从维基百科(警告:传闻):

已发布的规范非常不完整,仅足以编写可支持使用Jazelle的JVM的操作系统代码。 声明的意图是只有JVM软件需要(或被允许)依赖于硬件接口细节。 这种紧密的绑定有利于硬件和JVM一起演变而不影响其他软件。 实际上,这使得ARM控制公司可以很好地控制哪些JVM能够利用Jazelle。 它还可以防止开源JVM使用Jazelle。

一旦他们添加了一个JITTER Dalvik,这将是一个有争议的问题。