我想了解分发Java应用程序的各种选项。
我知道你可以
我希望对最常见的选项(以及我没有想到的选项)进行一些解释,特别是,他们是否需要用户拥有JVM,或者可以将其捆绑在一起 - 我个人而已我不太喜欢因缺少JVM而停止的安装程序。谁说应用需要安装人员,独立解决方案也很好。
另外,值得一提的是如何处理跨平台分发,exe与vs dmg等...
我对这个问题的主要动机(我很欣赏与其他人类似)是找到不需要用户安装JVM的解决方案 - 但为了完整性,我一般都会问。
非常感谢
答案 0 :(得分:5)
分发源代码并让 用户自己编译,或 提供make文件等。
对于开源项目来说这可能是好的,但对于任何商业项目来说都是非常不寻常的。我建议将它作为技术人员的选项,但也分发JAR
将其打包成JAR
我称之为最佳做法
并拥有自解压档案
我希望能有一些解释 最常见的选择(一个是我 没有想到),特别是, 他们需要用户拥有JVM, 或者可以捆绑一个 - 我个人并不太喜欢 由于缺乏而停止的安装程序 JVM。
我认为捆绑JRE并不合法。也就是说,没有Java,基于java的解决方案是行不通的。没有安装JRE,OpenOffice和许多其他人无法安装。我说那是可以理解的,也可以。
IzPack似乎是创建基于Java的安装程序的好方法。
我的主要动机 问题(我欣赏的是 与其他人相似)就是找 不需要用户的解决方案 已经安装了JVM
正如我所写,我认为捆绑JRE [更新:它是合法的,read this document以供参考]是不合法的(也不是很好的选择,因为您必须捆绑许多不同的OS /架构组合)。所以唯一的另一种方式是本机编译(不能帮助你,对不起)。
答案 1 :(得分:3)
InstallBuilder允许您轻松分发Java应用程序并捆绑JVM(虽然它本身不需要Java,因此您提到您永远不会得到错误,因为最终用户在计算机中没有JVM)。它是商业产品(diclaimer,我是原始开发人员),但我们有小型独立软件开发商和开源项目免费许可证的折扣。 MySQL / Oracle,Jaspersoft,Alfresco,Pentaho以及其他一些基于Java工具的ISV正在使用它,这些应用程序已被下载数百万次,没有任何重大问题。试一试:)
答案 2 :(得分:1)
一般来说,您有几个选择:
1) Java Web Start
2) Run it as an applet
3) download and install.
您主要对选项3感兴趣。您可以为各种安装程序创建安装包(InstallJammer是一个,但您有其他安装程序)。既然您正在寻找分发JVM(您可以这样做),那么您正在查看针对您所定位的每个平台的不同安装程序。
答案 3 :(得分:0)
对于简单的产品,我喜欢获得一个可执行的jar。见http://one-jar.sourceforge.net/
对于任何大型产品和安装人员都是必需的。 (InstallAnywhere,Install4J,LzPack等将帮助您创建一个)
答案 4 :(得分:0)
在现代Java中,您可以为特定的主机OS生成带有捆绑的JVM的独立应用程序。
有关背景信息,请阅读2020-05更新的Oracle白皮书Java Client Roadmap Update。
首先,将您的应用模块化以支持Java Platform Module System。您可以在书籍,演示视频和许多博客文章中了解这一点。
模块化的好处之一是捆绑的JDK可以简化为仅包含您在应用程序中实际使用的部分。这样可以减少存储空间和内存。
第二,获得Java的实现,其许可条款可以满足您的需求。条款有所不同。有些是免费的,有些是商业产品。
这是我为帮助您进行选择而制作的流程图。
第三,使用诸如jlink和jpackage之类的工具来构建独立应用。
此过程的工具正在迅速发展。因此,可能会有其他工具投放市场。
您捆绑的JDK具有针对特定主机OS的本机代码。因此,您需要为选择支持的每个部署平台分别构建应用程序。
顺便说一句,请务必检查您包含在应用程序中的每个库的许可条款。
使用ahead-of-time compile将GraalVM转换为本地代码的另一种方法。请注意,这是尖端技术,但是很有希望。