由于很多重要原因,Java 语言在实时系统中的应用非常有限。这些原因包括 Java 语言设计中固有的不确定性性能影响,例如动态类加载,以及 Java 运行时环境(Java Runtime Environment,JRE)本身的不确定性性能影响,例如垃圾收集器和本地代码编译。Real-time Specification for Java (RTSJ) 是一种开放的规范,它进一步增强了 Java 语言的开放性,使它能够用来构建实时系统。要实现 RTSJ 规范,要求具备操作系统、JRE 和 Java 类库(Java Class Library,JCL)的支持。本系列文章(共 5 个部分)深入研究了使用 Java 语言实现实时系统存在的挑战,并介绍了能够应对这些挑战的开发工具包和运行时环境。

系列文章

第 1 部分,使用 Java 语言编写实时系统 (2007 年 5 月 10 日)
本文描述了使用 Java 语言开发能够满足实时性能需求的系统的过程中遇到的主要挑战。全面概述了实时应用程序开发的意义,以及如何设计运行时系统以满足实时应用程序的需求。作者介绍了一个实现,该实现通过组合一些基于标准的技术解决了实时 Java 带来的挑战。
第 2 部分,比较编译技术 (2007 年 5 月 16 日)
本文考察了 Java 语言的本地代码编译所涉及的一些问题。单独使用动态(即时)编译或静态(提前)编译都不能满足所有 Java 应用程序的需求。作者在各种执行环境中对这两种编译技术进行了比较,对二者如何相互补充进行了展示。
第 3 部分,线程化和同步 (2007 年 5 月 24 日)
本文考察了 Java 实时规范(RTSJ)的实现必须支持的线程化和同步问题,您将了解到开发和部署实时应用程序时必须牢记的有关这两个方面的基本考虑。
第 4 部分,实时垃圾收集 (2007 年 6 月 4 日)
传统垃圾收集(GC)中的不确定性暂停使 Java 技术无法提供适合实时(RT)开发的环境。Metronome GC —— IBM WebSphere Real Time 的一部分 —— 提供了确定性的 GC 行为,如果与其他特性结合使用,就能使开发人员用 Java 语言编写硬 RT 应用程序。本文介绍了 Metronome 用于确定性 GC 的方法、开发 Metronome 的过程中涉及的技术问题,以及用于调优 GC 的工具和设备。
第 5 部分,编写和部署实时 Java 应用程序 (2007 年 7 月 11 日)
本文展示了如何使用 IBM WebSphere Real Time 附带的工具,编写和部署实时 Java 应用程序。作者利用示例应用程序,展示了用于控制垃圾收集暂停的 Metronome 垃圾收集器、用于避免运行时编译暂停的预编译器(Ahead-of-time compiler),以及用于满足最迫切的时间需求的 NoHeapRealtimeThread。
第 6 部分,简化实时 Java 开发 (2007 年 8 月 13 日)
由于实时 Java 虚拟机支持作用域内存,因此为作用域内存使用定义通用模式可以提高开发人员的生产力。这些模式通过降低作用域核心功能的复杂性,减少了了解和直接使用作用域的需求。本文是 实时 Java 系列文章 的第 6 篇(也是最后一篇),文中将引入 Lifecycle Memory Managed Periodic Worker Threads 模式作为简化实时 Java 开发的模型。通过一个示例实现和简单的示例应用程序论证了该模式的可行性。