论文部分内容阅读
该文设计了一个基于ORP的J2ME虚拟机——ORPME(Open Runtime Platform Micro Edition)以及一个运作在ORPME之上的J2ME CLDC(Connected Limited Device Configuration)类库——ORL(Open Runtime Library),并对它们加以实现.该文首先讨论了J2ME和J2SE在虚拟机层面上的区别,并讨论了如何在现有的J2SE虚拟机ORP的基础上,设计并实现一个切实可用的J2ME虚拟机:ORPME.该文的工作主要包括如下两个方面:第一,由外到内的修改——修改ORP的外围接口和启动机制,增加支持J2ME类库的能力;第二,由内到外的改造——依照J2ME规范,对ORP的内核进行修改,包括对硬件平台支持的修改(如浮点支持),Java语言支持的修改(如线程、异常、反射等),安全机制的修改(包括类文件验证、类装载器机制和本地代码限制)以及GC初始内存池的修改.经过以上两方面的工作,虚拟机ORPME除了保留原虚拟机ORP的优点(如高性能、模块化)之外,还具备了一些新特性,例如低负载、支持J2ME等.作为虚拟机的必要补充,J2ME核心类库在J2ME性能研究以及虚拟机的功能测试和性能测试中都起到了不可或缺的作用.因此该文接着讨论了对J2MECLDC类库ORL的设计与实现,并归纳了一些提高ORL性能的经验(包括该地方法的编写使用,IO读写的高效实现,对象的节约创建等).此外,该文还对J2ME的即时编译JIT(Just-In-Time)算法、垃圾收集(Garbage Collection)算法和运行期校验器(Runtime Verifier)算法进行了讨论.针对JIT,我们深入分析了ORP的两种JIT编译器O1和O3的结构,由此得出适合于ORPME的JIT策略;针对垃圾收集,我们对ORP原有的几种垃圾收集算法进行了分析,在此基础上选择了一个适合于J2ME运行时环境的垃圾收集算法:改进的Mark-and-Sweep算法,并在ORPME上加以实现;针对运行期校验器,我们针对C编译器的特性,对ORPME的运行期校验器进行了框架结构方面的优化.基于上述工作,该文对虚拟机ORPME和类库ORL进行了全面的功能测试和性能测试.在功能测试方面,我们参照Mauve开发了一个针对J2ME CLDC类库的功能测试集TESTlet.它对类库ORL中所有的类方法进行功能测试,从而证明虚拟机ORPME功能上的完整性和方法上的正确性.在性能测试方面,我们利用了J2ME平台上的EEMBC(Embedded Microprocessor Benchmark Consortium)基准测试对ORPME和SUN公司J2ME虚拟机KVM,以及ORL类库和SUN公司的CLDC类库分别进行了性能评测,并分析比较了各自的测试结果.