【发布时间】:2013-02-27 09:31:12
【问题描述】:
我一直在争论是否将 JRE 与我的应用程序捆绑在一起。我在下面列出了一些我认为它有用的原因,但我也犹豫是否这样做,因为它会使应用程序变得更大。
为什么我认为它会有用:
现在应用程序通过运行批处理文件运行(嗯,批处理文件的快捷方式,它通过批处理文件运行)。它只是调用
java -jar XXX,这要求Java 在路径中,但并非总是如此。我们是一个小团队,并没有完全在 Java 7 上运行(我们仍在尝试调试一些奇怪的错误)。如果用户使用 Java 7,他们可能会有不愉快的软件体验——这对我们不利。打包特定版本的 JRE 确保我们已经对其进行了全面测试。
我们支持 32 位和 64 位 Windows 平台。当用户下载软件时,他们选择 32 位或 64 位,但这是在询问他们使用的是哪个版本的 Java。大多数用户不知道他们的 64 位平台上是否安装了 32 位 java,即使他们的操作系统是 64 位,下载 32 位也会令人困惑。
虽然有一些很好的理由不打包它:
如果 Java 中存在安全漏洞或对 JRE 进行了其他重大更新,我们需要分发具有新 Java 版本的应用程序的新版本。我们通常每两周更新一次我们的应用,所以我现在不太关心这个。
该应用现在将变得更大,因为它包含一个打包的 JRE。
谁能提供一些指导,说明他们是否(基于这些要求)认为打包 JRE 是个好主意?如果不是,除了希望 java 在路径中之外,还有哪些替代方法(更重要的是,如果不是,我们的用户可能不知道如何添加它)。
【问题讨论】:
-
您的应用程序不能有两个版本吗?一个捆绑了 JRE,一个不捆绑,让用户决定下载哪一个?
-
@Ivan 这当然是可能的。
-
考虑到用户甚至没有安装系统范围的 JRE。在这种情况下,我们可以设置一个设置逻辑,如果系统范围的 JRE 缺失,则将捆绑 JRE,以及在 32 位和 64 位之间选择 JRE 的选项。如果存在系统范围的 JRE,则可以使用本地到应用程序 JRE 来避免替换系统范围的 JRE。
-
并不是真的“大得多”,如果你从 JRE 中删除任何不需要的东西,你可以让它小到 10MB。 Proof