如何分发Java应用程序
我想知道分发Java应用程序的各种选项 我知道你可以如何分发Java应用程序,java,jar,cross-platform,jvm,distribution,Java,Jar,Cross Platform,Jvm,Distribution,我想知道分发Java应用程序的各种选项 我知道你可以 分发源代码,让用户自己编译,或者提供make文件等 将其打包到一个JAR中,并具有自解压的归档 (我敢肯定,还有无数其他方式) 我希望得到一些关于最常见选项(我还没有想到的)的解释,特别是,它们是否要求用户拥有JVM,或者是否可以与JVM捆绑在一起?就个人而言,我不太喜欢由于缺少JVM而停止安装的安装程序。谁说应用程序需要安装程序,独立解决方案也可以 此外,值得一提的是如何处理跨平台分发、exe与dmg等问题 我提出这个问题的主要动机(我
- 分发源代码,让用户自己编译,或者提供make文件等
- 将其打包到一个JAR中,并具有自解压的归档
- (我敢肯定,还有无数其他方式)
正如我所写的,我认为捆绑JRE是不合法的[更新:它是合法的,仅供参考](而且也不是一个好的选择,因为您必须捆绑许多不同的操作系统/体系结构组合)。因此,唯一的其他方法是本机编译(抱歉,这对您没有帮助)。一般来说,您有几个选择:
1) Java Web Start
2) Run it as an applet
3) download and install.
您主要对选项3感兴趣。您可以为各种安装程序(InstallJammer是其中之一,但您还有其他安装程序)创建安装包。由于您考虑的是分发JVM(您可以这样做),因此针对每个目标平台,您将考虑不同的安装程序。对于简单的产品,我希望获得一个可执行的jar。看 对于任何大型产品,都需要安装程序。(InstallAnywhere、Install4J、LzPack等将帮助您创建一个应用程序)允许您轻松分发Java应用程序并捆绑JVM(尽管它本身不需要Java,所以正如您所提到的,您永远不会出错,因为最终用户在机器中没有JVM)。这是一个商业产品(diclaimer,我是最初的开发者),但我们对小型ISV有折扣,对开源项目有免费许可证。MySQL/Oracle、Jaspersoft、Alfresco、Pentaho和其他一些ISV都在使用基于Java的工具,这些应用程序已经被下载了数百万次,没有出现重大问题。试试看:)独立应用程序 在现代Java中,您可以为特定的主机操作系统生成一个带有捆绑JVM的独立应用程序 有关背景信息,请阅读Oracle白皮书,更新日期为2020-05 模块化 首先,模块化您的应用程序以支持。你可以在书籍、演示视频和许多博客文章中了解这一点 模块化的好处之一是,捆绑的JDK可以被剥离,只包括您在应用程序中实际使用的部分。这导致使用更少的存储和内存 获取一个Java实现 其次,获得一个Java实现,其许可条款满足您的需要。条款各不相同。有些是免费的,有些是商业产品 这是我制作的流程图,以帮助您选择 构建最终应用程序 第三,使用和等工具构建独立应用程序 这一过程的工具正在迅速发展。因此,可能会有更多的工具进入市场 捆绑的JDK具有针对特定主机操作系统的本机代码。因此,您需要为选择支持的每个部署平台单独构建应用程序 顺便说一句,请务必检查应用程序中包含的每个库的许可条款 备选方案:GraalVM
使用的本机代码的替代方法。这是最前沿的技术,所以要小心,但很有希望。+1用于可执行JAR。如果您需要补充文件或特殊VM参数(就像我对使用外部DLL的应用程序所做的那样),请为Windows提供批启动文件-.bat,或为linux/unix提供.sh,并将其打包到单个zip文件中。安装只需提取拉链即可。谢谢。从您的链接中,我还发现了JSmooth,它声称:“如果没有发现使用JSmooth的虚拟机[…]:包装器可以将它们重定向到网页,甚至更好,它们可以建议用户自动下载并安装Java环境”。你会说,安装了JRE后,JARs的最佳实践仍有可能优于这样的解决方案吗?@Adam不,这听起来更好,谢谢。很遗憾Sun/Oracle没有做过这样的事情。不过,我认为jar足以满足绝大多数情况。@SeanPatrickFloyd,作为
jar
isn分发