论文部分内容阅读
Java语言的面向对象、跨平台、语言级并发支持、安全等特性不仅使它在互联网领域得到广泛应用,也引起了嵌入式领域研究人员的高度重视,Sun公司希望能将Java语言改造成实时系统开发的主流语言来提高开发效率及增加系统安全性。
传统Java技术应用于实时系统的主要不足之处表现为:由于Java虚拟机是在运行中对引用到的类进行动态装载、解析和连接,影响了系统的实时性。垃圾收集器(GC)的自动运行导致了任务执行时间的不可预测性。另外,Java语言规范和Java虚拟机舰范讨论线程调度的地方非常笼统,导致在不同虚拟机实现中线程调度特性表现不一致。针对传统Java技术在实时方面的不足,Sun公司联合IBM、Microware等公司制定了实时Java规范(RTSJ),为实时Java平台的实现提供了参考。实时Java规范在内存管理、线程调度、异步事件处理、异步控制转移等多个影响实时性的方面进行了扩展,使得Java能够适用于实时系统。
论文主要的研究内容是如何用软件的方式改进传统的Java虚拟机,使其克服迟解析对实时的不利影响。为了找到实时线程所属的类型,论文提出了通过常量池检查出实时相关类型的策略。通过这些被检查出来的类型的权限定名就可以找到这些类型和方法从而提前处理它们。该策略的最大的优势在于不需要改变Java编译器,也不需要在RTSJ中添加其他的API,程序员只需要根据实时包书写传统的Java程序就可以支持实时任务,因为相关的处理都可以由Java虚拟机自动完成。
在找到这些需要提前处理的类型和方法后,论文描述了如何对他们进行提前的处理。主要过程足进行提前装载,连接和初始化相关类型和提前解析关键方法的字节码,这样实时线程在运行时就可以避免迟装载和迟解析带来的不利影响,虚拟机在运行程序时将获得已经解析好的字节码并且使用已经解析好的常量池入口。实验的结果证明了提前处理实时相关类型和提前解析关键字节码可以很好地改善程序运行的效率和可预测性。
最后,论文在关键的字节码上实现了Inline-Threading调度技术,证明了在提前解析的同时可以对关键字节码进行准备工作,从而使字节码可以运行在更有效率的执行引擎上,实验证明这将提高程序的运行效率。