2010-08-05 105 views
1

好吧,我只需要了解這個東西。我的機器上安裝了一個JVM。如果我開發2個程序(2個包含自己的主類的jar)並運行它們,它們是否都在同一個JVM上運行?運行在同一臺機器上的多個Java程序

如果它們都運行在同一個JVM實例上,我該如何讓它們通信?

我目前正在使用的系統在一臺機器上安裝了許多組件,但使用RMI彼此進行通信。這些組件在一臺機器上運行時使用RMI不是不切實際的嗎?

+0

RMI在同一臺機器上不是問題/問題,它只是遠程調用,所以它是一個很好的進程間通信。 – 2010-08-05 03:15:04

+0

對於交易平臺而言,交易平臺會處理數千次交易和報價請求嗎? – demotics2002 2010-08-05 03:27:02

+0

延遲對交易平臺很重要,是他們不在程序中直接使用組件的原因嗎?即將組件作爲依賴庫(JAR)? – bakkal 2010-08-05 03:33:45

回答

1

如果兩個應用程序分別啓動(即使它們在同一臺物理機器上運行),它們將運行在不同的虛擬機器上。已經提到OSGi是將它們集合在一起的一種方式,但如果您想將它們作爲單獨的應用程序來維護,可能需要將Web服務作爲通信方法。這對RMI的好處是與其他應用程序的互操作性和未來開發的靈活性。

3

如果我開發2個節目(2個罐子 自己主要的類),並運行它們, 他們會在同一JVM 都運行?

通常情況下,每個都將在其自己的JVM進程(java)中運行,除非您在另一個線程中啓動另一個進程。

我目前工作 該系統具有許多組件安裝在一個 機,但使用RMI每個 其他通信。這是不是不切實際 這些組件使用RMI時 他們是所有在一臺機器上運行

這是有點不切實際的,至少在發生所有(德)序列化時效率低下。 (RMI使用對象序列化編組和取消編組參數)

的OSGi(動態模塊系統的Java)

如果您正在運行在本地,而只需要組件找到對方,我建議你讓他們到OSGi捆綁。它一直在爲這種用途進行工程設計。

(作爲一個例子,這是IDE組件和插件Eclipse如何彼此相互作用,同時被鬆散地耦合,並且沒有不必要的(反)序列化)

+0

我會讀OSGi,看看它是否會在我的項目中有用。謝謝。 – demotics2002 2010-08-05 03:28:00

0

則也可以使用,如果兩個可觀察到的圖案的應用程序在同一臺機器上運行 - 一個想法。

相關問題