原创 嵌入式Java虚拟机优化技术

2007-12-25 20:41 2279 4 4 分类: MCU/ 嵌入式
无线手持设备市场对Java产生了巨大的需求增长,目前每10台新出手机中就有8台支持Java。本文关注嵌入式设备Java平台的性能问题,详细介绍振戎融通自主研发的Java虚拟机产品——JMO+(JMOplus)的性能优化技术。

在过去的几年里,Java已经在各个领域得到了广泛的应用,尤其是无线移动领域,全球180多个移动运营商已经推出了Java下载服务。无线手持设备市场对Java产生了巨大的需求增长,目前每10台新出手机中就有8台支持Java。广大的消费者,运营商,服务/内容提供商以及手机制造商强烈渴望手机的Java性能更加强劲,支持更多更复杂的应用,为产业链各方带来更多商机和收入,为用户带来更丰富多彩的增值应用。

北京振戎融通通信技术有限公司(以下简称振戎融通)一直致力于嵌入式Java技术的研究、开发和推广,立志通过对国际先进技术的引进、掌握和创新,迅速实现专有技术的国产化,最终拥有整套先进技术产品的自主知识产权。本文着重关注嵌入式设备Java平台的性能问题,详细介绍振戎融通自主研发的Java虚拟机产品——JMO+(JMOplus)的性能优化技术。

Java功能和性能支持

嵌入式Java经过几年的蓬勃发展,所支持的应用越来越丰富,功能也越来越强大,诸如3D游戏、多人联网等更高级的支持也已纷纷涌现。运营商和手机制造商希望出现更具可玩性的游戏,并期望充分利用Java技术发展诸如商务、定位、视频等各种各样的增值服务,以期带来更多收入。

为了支持这些新的业务,Java虚拟机必须不断集成新的API。因此, JCP(Java Community Process)这一业界唯一的Java标准化机构不断制定、发布相应功能的技术标准。2004年振戎融通公司正式成为JCP成员,并且是几个重要JSR标准的专家组成员,参与这些标准的制定工作。振戎融通JMO+产品最为广泛的支持了现在比较流行和通用的JSR标准,并根据市场的需求和客户的需要提供一些扩展功能的支持,在功能上能够提供给一个功能强大的移动Java运行平台,能够让用户感受到JAVA的丰富多彩,可以说JMO+产品在功能支持方面处于行业的领先地位。

北京振戎融通通信技术有限公司针对市场的需求,在JMO+性能方面运用了多种技术进行优化,针对不同的硬件平台采用不同的优化技术,以提供最优的性能体验。

Java虚拟机的性能瓶颈

Java是一种解释执行的语言,它的优势是“一次编译,到处运行”,因此Java具有很好的可移植性,开发和发布Java应用都很便捷,快速上市,节约成本;另外一个优势是Java字节码代码密度高,程序体积较小,便于进行下载,和装入资源有限的嵌入式设备中。这种优势是明显的,但对于嵌入式Java来说,由于其机制而带来了不可避免的性能瓶颈。业界针对这个性能瓶颈都在寻找各自不同的解决之道,振戎融通在这方面也进行深入的研究,在解决这个性能瓶颈的方面取得了不菲的成绩,性能解决方案处于业界领先地位。

Java性能优化方案

加快Java执行速度的方法包括几种软件方案,如字节码解释器优化、即时编译器、预先编译器、动态自适应编译(DAC)等。这些方法都能在一定程度上提高Java的性能,但同时也会带来一些负面影响,比如这些软件方案通常会增加对功耗、内存的需求,或是延长启动时间以致系统存在停顿感等现象。

硬件的解决方案有专用Java处理器和Java协处理器,以及ARM推出的Jazelle DBX硬件指令集。这些方案在解决Java的效率方面的确发挥了重要作用,并有可能是今后的一个发展方向,特别是Jazelle技术。但是,硬件的解决方案将增加硬件成本和嵌入式设备系统的设计成本,并降低灵活性,这是设备制造商不愿意接受。因此,硬件的解决方案可以用于高端市场,但对成本敏感的中低端市场来说,该方案存在成本压力。

JIT和AOT编译器

JIT或AOT编译器是把字节码动态地编译成目标平台的本地码,然后直接执行。顾名思义,AOT编译方案就是在应用下载完后编译所有代码,而实际上,某些代码很有可能根本就执行不到。JIT编译方案则是在运行到某段代码之前,才对这一段代码作即时编译。这种即时处理策略会让用户在选择启动应用程序后,需要等待很长一段时间,程序才真正运行起来。另外,有研究显示,动态编译会导致代码大小增大4~6倍。因此,除了降低应用程序的启动速度外,无论JIT还是AOT方案,都需要很大的额外内存来保存编译生成的本地码。

DAC动态自适应编译

动态自适应编译(DAC)是一种弥补JIT编译器缺点的方法。它采用通常被称为的混合软件方案,可以被看成是JIT编译器和字节码解释器的组合。在开始阶段,程序解释器开始执行,同时软件对代码进行分析并决定哪些关键代码需要被编译,这些关键代码被鉴别出来后,即被编译成本地码运行。

Jazelle DBX技术

Jazelle DBX是一种硬件架构扩展技术,为ARM处理器引入了第三套指令集—Java字节码。新指令集建立了一种新的状态,处理器在此状态下处理Java字节码取指、译码和维护Java操作数栈。 这种硬件架构扩展技术,重用已有的处理器资源不会增加额外的硬件成本和功耗,带扩展的内核能够同时执行Java字节码及本地码,开发者可以充分利用已有的操作系统、应用程序开发技术,在Java程序可移植性和性能之间取得很好的平衡。

JMOplus的性能优化方案

振戎融通在解决性能优化问题时,深入的分析了目前的软件和硬件的解决方案,总结其中的优势和弊端,综合运用了这些优化方法,并进行了相应的改进。

每一种优化方法都有其存在的道理,针对某种情况的优化效果是最好的,但在某种情况下,其弊端表现的又十分的明显,我们经过了大量的实际测试数据,将各种性能优化方案有机的结合在一起,让他们共同发挥作用,即解决了性能的优化,又在相当的程度上避免因为引入优化算法而带来的负面影响。

比如采用AOT和DAC的结合方案,通过大量的应用测试数据统计分析,找出调用频度最高的Java API进行AOT,这样即得到了AOT的快速执行,又最大限度的控制了因为AOT而带来的体积膨胀,优化DAC的选择算法,使得Java虚拟机避免陷入盲目的编译过程,制定DAC的执行时机,在应用启动时,关闭DAC功能,这样不会因为DAC的编译而让用户忍受漫长的应用启动阶段。

根据不同的终端,动态的调整AOT和DAC的搭配比例,比如,在RAM相对ROM空间需求宽松时,将DAC的比例提高;在ROM相对RAM空间需求相对宽松时,将AOT的比例提高。

在支持Jazelle指令集的情况下,加入Jazelle加速技术,并调整AOT和DAC的相关参数,将Jazelle支持的Java指令,并不进行AOT和DAC的优化,而直接由芯片直接执行,这样即增加了效率而且节省了功耗。

还进行市场的进一步细分,比如针对游戏市场,定位市场,商务市场等,每个细分市场,其运行的Java应用都会有所侧重,进而其使用和调用的Java API的频度分布也是不同的,根据调用频度的分布,调节AOT和DAC在不同市场的优化方案会更加有效。

振戎融通不仅拥有了先进的性能优化技术,并且更深入的挖掘优化的细节,使得JMO+产品在业界处于领先的地位。经过业界权威测试工具测试比较表明,JMO+在功能、性能和质量上已经达到了国际先进水平。目前JMO+已经获得摩托罗拉、三星、LG、SKTT、TCL、UT等国内外主流手机厂商采用,已经有近20款、100万台手机采用,成功取得了规模化商用。

作者:孙京毅,JAVA VM研发中心产品管理部经理,北京振戎融通通信技术有限公司

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条