【问题标题】:Which real-time (RTSJ) JVM is most preferred? [closed]哪个实时 (RTSJ) JVM 最受青睐? [关闭]
【发布时间】:2011-05-02 09:43:54
【问题描述】:

似乎只有少数 JVM 是 Real-Time Specification for Java (RTSJ) 的实现。 Sun/Oracle Java Real-Time System 超过 6000 美元,IBM 的实时 WebSphere 超过 7000 美元,因此许多 Java 开发人员可能永远没有机会使用它们中的任何一个。 Oracle 的 JRockit 似乎是一个免费的实时 Java 实现,具有可预测的、确定性的行为,尽管我不确定,因为他们的文档在营销语言上相当繁重。由于由小型组织开发并且用户群较小,其他较小的实时 JVM 似乎存在风险。

首选哪些实时 JVM?哪些是最受开发者使用、信任和喜爱的?

【问题讨论】:

  • Sun JVM有试用版,如果你正在做一些研究项目,你也可以申请学术使用。 JRockit 看起来根本不像一个 RTSJ 系统,它没有实现它。可能它会提供一些软实时的特性,比如确定性垃圾收集器,但看起来这就是它的全部。您的延迟要求是什么?如果不小于 ~200 微秒,即使没有 JRT 也可以实现。
  • 实际上,在 Ubuntu 上使用 OpenJDK,我在轮询中测量到了大量的抖动。往返发送/接收时间约为 17 毫秒,在相对较少的轮询中存在大约相同数量的抖动。显然,硬件在抖动方面有很大的影响,而且我的要求将与其他人的要求大不相同,所以我想避开它们并获得有关实时 JVM 的一般答案。我希望通过首先找到一个可信的、可预测的、确定性的 JVM 来学习和提供有关实时 Java 开发的信息。
  • 在纯 C 中进行的相同轮询仅产生 ~10% 的抖动。
  • JRockit 可能最好被称为“软实时”JVM,并且不会尝试提供 RTSJ 合规性。它与您引用的其他 JVM 不在同一个领域。
  • 我已经注意到 Oracle 似乎已经终止了 JavaRTS 产品(2012 年 3 月)的一些相关问题,但没有任何可用的公开信息。

标签: java jvm real-time rtsj


【解决方案1】:

更新(2012 年 3 月):Oracle 似乎已经悄悄地拆散了他们的 JavaRTS 开发团队。

这个问题没有很好的答案。肯定没有足够的临界质量可以说存在当前最流行的 RT JVM。

据我所知,美国国防系统使用 JavaRTS、IBM 的 WebSphere RT 和 PERC。航空平台使用 aicas JamaicaVM。迄今为止,这些人中的大多数人并不太关心许可成本。他们担心更高的项目风险。我使用过许多此类程序,我发现这些产品质量很高,而且供应商(有时是非凡的)支持。

许多供应商都专注于特定的客户或领域,他们的设计和支持基础架构往往与此一致。如果您有特定的应用程序配置文件,也许我们可以为您提供更好的答案。

您提到的高昂许可成本反映了用户对这些产品的高期望,以及相对较低的需求密度。开发人员社区(例如它)也更加分散,因为具有实时或安全关键约束的系统通常具有更高的敏感性(国防、航空、SCADA)或受保护的专有价值(汽车)或两者兼而有之。一年一度的JTRES conference 是实时 Java 理论和实践的一个极好的论坛,它是一个由学者和精通技术的供应商组成的紧密团体。

与 SO 相关:Primitives-only in Java、who uses RTSJ。

【讨论】:

    【解决方案2】:

    确实,只有少数虚拟机实现了RTSJ。 Oracle 的 JavaRT、IBM 的实时 WebSpere 和 aicas JamaicaVM,但来自 Atego 的 PERC 不是其中之一,甚至远程都不是。 PERC 有一些用于实时编程的专有扩展。 Oracle 的 JRocket 也不是实时 VM。

    虽然 PERC 和 JamaicaVM 都来自比 IBM 或 Oracle 更小的公司,但它们都有大量的用户群。大多数开发人员对 PERC 和 JamaicaVM 不太熟悉,因为它们主要用于嵌入式应用程序,而不是桌面或服务器应用程序。 JamaicaVM 已被波音、西门子、蔡司和洛克希德马丁等大公司使用,并且已经上市十多年。

    如果您想试用 Java 的实时规范,那么您可以下载 JamaicaVM Personal Addition。它可以在网络上的任何 Linux 平台上使用。可从“http://www.aicas.com/jamaica-pe.html”免费获取。

    JamaicaVM 不仅支持RTSJ,还拥有一个完全抢占式垃圾收集器。这意味着人们可以编写实时代码,而不必求助于使用范围和不朽的内存区域。 JamaicaVM 还具有静态或提前 (AoT) 编译器,因此实时性能不会被 JIT 编译器抑制。人们仍然可以使用RealtimeThreads、RawMemoryAccess、AsyncEventHandlers 以及RTSJ 的其他促进实时编程的功能。

    【讨论】:

      【解决方案3】:

      尽管 Azul Zing 不是 RTSJ 实现(而是 J2SE 实现),但他们声称该 JVM 能够运行实时应用程序,因为 C4 垃圾收集器。

      更多关于C4:

      【讨论】:

        【解决方案4】:

        Aonix 拥有最常用的 RTSJ 实现。他们拥有从 CDC 到 Java SE 级别的各种实时 Java 解决方案。

        【讨论】:

        • 与 Sun 的 Java RTS、IBM 等相比,为什么它们最常用?是因为 Atego 的 Anoix Perc Raven “满足最高级别的关键性要求,甚至是 FAA 对机载系统要求的 DO-178B 软件安全指南中定义的 A 级?”它们更便宜吗?它们是最成熟的吗?
        • 您是否有一些可量化的证据表明 Aonix(现为 Atego)是最常用的?
        • 另请注意,并非所有 PERC JVM 都完全符合 RTSJ。这对许多用户来说可能无关紧要,但 Atego 的人已经做了他们自己的事情来让他们的客户得到他们需要的东西,并且当它妨碍时偏离 RTSJ。我对此很满意,与我合作过的各种客户都没有问题。我认为可以公平地说,Atego 的 CTO(也是 RT Java 的技术领导者)对 RTSJ 规范有一些重大担忧。
        • 我唯一可以量化的证据是他们网站上的参考文献数量。对于一个软件库来说,我觉得这很重要。他们还具有从安全关键到 RT 的广泛实施。我知道并非所有这些都符合 RTSJ,但对于某些用例,您可能需要牺牲兼容性。
        猜你喜欢
        • 2020-09-12
        • 2021-11-19
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多