我正在开发一个简单的桌面java应用程序。我想尽可能无缝地为最终用户安装。例如。类似于Minecraft的分布方式 - OS X的简单可执行文件和Windows的EXE文件。
我应该使用什么工具?
答案 0 :(得分:14)
啊哈!我也有这个问题。您的Java应用的用户必须安装JRE 才能运行它 您可以告诉他们先安装Java,或者<{>>使用您的应用分发JRE,如Processing所示。 但请注意,如果包含JRE,则打包的程序会很重。而且,如果您想这样做,用户需要为他们的平台下载适当的包。
他们将您的Java应用程序作为输入,并将 wrap 包装在可执行文件中(对于指定的平台)。您可以根据需要自定义它们; 如果用户没有安装Java,则会打开下载页面。
它们是独立的应用程序,配置为将您的应用程序文件复制到用户的计算机,并(可选)创建快捷方式。
有些安装程序是用Java编写的,因此它们是多平台的。在这种情况下,安装程序为.jar
其他一些是依赖于平台的,但你的优点是你不需要包装它们。
Java安装程序: IzPack,Packlet,PackJacket,Antigen,...
这是一项Java功能,可让您轻松运行应用程序。你给他们一个.jnpl
文件,
他们打开它,Java下载最新版本的应用程序并运行它。没有包装麻烦!
查看完整的资源列表here。
答案 1 :(得分:4)
Java Web Start我认为你正在寻找的选择......
答案 2 :(得分:3)
跨平台应用的最佳安装。在Java Web Start中可以找到GUI。引用部分链接文档:
JWS提供了许多吸引人的功能,包括但不限于启动画面,桌面集成,文件关联,自动更新..
..以特定于操作系统的方式启动软件。
将快捷方式(带图标)添加到桌面或启动/程序菜单(桌面集成)与您可以获得的平台相同。
..将在没有Java的情况下运行,并提供安装JRE(如果当前不存在)
使用deployJava.js
,链接在“另请参阅:”下的2 nd 最后一个列表项中。
如果JWS集成并且看起来像本机程序,那么每个操作系统不需要单独的程序包。
使用原生PLAF将是一个良好的开端。
答案 3 :(得分:3)
部署基于Java的桌面应用程序的现代解决方案是将JVM与您的应用程序捆绑在一起,就像其他“常规”应用程序一样,以双击包的形式交付给用户。将JVM视为要结合到最终应用程序中的另一个依赖项。
了解以下信息:
您可以以这种方式发布JavaFX(OpenJFX)应用程序,以及Swing应用程序(JavaFX的前身)。
此方法的一个优点是,您确切知道正在使用什么JVM来运行您的特定应用程序。当然,这也意味着,当JVM更新包含相关修复程序时,您必须发布应用程序的新版本。您的用户不再关心下载,安装和升级JVM的问题,因为这现在由开发人员负责。
此方法的一个缺点是,您必须构建,测试和分发应用程序的单独二进制文件,每个二进制文件对应一个平台(macOS,MS Windows,BSD,Linux等)。
另请参阅my Answer的相关问题How to use jdk without jre in Java 11。
此方法的最先进的变体是使用JIT及其GraalVM构建应用程序的提前编译(与native image generator相比)的本机代码版本
可能与之相关:Oracle的莱登计划。参见首字母announcement by Mark Reinhold,并查看this article,2020年5月7日。
其他一些答案讨论了 Java Web Start 。请注意,Oracle正在逐步淘汰 Java Web Start 和 Java Applets 技术。请参阅他们的白皮书Java Client Roadmap Update,日期为2020-05-11。一种可能的选择是被称为OpenWebStart项目的Java Web Start的开源实现。
答案 4 :(得分:2)
如果您使用的是 Java 16,jlink 和 jpackage 将满足您的需求 - 构建桌面应用程序和安装程序。
这是一个 GitHub 模板,它使用 Maven 构建一个小型/精简的 JVM + JavaFX 应用程序。它使用 Java 模块和 jlink 来生成小型 JVM,但使用正常的类路径来运行您的应用程序。 GitHub Actions 用于生成适用于 macOS、Windows 和 Linux 的安装程序。
https://github.com/wiverson/maven-jpackage-template
这是模板的另一个 (WIP) 版本,下面有一个小的 Swing UI 和 Spring Boot - 没有 JavaFX。
答案 5 :(得分:1)
答案 6 :(得分:1)
有许多选项 - Java Web Start,第三方安装程序等。
答案 7 :(得分:0)
我认为您正在寻找IzPak。甚至还有一个名为PackJacket
的GUI