2012-10-29 79 views
2

這不是一個問題,而更像是一個我想知道的關於如何使Ruby程序與Java程序一起工作的列表。如何使Ruby程序與Java程序一起工作?

這是事情:我們有兩個團隊。一個人使用Java並使用Java實現他們的代碼和模塊。我們在Ruby中也是這樣做的。我們應該有一套通用的接口,並在我們的Ruby程序中使用他們的一些代碼,他們將在他們的Java程序中使用我們的一些Ruby代碼。

當連接這兩個模塊以提供一個通用模塊時,需要記住哪些內容?我想這更像是一個指南或一套指導方針,而不是一個直接的答案。所以,請耐心等待,不要報告或關閉此問題。謝謝!

更新:

是的,我們使用RESTful服務。我不想要任何編碼幫助。我想要的只是您對兩種不同語言的編碼模塊的經驗所做的貢獻,並將它們與一個通用接口相互連接。

這幾乎所有我想知道的。雖然這確實是我的一個課程項目,但我認爲如果在某個地方有指導方針會更好,所以它也可以幫助其他人。

+2

你是什麼意思,「他們要在他們的Java程序中使用一些Ruby代碼」?他們如何做到這一點?你的意思是JRuby?你的意思是訪問一項服務?就目前而言,這個問題是無法回答的。 –

+0

本地或遠程? – texasbruce

+0

我注意到你用ruby-on-rails標記了這個。如果是這樣的話,你總是可以創建RESTful api,並通過java使用http請求來從Ruby中檢索信息。考慮擴大你的問題,因爲現在它很難告訴你需要什麼。 – sunnyrjuneja

回答

3

在你描述的情況下,我傾向於使用JRuby,以便Ruby代碼可以直接與Java進行互操作。您還可以使用JSON或其他方式使系統的Ruby/Java部分通過套接字進行通信,但這樣做的性能成本爲。 (性能是否真正發揮作用取決於Ruby/Java部件之間的接口「細粒度」 - 需要多少個Ruby到Java或Java到Ruby的調用來處理單個請求。 )

在JRuby中,您可以加載JAR文件並使用它們中定義的(Java)類,就好像它們是Ruby類一樣。您也可以採取另一種方式 - 您可以像使用Java應用程序中的「庫」一樣使用JRuby來評估Ruby代碼。您應該或者1)在Java中編寫「主」應用程序,並將Ruby部分編寫爲主應用程序調用的「庫」,或者2)將主應用程序寫入Ruby,然後編寫Java部分作爲圖書館。如果你有從Java代碼到Ruby的循環依賴關係,並且從Ruby返回到Java,它會使你的代碼庫難以理解。

1

這是一個巨大的問題,所以我不會詳細說明這是如何完成的。我可以給你一個想法如何去做這件事。假設你是問有關Web應用程序...

  • 在數據庫方面
  • 基於Java的Web應用程序的基於Java的Web應用程序並沒有真正對客戶端「視圖」。它不會生成傳統的CSS,HTML視圖。
  • 相反,它創建了基於URL的JSON對象
  • Rails使用JSON對象,就好像它是來自數據庫的數據一樣。它可以創建出他們的模型。
  • 基本上,Rails每次需要訪問數據庫時都會對基於Java的Web應用程序進行API調用。
  • 這個的缺點是你不再可以使用ActiveModel,ActiveRecords等所有Rails附帶的好東西
  • 上行?對於複雜的數據庫查詢可能會更快

這基本上是Twitter和Amazon這樣的公司在他們說他們在後端使用Rails時在後端使用Java的原因。但是,這是一個巨大的努力,你一定要考慮成本和利益。

+0

謝謝! :)這是很好的信息。現在我已經擴大了這個問題,你的答案會有什麼變化嗎? – CodingInCircles

相關問題