多个java应用程序可以在同一个VM下运行吗?

多个java应用程序可以在同一个VM下运行吗?,java,jvm,Java,Jvm,我正在运行两个不同的java应用程序,它们都在不同的JVM上运行。 实际上我需要在这些应用程序之间传递一些数据, 我已经在这里使用了共享文件方法,但正在寻找更好的方法 所以我想的是,如果我们能够在同一个JVM下运行这些应用程序,那么我们可以在这些应用程序之间传递数据。 我不知道如何在同一个JVM下运行的应用程序之间传递数据。如果您的应用程序没有固有的冲突(不兼容的JVM参数、冲突的单例等),这可能是可行的。您可能需要以某种方式修改main()方法;也许你的两个应用程序在各自的线程中运行 但是,如

我正在运行两个不同的java应用程序,它们都在不同的JVM上运行。 实际上我需要在这些应用程序之间传递一些数据, 我已经在这里使用了共享文件方法,但正在寻找更好的方法

所以我想的是,如果我们能够在同一个JVM下运行这些应用程序,那么我们可以在这些应用程序之间传递数据。
我不知道如何在同一个JVM下运行的应用程序之间传递数据。

如果您的应用程序没有固有的冲突(不兼容的JVM参数、冲突的单例等),这可能是可行的。您可能需要以某种方式修改main()方法;也许你的两个应用程序在各自的线程中运行


但是,如果不知道其他细节,就很难判断事情的好坏。

当您使用应用程序服务器时,它们确实会这样做。应用服务器通常在自己的线程中运行应用程序,而不是在每个应用程序的JVM上运行应用程序。 如果想要实现类似的解决方案,可以编写一个基本服务器,在特定线程中调用应用程序的main方法


但要注意,这也可能会让你感到额外的头痛。例如,如果一个线程使用
System.exit(0)
退出应用程序,那么您的所有线程都将被关闭。

两个应用程序之间的数据传输技术是Java中的RMI,我认为您应该使用它


这里有一个介绍:

您可以通过
Socket
实现应用程序之间的联系。对于您的任务,您不需要在同一JVM实例下运行应用程序

您可以在不同的JVM之间传递数据。有很多解决方案可供选择

例如:

  • RMI(我认为这个最适合您的情况)
  • JGroup
  • JMS

如果这两个应用程序设计为在各自的JVM下运行,那么将它们塞进一个JVM可能会遇到许多问题。RMI或套接字呢?是的,但如果他可以在单个JVM下运行,则可以节省大量内存,并允许直接调用方法。@seand:由于他目前使用的是共享文件,因此转换为套接字可能比合并应用程序更容易。