我应该尝试在 Java 项目中重用 Ruby 代码吗?

发布于 2024-08-23 01:17:16 字数 280 浏览 7 评论 0原文

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

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

I'd rather not "reinvent the wheel" and I've found a Ruby project that provides functionality I need in my Java app (there is no preexisting Java project that does what I need - trust me, I've looked). So, best case scenario, I am able to run the Ruby code from my Java code (ala JSR223).

However, this Ruby project depends on having several gems installed. I'm not at all interested in converting the entire Java app into a JRuby app, but I'd like to be able to leverage this project. Is there an easy way to load the code from a gem into a ScriptEngine, or am I just asking for headaches?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

挽容 2024-08-30 01:17:16

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

如果任何 gem 包含本机 C 代码,那么就算了,您无法从 JRuby 使用它们。

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

JRuby is a solid platform and integrates well with Java. But Rubygems do not integrate so well with Java build tools.

If any of the gems include native C code, then forget it, you can't use them from JRuby.

If all the gems (and all their dependencies) are pure Ruby, it is technically possible to use them from JRuby, but you will have headaches getting them packaged in JARs so that the JRuby runtime can find them.

匿名的好友 2024-08-30 01:17:16

大多数情况下我会因为复杂性而拒绝。虽然它是主观的,但我个人还是宁愿花时间重写它——你可以进行改进,当你完成时,你会更好地理解它。

Mostly I'd say no because of complexity. Although it's subjective, I'd personally rather take the time to re-write it anyway--you can make improvements and when you're done, you'll understand it better.

宁愿没拥抱 2024-08-30 01:17:16

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

One option you might consider is splitting your application into two pieces, which interact using either something like pipes/files (or simply stdin and stdout) or some sort of an RPC mechanism. Whether an approach like this makes sense really depends on what the Ruby library does - creating the interface between the two applications might be more complex than actually reimplementing the stuff in Java.

万水千山粽是情ミ 2024-08-30 01:17:16

我已经重用了 JRuby 中的 Java 代码,我不明白为什么这不能双向进行。

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

I've reused Java code from JRuby, I don't see why this can't go both ways.

Another thought, can you run the Ruby code and then just tack on a web service or set of web services to call from the Java app? Sinatra makes it ridiculously simple to write a web service wrapper for ruby code. And Java has no shortage of tools to call Web Services.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文