1

我宁愿不“重新发明轮子”,而且我找到了一个 Ruby 项目,它提供了我在 Java 应用程序中需要的功能(没有预先存在的 Java 项目可以满足我的需要——相信我,我已经看过了)。因此,最好的情况是,我能够从我的 Java 代码(ala JSR223)运行 Ruby 代码。

然而,这个 Ruby 项目依赖于安装了几个 gem。我对将整个 Java 应用程序转换为 JRuby 应用程序一点也不感兴趣,但我希望能够利用这个项目。有没有一种简单的方法可以将代码从 gem 加载到 ScriptEngine 中,或者我只是在问头痛?

4

4 回答 4

2

大多数情况下,由于复杂性,我会说不。尽管它是主观的,但我个人还是愿意花时间重新编写它——你可以进行改进,当你完成后,你会更好地理解它。

于 2010-02-24T22:46:14.510 回答
2

JRuby 是一个可靠的平台,并与 Java 很好地集成。但是 Rubygems 并不能很好地与 Java 构建工具集成。

如果任何 gem 包含本机 C 代码,那么算了吧,你不能在 JRuby 中使用它们。

如果所有 gem(以及它们的所有依赖项)都是纯 Ruby,从技术上讲可以从 JRuby 中使用它们,但是将它们打包到 JAR 中以便 JRuby 运行时可以找到它们会很头疼。

于 2010-02-24T22:53:16.180 回答
1

您可能会考虑的一种选择是将应用程序分成两部分,它们使用管道/文件(或简单的标准输入和标准输出)或某种 RPC 机制进行交互。这样的方法是否有意义取决于 Ruby 库的作用——在两个应用程序之间创建接口可能比在 Java 中实际重新实现这些东西更复杂。

于 2010-02-24T23:30:18.843 回答
1

我重用了 JRuby 中的 Java 代码,我不明白为什么不能双向使用。

另一个想法是,您能否运行 Ruby 代码,然后添加一个 Web 服务或一组 Web 服务以从 Java 应用程序调用?Sinatra使为 ruby​​ 代码编写 Web 服务包装器变得异常简单。Java 也不乏调用 Web 服务的工具。

于 2010-03-26T20:35:20.243 回答