如何使Ruby程序与Java程序一起使用?

时间:2012-10-29 18:58:22

标签: java ruby-on-rails ruby java-ee

这不是一个问题,但更像是我想知道如何使Ruby程序与Java程序一起工作的一系列事项。

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

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

更新:

是的,我们要使用RESTful服务。我不想要任何编码帮助。我想要的只是您对使用两种不同语言编写模块并使用通用接口进行互连的经验所做的贡献。

这就是我想知道的全部内容。虽然这确实是我的一个班级项目,但我认为如果某个地方有指导方针会更好,所以它也可以帮助其他人。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

这是一个很大的问题,所以我不打算详细说明如何做到这一点。我可以告诉你如何去做这件事。假设您正在询问Web应用程序......

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

这基本上就是像Twitter和亚马逊这样的公司,当他们说他们在后端使用Java而他们在前端使用Rails时会这样做。但同样,这是一项巨大的努力,你绝对想要考虑成本和收益。