Welcome 微信登录

首页 / 软件开发 / JAVA / 实时Java,第5部分 - 编写和部署实时Java应用程序

实时Java,第5部分 - 编写和部署实时Java应用程序2011-06-22Caroline Gough本系列 的前几篇文章讨论了 IBM WebSphere Real Time 如何解决了不确定性问题,从而获得极低的 timescale 值(延迟值)。这种功能将 Java 平台的范围和收益扩展到原本仅适用于特定的实时(RT)编程语言(如 Ada)的领域之中。RT 硬件和操作系统往往是定制的,难以理解。与之不同,WebSphere Real Time 运行在兼容 IBM BladeCenter® LS20(请参见 参考资料)和类似硬件的 Linux® RT 版本之上。它支持典型 RT 应用程序的需求:

低延迟:确保在有限时间内响应信号。

确定性:不存在垃圾收集(GC)的无限暂停。

可预测性:线程优先级监管执行的次数,执行时间一致。

无优先级反转:高优先级的线程不会因中优先级线程正在运行,而被持有其所需锁的低优先级线程阻塞。

对物理存储器的访问:诸如设备驱动程序之类的 RT 应用程序总是需要追溯根源。

这篇文章展示了如何使用 WebSphere Real Time 提供的工具编写和部署 RT Java 应用程序。文中引用了本系列之前的文章,以展示如何使程序以更高级别的 RT 确定性执行。(这可能很有帮助,但阅读之前的文章并非必需。)您将看到如何使用一种 RT GC 策略(如 Metronome)在 WebSphere Real Time 附带的 Lunar Lander 示例应用程序中改进可预测性。您还会学习如何预编译(AOT)您的应用程序,以便改进一个 RT 环境中的确定性。最后,您将使用不受垃圾收集器控制的存储器设计和实现一个 RT 应用程序,发现使您的 RT Java 应用程序发挥最大效能的提示与技巧。

如果您希望运行本文介绍的某些程序 —— 当然,最好是编写您自己的 RT Java 应用程序 —— 那么您就需要访问一个安装了 WebSphere Real Time 的系统(关于获得此技术的更多信息,请参见 参考资料)。

Metronome 垃圾收集器的优势

Metronome 是 WebSphere Real Time 的垃圾收集器。您可以通过启动 WebSphere Real Time 附带的示例应用程序来观察其优势。安装 WebSphere Real Time 后,可以在安装目录 /sdk/demo/realtime/sample_application.zip 处找到这个示例应用程序。

示例应用程序模拟了无人值守的 Lunar Lander 登月舱的控制技术。为实现安全着陆,登月舱的火箭推进器必须正确部署:

降低下降速率的垂直推进器。

对准着陆地点的水平推进器。

为了计算出 Lander 登月舱的位置,Controller 利用为雷达脉冲获取的时间返回这个位置。图 1 展示了这一模拟:

图 1. Lunar Lander