gpt4 book ai didi

java - 如何从 Java 调用/使用 MRI Ruby?

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:54 24 4
gpt4 key购买 nike

我想从 Java 环境调用 Ruby 方法。我已经尝试了这四种解决方案:

  1. 使用 JRuby。这将是极好的,因为它在 Java 虚拟机中运行一切。但是我遇到了一些严重的( Not Acceptable )性能问题:
    • JRuby 目前不能与我的 C 扩展一起工作。
    • 来自 Ruby 的 Fork 调用,在 Java 虚拟机中运行时表现不稳定。
    • 代码在 JRuby 中的运行速度比在 MRI Ruby 中慢。
  2. 使用 ROR。通过 Ruby on Rails 提供网络服务来绕过 Java。这行得通,但打破了公司仅使用 Java 网络服务的 IT 政策,它还迫使 IT 部门(Java 和网络服务开发人员)或研发部门(Ruby 和 C 开发人员)在该领域之外工作。
  3. 使用 Java 系统调用。我们可以使用 Java 系统调用调用独立的 Ruby 程序,并通过 XML 文件解析输入和输出数据。这可行,但启动新进程和处理 XML 文件的开销是一个性能问题。
  4. 使用 RJB。 Ruby Java Bridge 允许我从 Ruby 调用 Java,但这与我需要的相反。

是否有一种方法可以从 Java 调用 MRI Ruby,而不会出现上述任何问题?

最佳答案

您可以通过以下方式使#3 更有效率

  • 不启动进程,而是使用长时间运行的守护进程
  • 不是通过文件而是通过管道进行通信
  • 使用比 XML 更高效的东西,比如 Protocol Buffers

但总的来说,我没有看到您遗漏的任何选项。对不起。

关于java - 如何从 Java 调用/使用 MRI Ruby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com