Android是否阉割了ARM的Jazelle技术?

NoM*_*ots 32 java architecture android arm jazelle

我所看到的理由是,我们说Android中的"Bastardizing"Java字节码就是性能.(我怀疑还有另一个原因.)然而,通过更改字节码,他们没有像Jazelle那样制造硬件加速技术,从而降低了移动Java平台的可用性能?

我知道目标平台是基于ARM的移动平台,这似乎与我相反.虽然它可能会让你在其他CPU架构上获得更好的性能,但它似乎在ARM和Jazelle的面前唾弃.

它对Java性能有什么样的定量影响?

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

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

hac*_*ken 18

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

用最先进的垃圾收集器和优化器编写一个好的虚拟机大约需要5到10年的时间.Sun(和微软)已经度过了那些年.谷歌没有.希望他们会继续投资,以便有一天Android Java代码不会比它应该慢90%.

  • Jazelle表现良好(2-4倍于普通字节码),但它仍然比JIT慢2-4倍.如果您阅读了Sun HotSpot论文,您可以看到现代JIT可以通过进行代码流分析来实现优化(内联函数,消除虚拟调用开销,无需同步,避免对象分配......).Jazelle不能做任何一件事.Jazelles不错,但如果你可以选择386,486和核心2,我想要核心2. (4认同)
  • 我还没有看到很多比较Jazelle的好基准.我想缺乏信息说的不仅仅是我能找到它们的基准.那么Java的虚拟机不像硬件那样移植到软件上吗? (2认同)

Eug*_*ota 5

维基百科:Dalvik虚拟机:

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

Dalvik针对低内存要求进行了优化,具有一些与其他标准VM区别开来的特定特性:

  • VM被缩小以减少占用空间.
  • Dalvik没有及时编译器.
  • 已修改常量池以仅使用32位索引来简化解释器.
  • 它使用自己的字节码,而不是Java字节码.

此外,Dalvik的设计使设备可以有效地运行VM的多个实例.

编辑:参见维基百科:开放手机联盟.创始成员包括英特尔,摩托罗拉,高通和德州仪器.ARM于一年后于2008年12月加入.所以,我认为当这些公司的目标是创建开源iPhone/Blackberry竞争对手时,这些公司依靠非成员的专有技术是没有意义的.