2

这本身不是一个问题,而更像是我想知道的关于如何使 Ruby 程序与 Java 程序一起工作的列表。

事情是这样的:我们有两个团队。一个人在 Java 上工作并用 Java 实现他们的代码和模块。我们在 Ruby 中做同样的事情。我们应该有一组通用接口,并在我们的 Ruby 程序中使用他们的一些代码,他们将在他们的 Java 程序中使用我们的一些 Ruby 代码。

在连接这两个模块以提供一个通用模块时要记住哪些事项?我想这更像是一个指南或一套指南,而不是一个直接的答案。所以请耐心等待,不要报告或关闭这个问题。谢谢!

更新:

是的,我们将使用 RESTful 服务。我不想要任何形式的编码帮助。我想要的只是你的贡献,你可能会从用两种不同语言编写模块并将它们与一个通用接口互连的经验中获得。

这几乎就是我想知道的。虽然这确实是我的一个课堂项目,但我认为如果在某个地方有指导方针会更好,这样它也可以帮助其他人。

4

2 回答 2

3

在您描述的情况下,我倾向于使用 JRuby,以便您的 Ruby 代码可以直接与 Java 互操作。您还可以使用 JSON 或其他方式让系统的 Ruby/Java 部分通过套接字进行通信,但这样做会带来性能成本复杂性成本。(性能影响是否真的产生影响取决于 Ruby/Java 部分之间的接口有多“细粒度”——处理单个请求需要多少 Ruby-to-Java 或 Java-to-Ruby 调用。 )

在 JRuby 中,您可以加载 JAR 文件并使用其中定义的 (Java) 类,就好像它们是 Ruby 类一样。您也可以采用另一种方式——您可以在 Java 应用程序中像“库”一样使用 JRuby 来评估 Ruby 代码。

您可能应该 1) 用 Ja​​va 编写“主”应用程序,并将 Ruby 部分编写为主应用程序调用的“库”,或者 2) 用 Ruby 编写主应用程序,并将 Java 部分编写为库。如果你有从 Java 代码到 Ruby 以及从 Ruby 到 Java 的循环依赖,这将使你的代码库难以理解。

于 2012-10-29T20:10:42.667 回答
1

这是一个大问题,所以我不打算具体说明这是如何完成的。我可以给你一个想法如何去做。假设您正在询问 Web 应用程序...

  • 数据库端基于 Java 的 Web 应用程序
  • 基于 Java 的 Web 应用程序实际上并没有客户端的“视图”。它不会生成常规的 css、html 视图。
  • 相反,它基于 URL 创建 JSON 对象
  • Rails 使用 JSON 对象,就好像它是来自数据库的数据一样。它可以从中创建模型。
  • 基本上,Rails 每次需要访问数据库时都会对基于 Java 的 Web 应用程序进行 API 调用。
  • 最大的缺点是您不再可以使用 ActiveModel、ActiveRecords 等 Rails 附带的所有好东西
  • 上行空间?对于复杂的数据库查询可能更快

这基本上是 Twitter 和 Amazon 等公司在说他们在后端使用 Java 而在前端使用 Rails 时所做的。但同样,这是一项巨大的努力,您肯定要考虑这样做的成本和收益。

于 2012-10-29T19:25:06.557 回答