作为一种支持面向对象抽象和软件组件可扩展组合的高级编程语言,Java是开发用户界面和应用程序软件的理想选择。然而,Java软件如何最有效地解决嵌入式软件典型的低级问题并且通常用C语言编程,这一点还不太明显。然而,新的硬实时Java技术针对的是低级嵌入式实时开发的特殊需求?并击败了混合C和Java混合语言方法。
嵌入式系统与构建它们的人以及它们执行的底层执行引擎一样多。同样,在为低级实时计算(ìrubber 与道路相遇)选择Java 运行时环境时,一刀切的解决方案既不可行也不实用。
在声称支持实时垃圾回收的现有虚拟机中,每个虚拟机提供的功能略有不同,表示对软实时截止时间的不同程度的遵守,其中内存限制和虚拟机占用无关。较少数量的虚拟机可以处理较低级别的要求,其中硬实时截止时间、执行速度和内存占用更为重要。通常,这些虚拟机与管理底层硬件服务的底层操作系统或 RTOS 共存。但是,事实是:有时这还不够好。有时,Java软件需要超越硬件抽象层,直接与硬件设备通信。
在Java越来越被认为是首选语言的世界中,拥有自上而下的完整应用程序覆盖的虚拟机技术可能是一个显着的优势。许多嵌入式 Java 应用程序都是使用两种语言方法构建的。Java 用于应用程序的更大、更复杂和更动态的部分,而 C 用于较低级别的功能,例如设备驱动程序或需要更快吞吐量的应用程序部分。
这种选择的影响会导致通过将Java和C应用程序链接在一起的Java本机接口(JNI)进行尴尬和不可预测的转换。人们这样做的原因很明显:传统的虚拟机太大、太慢、太不可预测,无法处理低级执行。因此,新推出的硬实时Java技术现在可以使用Java语言而不是C来解决低级实时问题。与JNI技术相比,这种硬实时Java技术还为将传统的高级Java代码连接到低级C代码提供了卓越的性能和健壮性。硬实时 Java 现在可以取代 C 代码来实现直接与硬件通信的设备驱动程序。这允许仅Java的连续统一体,从成熟的Java的1到10秒响应时间,一直到硬实时Java的10微秒响应时间,这是解决硬件线速度所必需的。
用 Java 替换 C
混合语言方法的弱点是几个方面的。首先,每当应用软件跨越Java和C执行之间的边界时,JNI协议都会提取高收费。此协议开销可能是可执行代码成本的两倍以上,它破坏了将 C 语言用于应用程序的某些性能关键部分的许多性能优势。其次,更重要的是,Java 安全模型会因在
应用程序中引入 C 代码而受到损害。在过去 10 年构建的大量嵌入式 Java 应用程序中,代表超过 100 万行嵌入式 Java 代码,Aonix 支持工程师发现,C 和 Java 代码之间的 JNI 接口代表了最常见的故障点。
使此问题更加复杂的是,这些错误是最难调试的错误之一。这是因为无意中破坏了 JNI 协议的 C 程序员会使随附的 Java 虚拟机处于不稳定状态。该错误可能表现为 Java 应用程序代码或 Java 虚拟机本身的实现中的错误。虚拟机供应商、Java 应用程序开发人员和 C 开发人员之间的相互指责结果。
Java 规范请求 (JSR) 302 正在开发硬实时安全关键型 Java 编程的标准方法。除了支持核电站关闭和商用飞机控制等应用的严格安全认证要求外,安全关键型Java标准还代表了适用于Java语言开发各种低级代码的基础。这个不断发展的标准的原型实现已经证明,在内存占用(超过 100 倍)、吞吐量(高达 3 倍)和确定性(数千倍)方面显着节省成本。这种低级 Java 代码能够展示优化 C 语言 10% 以内的性能
特征。它能够通过支持一级中断处理程序的Java 实现和设备寄存器输入和输出操作来直接控制设备硬件。
对于那些必须构建从动态高级复杂性到静态低级简单性的分层软件体系结构的人来说,已经设计了一种机制,允许非常高效和健壮地集成低级
硬实时Java组件与高级传统Java组件。从长期工程角度来看,在整个应用程序中消除 C 代码可以产生更好的控制、更高的可预测性、更低的软件维护成本和更长的软件寿命。
性能结果
Aonix 演示具有计算密集型分形程序,其中分形渲染以 C 或硬实时 Java 代码实现。在这两种情况下,图形显示都是用Java编程的,带有SWT图形接口。演示揭示的全 Java 性能提升是高级和低级 Java 代码之间更清晰集成的好处。全 Java 解决方案清楚地显示了在高级 Java 代码和低级 C 代码之间进行集成所需的 Java 本机接口带来的低效率。
该演示是在嵌入式 Linux 环境中运行的,对于此特定演示,不需要解决裸硬件问题。事实上,传统的Java和硬实时Java技术将在大多数嵌入式操作系统和商业RTOS环境中运行。硬实时Java技术非常简单,也可以安装在裸硬件上运行,而无需底层操作系统。
除了从应用程序中消除 C 语言提高了可靠性、可维护性和开发人员生产力之外,此演示还表明,全 Java 解决方案的运行速度比等效的 Java-C混合程序高出 2 比 1。确切的加速比取决于缩放系数和窗口大小。通过一个特定的测量,全Java程序的运行速度比混合程序快2.33倍。
全 Java 解决方案简化了开发、集成和维护
没有放之四海而皆准的JVM,但是现在硬实时Java提供了一种单一来源的Java补救措施,可以覆盖嵌入式实时应用程序的所有级别,从高级应用程序复杂性一直到最低级别的硬件。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !