分发Java应用程序的最佳方式是什么?

119

Java是我首选的编程语言之一。然而,我经常遇到将我的应用程序分发给最终用户的问题。

给用户一个JAR文件并不总是像我希望的那样方便,而使用Java WebStart需要我维护Web服务器。

如何最好地分发Java应用程序?如果Java应用程序需要向用户计算机安装工件,有没有好的Java安装/打包系统可以使用?


Java WebStart可以从任何URL使用,例如像CD或网络驱动器这样的文件系统。尽管它不能提供太多功能。请注意:Eclipse不使用安装程序,您只需解压缩并运行即可。也许您不需要安装程序。 - Peter Lawrey
1
现在将Java WebStart应用程序部署到Google应用引擎等平台非常简单。 - Thorbjørn Ravn Andersen
12
很遗憾这个问题已经关闭。我不同意所述理由“主要基于观点”。提供的答案并非基于观点,而是基于经验。我总是欢迎基于经验的好答案。那些无法从历史中汲取教训的人注定会重蹈覆辙。 - bouvierr
你可以使用JDK 9引入的jlink来分发Java应用程序。它随JDK一起提供。它将为您构建一个专用的JRE。您不需要在客户机上安装Java。 - Ahmad Ismail
15个回答

1
什么是分发Java应用程序的最佳方式?如果Java应用程序需要在用户计算机上安装工件,该怎么办?有没有好的Java安装/打包系统?
根据我的经验(从评估许多选项中),install4j是一个很好的解决方案。它可以为任何平台创建本地安装程序,并专门针对安装Java应用程序。有关详细信息,请参见其网站上的“功能”。

install4j是一款商业工具。尤其是如果您的需求相对简单(只需要分发应用程序并安装一些工件),还有许多其他好的选择,包括免费的选项(如izPack或已经提到的Lauch4j)。但是您要求最好的方式,根据我目前的了解,install4j是最好的选择,特别是用于分发更大或更复杂的Java(EE)应用程序。


你知道如何在Mac OS上强制运行JVM 5.0吗?在Windows上,只需捆绑JRE即可,但是在Mac上,可能已配置了另一个默认的JVM。因此,我不确定如何显式地强制它使用特定的JVM版本... - Stephane Grenier
@Stephane,我实际上没有使用install4j创建过OS X安装程序,但是我认为它不应该是一个问题,因为它具有灵活的JRE捆绑/检测选项。有关更多信息,请查看此答案中的链接:https://dev59.com/OEjSa4cB1Zd3GeqPBwJ0#995943 - Jonik
由于Mac支持创建Java应用程序包,因此您可以在info.plist中指定JRE,如下所示...<key>JVMVersion</key> <string>1.5+</string>您可以删除加号以要求特定版本。这就是我做的方式,但我不使用install4j。有很多页面解释如何在Web上创建Mac App budles。我还建议只看看limewire或vuze(Java应用程序)如何执行此操作。您还可以查看它们用于构建应用程序包和dmg文件的构建脚本,因为它们是开源的! - Cal

0

最佳答案取决于平台。对于在Windows上部署,我使用one-jarlaunch4j的组合效果很好。需要一些时间来正确设置我的构建环境(主要是ant脚本),但现在已经相当轻松了。


0

从我的角度来看,更优越的分发机制是使用类似于ClickOnceWebStart技术。您只需将版本部署到服务器上,当版本发布时,它会自动传递给客户端。 此外,Eclipse RCP平台包含UpdateManager,可以执行WebStart的功能,但还有更多功能。

由于我正在使用Maven2进行构建,部署只是小菜一碟:将构建的jar文件复制到服务器上的位置,如果需要更新jnlp文件,然后就完成了。


0

InstallAnywhere 是一个不错的安装程序,但价格较高 - 我还没有找到一个同样好且免费的。


请参考以下链接,了解InstallAnywhere的替代方案,其中包括一些免费的选项(以及价格更为合理的商业选项):https://dev59.com/o3RA5IYBdhLWcg3w_C8w - Jonik

-1

我会将jar文件与其他依赖的jar、配置文件和文档一起压缩,并附上run.bat/run.sh。最终用户应该能够将其解压到任何位置,并在必要时编辑run.bat(在大多数情况下,无需编辑即可运行)。 如果您想要在开始菜单、桌面、系统托盘等位置创建条目,则安装程序可能很有用。

作为用户,我更喜欢解压并运行这种安装方式(请勿添加开始菜单条目)。然而,IT行业以外的人可能有不同的偏好。因此,如果应用程序主要面向开发人员,则可以使用zip-run.bat路线进行安装,而面向普通公众的应用程序则可以使用安装程序进行安装。


这对新手来说永远不会起作用。 - rhody

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