微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
1999年 第18卷 第1期 Vol.18 No.1 1999



实时Java技术探讨
阎慧　丁长霞
　　摘　要：随着Java技术在实时系统领域中的应用，使实时Java技术应运而生，本文对实时Java技术的实现思想和基本模型以及实现中的关键技术等进行了探讨与分析。
　　关键词：Java技术　实时系统　Java虚拟机
　　实时Java技术是随着Java技术在实时系统中的应用应运而生的，由于Java技术本身的特点，使得能够支持实时应用的实时Java技术，不但能够简化实时软件的设计与开发，而且利于各种平台间的移植和维护，特别是在分布式实时WWW应用领域和传统实时应用领域都有着相当大的促进作用。
1　实时Java技术的基本思想
　　实时Java技术实现的基本思想，简单地说就是在保留一般Java技术特点的基础上，增加实时系统设计中的策略与机制，并有机地结合起来，以达到支持实时应用的目的。对已公布的Java版本，基本是不具备支持实时应用功能的，然而将Java与一些实时控制的实现技术有机结合起来，则可以达到一定程度的实时可靠性。例如：开发1个实时Java类库，提供实时应用软件的编程接口，并给出实时应用软件的实时限制与要求，同时要求Java虚拟机或Java OS提供对包含实时Java类的字节代码进行分析和判断，在解释执行过程中来保证应用系统的实时性能。
2　实时Java技术的实现模型
　　实时Java技术根据其适用的场合和实现技术的不同，存在着多种实现模型，一般有以下3种。
2.1　嵌入式实时Java平台
　　这种实现模型应用于家用电器、电子类消费产品、个人数字PDA助理等硬件上(见图1)。这是在硬件上直接构筑1个Java执行平台，并根据其应用需要和硬件支持设计相应的实时性能。由于这一模型的应用一般为某类产品专用，将来的发展是将它设计成Java芯片。

图1　嵌入式实时Java平台结构图
2.2　宿主操作系统上的实时Java平台
　　在1个宿主操作系统上构筑实时Java平台，将从几个层次来达到对实时任务的支持。这样的层次结构模型既利于实时支持环境的移植，又利于实时性能的提高，其结构如图2。

RT-Java应用程序
RT-Java API
实时
JVM实时任务
分析管理
调度类装载器JAVA类库
字节码验证器
解释器及时编译器
Java runtime系统
宿主操作系统

图2　宿主操作系统上的实时Java平台结构图
　　1.宿主操作系统层
　　宿主操作系统除了必须为Java平台提供多线程支持，内存分配与管理结构以及抽象图形用户界面的支持外，还要提供支持实时应用的实现机制，例如CPU资源预留机制、实时多线程机制等成熟的实时技术，以保证其上层的Java虚拟机能得到较强的实时性保证，这在一个多任务多用户的宿主操作系统环境下是极为重要的。
　　2.实时Java虚拟机层
　　这一层次是实时Java技术的核心部分。在这一层，虚拟机不但要完成对实时任务中的标准Java字节码进行装入、分析和解释执行，同时，要对实时任务中的实时性能予以分析和保证。因此，实时Java虚拟机除去标准Java虚拟机所具有的组成与功能外，还具有1个重要的组成部分和功能：实时任务分析、管理和调度。
　　这一模块的设计与实现是以传统的实时技术分析与利用为基础的。例如对实时任务的实时性分析模型、实时任务的实时性表示——最差情况下的执行时间估计，对各类实时任务的调度策略等。因此，在这一层次要解决的问题就是如何将传统的实时技术有机地结合在Java虚拟机设计中。
　　一般说来，应该包括如下的几个功能：
　　(1)对实时任务的实时性要求的分析。例如，从代码中分析出该实时任务的最差情况和最理想情况下的执行时间估计，或从该实时任务的性质来定义所具有的实时性要求。
　　(2)根据实时调度的需要，由实时性要求的分析结果，描述在保证此任务的实时需要情况下，该任务的实时调度指标：如最少和最理想的内存使用量，内存使用和释放速度，CPU调度参数(执行周期、每周期内的执行时间等)。
　　(3)根据实时任务的实时调度指标和当前系统的负载决定是否能满足该实时任务的运行预算需求。如满足则投入运行，否则给出替代的解决方法。
　　(4)在实时任务的执行过程中监控其实时性能，一旦执行时间超出预算，则进行相应处理，以保证其后续实时性能以及其它实时任务的正常运行。
　　3.实时Java API层次
　　这一层次主要给出实时应用软件使用Java的编程接口。实时开发人员可以方便地利用编程接口来设计与开发可移植的实时应用软件。
2.3　非宿主操作系统上的实时Java平台
　　实时Java OS提供1个独立的实时Java环境，使得在其平台上开发的应用程序不必依赖宿主操作系统是否存在或是否支持，其结构如图3。

RTJava应用程序
RTJava API
实时Java OSRTJava虚拟机
窗口、网络及设备驱动
RTJava runtime系统
RTJava OS核心
硬　　件

图3　非宿主操作系统上的实时Java平台结构图
　　建立在硬件基础上的实时Java OS在实时任务的支持上所采用的策略和机制与宿主操作系统中的情形基本相同，但这一模型有更明显的优势。由于减少了软件结构中的若干层，使其具有更快的速度和更少的平台依赖性，节省了空间。总之，这样的模型将更有利于实时系统的应用。
3　实时Java技术实现中的关键技术
　　实时Java技术在实现中涉及许多具体的技术，而如下的几种技术是比较关键的，因为它直接影响着实时Java技术的实时性、高效性和稳定性。在设计过程中，这几种关键技术是应重点解决的问题。
　　1.实时要求的表示与分析技术。在传统实时系统设计中，实时要求即时间约束条件的表示与分析是很难做到科学精确的。在实时Java技术中，需要借鉴传统的实时要求表示，提出更科学合理的表示，来精确预测实时任务的执行时间，并且在执行过程中得以正确高效的分析和实现。
　　2.内存管理技术，特别是Java中的垃圾收集技术。Java内置的垃圾收集功能可以排除“内存漏洞”的出现，极大地减轻程序人员的开发负担。但垃圾收集要占用机器时间，在应用程序高频率分析和释放内存时，垃圾收集要占用的时间可能比程序自身运行的时间还要多。因此，在实时Java中，要改进和优化垃圾收集技术，防止不确定的收集时机和不定长的收集时间严重影响实时性能。
　　3.互斥访问模型和线程同步问题。在Java中线程的同步，如不进行改进，则要占用应用程序大约20%的执行时间。此外，实时任务执行过程中的互斥访问要求，需要提供1个合理的互斥模型，以解决多个实时任务因互斥而互相阻塞，1个任务的超时占用导致一系列的任务的实时性所不能保障的问题。
　　4.网络实时性预算与保证技术。Java是基于网络的编程环境，实时任务往往要求网络的支持。但网络的传输速度和稳定性很难精确预测，因此，在实时Java中，如何对网络的实时性进行预测并保证预测实时性能的实现，是相当重要的技术。
　　5.实时Java的执行效率与实时性技术。Java的执行效率一直是Java技术着重解决的问题，例如即时编译技术的应用。在实时Java技术中，一方面，要提高Java本身的执行效率；另一方面，还需Java与实时技术有机结合，减少过多的层次调用，从整体上提高系统的合理高效性。
4　实时Java技术的发展现状与应用前景
　　随着Java技术的应用和普及，实时Java技术也得到了一定的发展。目前，国外已有公司和研究机构从事这方面的研究并有商业化的产品面市。如NewMonics公司的实时Java虚拟机，以及其他一些嵌入式实用Java OS都进入了一定的实用化阶段。但我国在这一领域的研究和开发工作还处于初级阶段。
　　由于实时Java技术所具有的优点，使它具有广泛的应用前景。具体来说有以下几个方面。
　　1.传统的实时应用领域：交通导航系统、空中交通控制、虚拟现实环境和部队防御系统等。
　　2.分布式的WWW实时应用：股票市场交易系统、视频游戏和电视会议等。
　　3.家用电子产品：Internet TV(电视机顶盒装置)、PDA、无线电话和智能卡等。
作者单位：怀柔国防科工委指挥技术学院(101416)
参考文献
　1　Kelvin N.Issues in the Design and Implementation of Real-Time Java.Iowa state University:Ames Iowa,1996
　2　Kelvin N.Java for Real-Time.Iowa state University:Ames IA,1996
　3　Madany P.Java OS:一个独立的Java环境.PC World China,1997;(2)
　4　廖春元.Java虚拟机技术探讨.微型机与应用，1998；(3)
　5　Sun Microsystems Inc.The Java Language Overview.CA：Sun Microsystems,Inc.1995
(收稿日期：1998-07-10)
