我在用户系统上使用JDK 1.6 64位,JSF,Tomcat服务器 64位等实现了一个应用程序。我正在集成一些设备< / em>(即finereader,scanner等)进入此应用程序。某些设备库仅在JRE 32位仅支持。
因此,要在 JRE 32位上运行的设备集成屏幕和非设备屏幕应在 JRE 64位上运行。我可以在同一个应用程序中配置多个JRE吗?如果可能,怎么样?
答案 0 :(得分:0)
Java应用程序在JVM中运行。 JVM是单个JRE的一部分。您可以将应用程序拆分为两部分,每部分都在自己的JVM中运行。然后,这些应用程序必须相互通信以协调用户体验。这对我来说不是一个好的解决方案。
答案 1 :(得分:0)
这完全取决于你如何定义“应用程序”。
首先,关于您的问题,每个JVM实例运行一种Java - 32或64位 - Java版本等。
有时,应用程序由运行单个java可执行文件的单个JVM组成,通常是jar和类路径上的一些东西,只有一个'main'
有时,应用程序由在一个或多个框上运行的多个JVM组成。在这种情况下,每个JVM都运行一个java可执行文件。但是这些可执行部分之间必须进行某种通信才能使其作为应用程序运行。
或者,相同的可执行文件可能在多个JVM上运行,我们仍将其称为一个应用程序。在这种情况下,会有某种外部的东西决定如何在多个JVM中分配应用程序的工作。例如,您可以在9个盒子上运行18个Tomcat实例,其中硬件负载平衡器将网络请求分开并将每个实例分配给一个Tomcat实例。但在这种情况下,部分应用程序可能在浏览器内的1000个用户计算机上运行。
有时,我们说多个应用程序正在另一个应用程序下运行。在这种情况下,我们可能会将主应用程序称为容器。一个例子是Tomcat。在这种情况下,Tomcat管理每个单独应用程序的请求加载,因为HTTP请求来自网络,标题中的信息指示哪个处理该请求。
您已经说过在Tomcat下运行了一些代码。 Tomcat是一个单一的可执行文件(它在一个JVM中运行并具有多种Java),并且它通常管理运行作为.war文件提供的一个Java可执行文件。可能有其他JVM中运行的其他Java应用程序通过Tomcat和您的可执行文件进行通信。或者,可执行文件可能没有其他JVM在其他地方运行。
所以,你可以看到,真正的答案是“它取决于”。如果您以某种方式进行多个JVM通信,则可能有不同的Java变体。如果它都在一个Tomcat实例下运行,那么你就有了一种Java。