需要使用Server VM,但JRE中没有可用的。那我需要哪个软件包:JRE还是JDK?

5
这是上下文: 我刚开发了一个需要在服务器模式下启动的应用程序(java -server)。我正在使用JSE SDK(JDK),并且运行该应用程序没有问题,因为JDK具有Server VM。现在,我正在尝试创建一个安装程序,这样人们就可以在他们的计算机上安装这个应用程序。但在这一点上,我注意到了这一点:
大多数用户已经安装了JRE(以便运行Java应用程序),但没有Server VM,因此我的应用程序将无法运行。由于这个问题,我的问题是:
  • 是否有办法将Server VM添加到已安装的JRE中?
  • 对于那些没有安装Java的用户...我应该建议安装哪个软件包? JDK还是JRE?
我有点困惑...不确定哪些软件包具有Server VM或不具有。

1
你为什么需要服务器虚拟机? - Thorbjørn Ravn Andersen
因为它是一个服务器应用程序,性能会更好。 - testk
3个回答

6
您可以选择将服务器 HotSpot VM 与 JRE 的重新分发副本一起使用。 JDK 中私有 JRE 中的 'jre\bin\server\' 目录包含 HotSpot 服务器 VM。只要遵循 JDK README 中规定的要求,就可以将其与 JRE 发行版一起使用。
来自 JDK 7 README:
在 Microsoft Windows 平台上,JDK 包括 Java HotSpotTM Server VM 和 Java HotSpotTM Client VM。但是,Microsoft Windows 平台的 JRE 仅包括 Java HotSpotTM Client VM。希望使用 Java HotSpotTM Server VM 的人可以将 JDK 的 jre\bin\server 文件夹复制到 JRE 中的 bin\server 目录中。软件供应商可以将 Java HotSpotTM Server VM 与 JRE 的重新分发一起使用。 http://www.oracle.com/technetwork/java/javase/jdk-7-readme-429198.html#jre (检索于 2012 年 9 月 22 日)

3

只需使用客户端模式。

你不会找到一个好的解决方案。你可以建议他们安装启用了服务器模式的JDK,但是你的应用程序应该比这更顺畅地交付。如果你要将你的应用程序交付给服务器管理员,你可以轻松地说它需要在服务器模式下运行,让他们处理它。

服务器模式是一种优化,以交换启动时间为长时间速度改进。对于任何应用程序,特别是将要交付到客户机器上的应用程序,都不应该要求使用服务器模式。


有很多优化还没有移植到客户端虚拟机,客户端应用程序肯定可以从中受益。 - Ricky Clarkson
利益和要求是两个不同的事情。 - Erick Robertson

1

私有 vs 公共 JRE - 安装 JDK 会安装一个私有的 Java SE 运行时环境 (JRE),并可选地安装一个公共副本。私有 JRE 是运行 JDK 中包含的工具所必需的。它没有注册表设置,并完全包含在 jre 目录中(通常位于 C:\Program Files\jdk1.6.0\jre),其位置仅为 JDK 所知。另一方面,公共 JRE 可以被其他 Java 应用程序使用,它包含在 JDK 外部(通常位于 C:\Program Files\Java\jre1.6.0),已在 Windows 注册表中注册(位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft),可以使用“添加/删除程序”进行删除,可能或可能不会在浏览器中注册,并且可能或可能不会将 java.exe 复制到 Windows 系统目录中(使其成为默认系统 Java 平台或不是)。

JDK 安装和故障排除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接