在同一台机器上运行的多个Java程序

时间:2010-08-05 03:07:24

标签: java

好的,我只需要了解这件事。我的机器上安装了JVM。如果我开发了2个程序(2个带有自己主类的jar)并运行它们,它们是否都在同一个JVM上运行?

如果它们都在相同的JVM实例上运行,我该如何让它们进行通信?

我目前正在处理的系统在一台机器上安装了许多组件,但使用RMI相互通信。当这些组件在一台机器上运行时,这些组件使用RMI不是不切实际的吗?

3 个答案:

答案 0 :(得分:3)

  

如果我开发2个程序(2个罐子用   他们自己的主要课程)并运行它们,   他们会同时奔跑吗?   JVM?

通常不会,每个都将在他们自己的JVM进程(java)中运行,除非你在另一个线程或其他东西中从另一个启动一个。

  

我目前正在处理的系统   已将多个组件安装在一个组件中   机器,但与每个人沟通   其他使用RMI。这不是不切实际的   这些组件在使用RMI时   他们都在一台机器上运行

这有点不切实际,至少在发生所有(反)序列化时效率低下。 (RMI使用对象序列化来编组和解组参数)

OSGi(Java动态模块系统)

如果您在本地运行,并且只需要组件来查找彼此,我建议您将它们变成OSGi个捆绑包。它已经为这种用途进行了工程设计。

(例如,这是Eclipse IDE组件和插件彼此交互的方式,同时是松散耦合的,没有不必要的(de)序列化)

答案 1 :(得分:1)

如果两个应用程序分别启动(即使它们在同一台物理计算机上运行),它们将在不同的虚拟机中运行。 OSGi已被提及作为将它们组合在一起的一种方式,但如果您想将它们作为单独的应用程序维护,则可能值得将Web服务视为一种通信方法。这相对于RMI的好处是与其他应用程序的互操作性以及未来开发的灵活性。

答案 2 :(得分:0)

如果两个应用程序在同一台机器上运行,你也可以使用可观察模式 - 想一想。