这是上下文:我刚刚开发了一个需要在SERVER模式下启动的应用程序(java -server)。我正在使用JSE SDK(JDK),因为JDK具有服务器VM,所以我没有运行应用程序的任何问题。现在,我正在尝试创建一个安装程序,以便人们可以在他们的计算机中安装此应用程序。但此时我已经注意到了这一点:
大多数用户已安装的JRE(为了运行Java应用程序)没有服务器VM,因此我的应用程序将无法运行。因此,我的问题是:
我有点困惑......不确定哪些软件包有服务器VM。
答案 0 :(得分:6)
您可以选择将服务器HotSpot VM包含在JRE的重新分发副本中。 ' jre \ bin \ server \' JDK的私有JRE中的目录包含HotSpot Server VM。如果您遵循JDK自述文件中规定的要求,则允许将此包含在JRE的发行版中。
从JDK 7 README:
在Microsoft Windows平台上,JDK包括Java HotSpotTM Server VM和Java HotSpotTM Client VM。但是,Microsoft Windows平台的JRE仅包含Java HotSpotTM客户端VM。那些希望将Java HotSpotTM Server VM与JRE一起使用的人可以将JDK的jre \ bin \ server文件夹复制到JRE中的bin \ server目录。软件供应商可以使用JRE的重新分发来重新分发Java HotSpotTM Server VM。
http://www.oracle.com/technetwork/java/javase/jdk-7-readme-429198.html#jre(检索2012年9月22日)
答案 1 :(得分:3)
只需使用客户端模式。
你不会找到一个好的解决方案。您可以建议他们都安装启用了服务器模式的JDK,但您的应用应该比这更顺畅。如果您将应用程序交付给服务器人员,您可以很容易地说它需要在服务器模式下运行并让他们处理它。
服务器模式是交换启动时间的优化,用于长时间的速度改进。任何应用程序都不应该要求它,特别是那些将被发送到客户机的应用程序。
答案 2 :(得分:1)
私有与公共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平台)。