【发布时间】:2019-03-07 18:17:20
【问题描述】:
Java 8 和之前的版本有Java Web Start,当我们更改应用程序时它会自动更新它。 Oracle 建议用户迁移到jlink,因为这是新的 Oracle 技术。到目前为止,这听起来不错。这带来了许多好处:
- Windows、Mac 和 Linux 上的本机代码
- 代码模块化(虽然 Proguard 也这样做)
- 使用受支持的新技术。
问题:我找不到使用 jlink 自动更新的规范 Java 解决方案。
人们会认为 Java Web Start 可以继续使用,尤其是如果随便阅读this document。请注意,Java Web Start 继续在显着位置列出。但是有一个fly in the ointment:Oracle 正在弃用 Java Web Start。在 JDK 11 中删除它是 slated。那么,官方的前进道路是什么。如果做不到这一点,人们是否有一种标准的方式进行?
就本问题而言,以下内容超出范围:
- 每年向拥有功能丰富的企业解决方案的人支付巨额费用。要分发的应用程序已经打包到一个小于 50MB 的 jar 中。
- 强制用户运行 InstallShield 风格的应用程序重新安装新版本,然后在每次推送更新时手动卸载旧版本。那太像 1990 年代了。
- 将整个应用程序移植为 Web 应用程序,重写 UI 和客户端逻辑以适应浏览器并处理所有不兼容的问题。该应用程序的作者在GWT 上工作,并且确切地知道网络浏览器的功能。不幸的是,他们也知道所需的努力程度。
- 允许用户继续运行旧版本的应用程序。那也是1980年代。现代应用程序更新迅速,并且支持曾经发布的应用程序的每个版本是站不住脚的。这就是我父亲的 COBOL 应用程序必须处理的问题,他并不喜欢它。我希望技术有所进步。
- 继续使用 Java Web Start。直到/除非 Oracle 改变主意,Java Web Start 是一种注定失败的技术。
【问题讨论】:
-
它不仅“计划在 JDK 11 中删除”,它has been removed already(因为 JDK 11 已经发布一周了)。据我所知,
jlink允许您创建用于部署的自包含运行时映像,但它不提供部署本身,更不用说自动更新功能。这只是一项服务,Oracle 不再提供(不再提供)。 -
甲骨文可能不再提供这项服务,但这并不妨碍任何人/任何其他人做同样的事情......
-
也许你想试试 Getdown github.com/threerings/getdown。使用 Getdown,您实际上甚至可以将您需要的 JRE 与您的应用程序捆绑并更新,而无需依赖已安装的客户端 JRE。
-
没有 JRE 的用户?他们如何运行网络启动应用程序?使用 getdown,您可以将 JRE 与您的实际应用程序一起发布。无需在本地安装任何东西。但是,您需要为初始部署创建包含 JRE 的包。
-
medium.com/oracledevs/… 有一篇文章描述了这个过程,github.com/udaychandra/auto-updater-demo 有一个演示
标签: java deployment java-web-start java-9 jlink