如何打包Java桌面应用程序?

时间:2011-10-27 11:38:07

标签: java distribution

我正在开发一个简单的桌面java应用程序。我想尽可能无缝地为最终用户安装。例如。类似于Minecraft的分布方式 - OS X的简单可执行文件和Windows的EXE文件。

我应该使用什么工具?

8 个答案:

答案 0 :(得分:14)

啊哈!我也有这个问题。您的Java应用的用户必须安装JRE 才能运行它 您可以告诉他们先安装Java,或者<{>>使用您的应用分发JRE,如Processing所示。 但请注意,如果包含JRE,则打包的程序会很重。而且,如果您想这样做,用户需要为他们的平台下载适当的包。

可执行Java Wrappers

他们将您的Java应用程序作为输入,并将 wrap 包装在可执行文件中(对于指定的平台)。您可以根据需要自定义它们; 如果用户没有安装Java,则会打开下载页面。

一些例子是Launch4JJSmoothJar2EXE

安装程序

它们是独立的应用程序,配置为将您的应用程序文件复制到用户的计算机,并(可选)创建快捷方式。

有些安装程序是用Java编写的,因此它们是多平台的。在这种情况下,安装程序为.jar 其他一些是依赖于平台的,但你的优点是你不需要包装它们。

Java安装程序: IzPackPackletPackJacketAntigen,...

Java Web Start

这是一项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)

在您的应用程序中捆绑JVM

部署基于Java的桌面应用程序的现代解决方案是将JVM与您的应用程序捆绑在一起,就像其他“常规”应用程序一样,以双击包的形式交付给用户。将JVM视为要结合到最终应用程序中的另一个依赖项。

了解以下信息:

您可以以这种方式发布JavaFXOpenJFX)应用程序,以及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 淘汰

其他一些答案讨论了 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。

https://github.com/wiverson/desktop-spring-boot

答案 5 :(得分:1)

你在寻找这样的东西:

http://www.regexlab.com/en/jar2exe/

这允许最终用户在不安装的情况下运行.exe。

答案 6 :(得分:1)

有许多选项 - Java Web Start,第三方安装程序等。

请查看http://mindprod.com/jgloss/installer.html以获取解释。

答案 7 :(得分:0)

我认为您正在寻找IzPak。甚至还有一个名为PackJacket

的GUI