近几年来,由Aonix、Aicas和Apogee Software这些较小公司开发的实时版Java一直都在努力争夺市场份额。目前,诸如太阳微系统公司和IBM公司这样的大企业也瞄准了实时Java市场,开始进入相关技术领域,它们经常与军事-航空领域的大客户合作。
迄今为止,实时Java往往还是“软”实时。正如Aneas公司战略联盟总监Anders Flodin说的那样,“Java短期内不会用于有航天飞机的项目中,因为这仍然存在很大风险。”
在机器人和工业控制、光纤光电开关、遥感设备和机顶盒的应用中,Java正开始蚕食传统上由C语言代码主导的市场。“虽然在它是否实时这一点上颇有争议,但Java在嵌入式领域所占的百分比每年都有些许增长。”市场研究公司Venture Development的资深分析师Steve Balacco说,“根据我的理解,军方是实时Java最早的采用者之一。”
早在2005年初,Venture Development公司就调查了大约500名嵌入式应用开发人员,而当时只有9%的受调查者表示他们从事的项目涉及Java虚拟机器(JVM),这部分人中又有46%表示他们的研究涉及实时性方面。
在一些军事项目中,例如美国海军DDX战舰或五角大楼计划创建一个网络化战场,把士兵与指挥官连接在一起,Java就可以在这个实时应用中发挥一定作用。数据必须被采集和传送,而且决策必须得到迅速的交流。“军事项目涉及的是‘由多个系统组成的系统’,它们要彼此互连,其中部分系统还是实时的。”Balacco说。
实时Java项目不断增长
Aonix公司的首席技术官Kelvin Nilsen认为实时Java从总体上看是在茁壮成长。“Aonix大约一半的新业务来自军方,”他说,“在军事领域的无人驾驶飞机和其它新部署的系统中,实时Java都有着强劲增长的势头。另外在远程信息系统领域,包括商业应用和军事应用,实时Java也表现活跃。”
Nilsen说:“军方的目标为是每位战士配备一个背包,充分利用可用带宽,提高安全和数字通信能力,有效地利用各种数据。Java提供了一条使这些功能实现自动化的更快捷路径。”
“军方合同商使用Java是公开的秘密,他们正在研究实时Java。”Objective接口系统公司的销售和行销副总裁Joe Jacobs说,“尚不清楚他们在系统内部使用了哪些Java工具。但目前Java一直用于这些系统的非核心方面,不用于涡轮控制,也不用于航空电子设备。”
|
图:存储器方面的改进提高了Java的预测能力,但需要更多的分析以达到硬实时目标。 |
Java市场曾经在2004年6月出现一次飞跃。当时在Sun公司的JavaOne大会上,该公司针对其Project Mackinac项目推出了名为Sun Java实时系统(RTSJ)的商业化产品。
Greg Bollella是Sun公司一位杰出的工程师,他曾在IBM从事过实时Java的研究,后来一直领导着Sun公司的实时Java项目。Bollella透漏Sun公司Java RTS的首次实现是基于Solaris 10操作系统,对于基于Sparc的双处理器工作站,它的延迟在10到20微秒之间。单处理器的系统响应时间要更慢些,具体数值取决于设备驱动器的数量和类型、PCI插槽占用数目和其它一些因素。
当被问及Sun公司会支持哪些处理器时,Bollella提到了X86或PowerPC平台。“在公司内部,第一个问题就是热门的JVM是否可移植到某种操作系统和硬件组合。”他说,随后又补充道,某些32位组合已经被移植。Sun公司计划支持一系列开发平台,它们有多种的硬件尺寸和不同的“瞬态能力”需求,即延迟和抖动时间。
该公司还在考虑定价模式,他表示,但是由于许多客户的项目种类不同,需要进行单独的合同谈判,而不能严格地按每个项目固定价格这种欠灵活的方式销售。
Bollella表示Java RTS是一个先进的、统一的实时应用开发平台,这意味着它具有实时调度技术。同时也意味着它采用了面向对象的设计方法,而不仅是程序代码。
Java RTS支持非实时和实时线程的混合,而且它将得到一套现代工具集的支持,即可采用Netbeans工具也可采用基于Eclipse的开发工具。该产品的特性包括对异步事件进行控制和支持异步传输的控制。
Bollella表示,统一意味着工程师可以用Java完成全部编程工作,而不是在C、C++和Ada之间对项目进行分解。程序员应该用常规的Java进行非实时编码,为软实时部分实现实时线程,随后使用无需碎片整理(garbage collection,GC)的“无堆积”实时线程,从而保证确定性的行为。碎片整理是指把不再占用的动态分配存储器释放出来的过程。它对响应时间的影响一直是Java专家争论不休的重要议题。
Aicas公司首席执行官James Hunt认为:“Sun公司Java RTS的发布对我们来说不是坏消息,因为它提高了大家对实时Java的兴趣。与前一年相比,我们现在的项目增加了许多。”
Aicas公司参与了欧盟开发下一代军用飞机的Hydras项目。该公司的美国分公司正在同美国军方合同商进行实时Java项目的合作。有几个合同商正在从事高性能的任务,它们不允许出现碎片整理和其它功能造成的时间延迟。
IBM是将Java用于企业应用的领头羊,该公司目前正同Apogee密切合作以便在嵌入式市场上推广Java。IBM嵌入式软件业务开发部总监Steve Gruber透露,他们两家公司一直在与几个需要某种实时响应特性的客户一起从事项目开发。IBM在世界好几个地方都有实时Java项目,最大的一个是在英国的Hursley,项目的种类从工业控制到机顶盒和通信设备。
碎片整理问题
Aneas公司的Flodin提及Sun公司、IBM和其它一些公司正在用一些新的碎片整理算法来改进Java的性能。
“我认为实时Java将用于可以容忍故障的系统之中,”Anders说,他指的是实时系统的偏软件形式。
但是,Bollella表示Sun公司的Java RTS产品在碎片整理改进方面有重大进展,允许擅长实时编程的编程师在Java内部处理硬实时应用。“从总体上看,我们认为具有这个领域经验的应用程序开发人员不一定非要考虑Java RTS之下的烦杂细节。”他说。
但他也指出:“实时编程很困难,要求在考虑实时碎片整理和预测逻辑的执行时间时要进行基本的工程平衡与折衷。”
因为Java RTS把实时和非实时代码混在一起,所以开发人员可以用常规的Java开发最大数据吞吐量部分,随后用碎片整理技术达到低停顿时间,这种把工作分成几个小部分来做的方法使得碎片整理不太引人注意,Bollella说。
此外,Java RTS内部的实时碎片整理器已经调节了相关按钮,用来指导有多少工作必须在特定的间隔内完成。当预测能力必须最大化时,编程师要处理一个具有不同类型存储器堆的“异类参考空间”,包括永久性的存储器和不同版本的区域性存储器(scoped memory)。
“在这些情况中,实时碎片整理器和线程也许要处理不同的存储器堆。某些存储器堆或许整理器不会去动。”Bollella说。
在Java RTS中,存在一个实时碎片整理器停止操作的点,减少了因整理工作归零而带来的开销,但是需要更多的分析。
“由于需要调节实时整理器的按钮来指示整理器何时运行,以及运行多久,所以程序师必须有调节值才能调整它们。”他说,“为了做到这点,程序师不得不搞清楚应用程序有多少时间花在碎片整理上。”
实时编程极具挑战性,因为程序师必须要做一些额外的事情,Bollella继续说道,随着预测能力的改进,编程模型的复杂度增加了。这就要求必须进行更多的分析并做一些额外的工作使得这些分析更易处理。当程序师面对区域存储器时,将不得不考虑更多事情。” |