部署后如何维护 javafx 桌面应用程序

问题描述

我是 JavaFx 领域的新手,我从未将任何应用程序部署到任何客户端。我知道如何制作桌面应用程序,但我遇到了问题。

当我将应用程序部署到客户端机器时,我们知道更改是不可避免的,有时我的客户可能会要求我对现有应用程序进行一些更改,那么我该如何实现。

我是否应该在客户端机器上重新安装新的 javafx 应用程序以替换旧的应用程序(但这会完全混乱)还是有我应该知道的更好的方法?

解决方法

tl;博士

你问:

我是否必须在客户端机器上重新安装新的 javafx 应用程序

是的。

从用户的角度来看,将您的应用作为独立的“可双击”应用交付,就像任何其他原生应用一样运行。通过捆绑 JVM 来做到这一点。

任何这些变化:

  • 主机操作系统中的错误修复或更新
  • Java 中的错误修复或更新
  • 在捆绑的 Java 实现中修复或更新错误
  • 修复错误或更新您的应用代码库

...这意味着您需要使用捆绑的 JVM 和 OpenJFX 库构建您的应用程序的新版本,然后重新安装到用户的机器上。

重新安装应用可以由用户手动完成,由 Apple App Store 等数字分发平台自动完成,通过桌面管理工具在企业中自动完成,或者由商业应用安装程序工具半自动完成.

详情

您应该阅读 Oracle 白皮书,更新于 2020 年 5 月 11 日,Java Client Roadmap Update

Oracle 基本上不再期望 Java 安装在用户的机器上。现在,您应该在您的应用程序中捆绑一个 Java 运行时。这意味着您必须为您选择支持的每个主机操作系统(例如 macOS、BSD、Linux、Microsoft Windows)以及您选择支持的每个硬件平台(例如 AMD/Intel 和 ARM/Apple Silicon)构建应用程序版本.

不利的一面是,这意味着必须交付多个工件。从好的方面来说,您将准确控制用于运行您的应用程序的 Java 版本。

macOS Linux BSD Windows
AMD/Intel
ARM/苹果芯片

您还需要在您的应用中包含 OpenJFX 库。通过配置 MavenGradle 或具有依赖项管理功能的类似构建工具,您可以方便地将它们包含在您的项目中。

Java 9 为我们带来了 Java Platform Module System。这使您能够将 Java 实现与您的应用程序合并,但仅使用您的应用程序实际需要的部分。所以最终结果更小,因为留下了不必要的库。

工具不断得到改进和创新,用于打包您的应用。我不是最新的,但从这里开始:

此处发布了许多关于打包 JavaFX/OpenJFX 应用程序以进行部署的现有问题和解答。所以搜索以了解更多信息。请记住,该领域的最新技术目前正在迅速变化 - 请确保您获得最新的现代信息。

可能有商业应用安装程序工具供应商可以提供帮助,但我不知道目前的市场。

这种在应用程序中捆绑 Java 的做法在 macOS 上实际上是过时的做法。多年来,人们一直在通过 Apple App Store 发布应用程序。现在,这种做法正在成为跨平台的常态。

或者,如果您可以控制用户的机器,例如在企业环境中,您可以预先安装 Java 实现。至少有两家供应商提供了包含 OpenJFX 的 Java 实现:来自 BellSoft 的 LibericaFX 和来自 Azul Systems 的 ZuluFX

另一种替代方案,虽然是前沿技术,但使用 ahead-of-time compilation 生成带有 GraalVM 的原生应用。

其他资源:

  • OpenJFX home site
  • Gluon 公司,OpenJFX 的主要管理者。他们出售培训、咨询和支持服务来为您提供帮助。
  • 其他顾问也可能在 JavaFX 方面提供帮助。

您需要选择一个 Java 实现来与您的应用程序捆绑在一起。这是我制作的流程图以提供帮助。

Flowchart guiding you in choosing a vendor for a Java 11 implementation

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...