如何从 Java Web Start (JDK 8) 升级到 jlink (JDK 9+) 以实现自动更新应用程序?

2023-12-31

Java 8 及之前的版本有Java网络启动 https://www.java.com/en/download/faq/java_webstart.xml,当我们更改应用程序时,它会自动更新应用程序。 Oracle 建议用户迁移到jlink https://docs.oracle.com/javase/9/tools/jlink.htm,因为这是新的 Oracle 技术。到目前为止,这听起来不错。这有很多好处:

  1. Windows、Mac 和 Linux 上的本机代码
  2. 代码的模块化(尽管 Proguard 也这样做)
  3. 使用新的、受支持的技术。

问题:我找不到使用 jlink 自动更新的规范 Java 解决方案。

人们可能会认为 Java Web Start 可以继续使用,尤其是如果人们不经意地读到这个文件 https://docs.oracle.com/javase/10/deploy/overview.htm#JSDPG-GUID-A74B325E-2EB1-49EE-B86D-8AAA1B6D6C3A。请注意,Java Web Start 继续列在显着位置。但有一个美中不足 https://www.oracle.com/technetwork/java/javase/9-deprecated-features-3745636.html#JDK-8184998:Oracle 正在弃用 Java Web Start。它是slated http://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf在 JDK 11 中删除。那么,官方的前进方向是什么。如果做不到这一点,人们是否有一个标准的方法来进行?

就本问题而言,以下内容超出了范围:

  • 每年向拥有功能丰富的企业解决方案的人支付巨额费用。要分发的应用程序已打包到小于 50MB 的单个 jar 中。
  • 强制用户运行InstallShield样式的应用程序来重新安装新版本,然后在每次推送更新时手动卸载旧版本。那太90年代了。
  • 将整个应用程序移植为 Web 应用程序,重写 UI 和客户端逻辑以适应浏览器并处理由此带来的所有不兼容性。该应用程序的作者致力于GWT http://www.gwtproject.org/并准确了解网络浏览器的功能。不幸的是,他们也知道需要付出多大的努力。
  • 允许用户继续运行旧版本的应用程序。那也是 1980 年代的事了。现代应用程序更新速度很快,并且支持曾经发布的应用程序的每个版本是站不住脚的。这就是我父亲的 COBOL 应用程序必须处理的问题,但他并不喜欢它。我希望技术有所进步。
  • 继续使用 Java Web Start。除非 Oracle 改变主意,否则 Java Web Start 是一项注定失败的技术。

2019年5月评论观看开放网络启动 https://openwebstart.com项目。

现在(2019 年 10 月)是时候认真考虑 OpenWebStart 了。虽然还没有功能齐全 https://openwebstart.com/feature-table/, alphabetaOpenWebStart 现已发布可供下载 https://openwebstart.com/download/根据“带有类路径例外的 GPL”许可证。

OpenWebStart技术细节 https://openwebstart.com/technical-details/页面状态:

OpenWebStart 基于 Iced-Tea-Web 和 JSR-56 中定义的 JNLP 规范。它将实现 Java Web Start 最常用的功能,并且能够处理任何典型的基于 JWS 的应用程序。我们计划从 Java 11 开始支持 Java 的所有未来版本。除了 Java 11 之外,OpenWebStart 的第一个版本还将支持 Java 8。

The page goes on to state that OpenWebStart will support interactive installers with auto-update, and non-interactive installers. Some JNLP features will be supported, and it will include a replacement for the Java Control Panel. A more comprehensive list of planned features1 and their implementation status is provided in the feature table https://openwebstart.com/feature-table/.


1 - If you have a requirement that is not on their feature list (e.g. jlink support), you could contact the OpenWebStart team, and offer a suitable incentive (e.g. money to pay developers) to implement the feature for you. They also offer commercial versions of the software for paying customers.


Disclaimer: I have no connection with the OpenWebStart project, the company (Karakun) or the project sponsors. This is not a recommendation.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Java Web Start (JDK 8) 升级到 jlink (JDK 9+) 以实现自动更新应用程序? 的相关文章

随机推荐

  • 在 jQuery Mobile 中加载大型嵌套列表的最快方法是什么?

    我有一个大型嵌套数组 是通过在 PHP 中解析 CSV 文件生成的 我让它以 JSON 格式输出 并让我的 jQuery Mobile 站点获取它 然后将其解析为 DOM 列表 ul li 这在我的桌面浏览器上运行良好 但在我的移动设备上似
  • 本地主机拒绝连接 - MAMP Pro

    似乎有几个类似的问题但找不到答案 一小时前 以及之前的几个月 一切正常 看起来更新到 XCode 9 2 后一切都停止了 我刚刚更新到 MacOS High Sierra 10 13 2 因为其中包含一些 Apache 更新 但它没有解决问
  • Android 中的可滚动选项卡样式

    我想实现一个带有两层选项卡的导航 类似于此 但是 我找不到如何为可滚动选项卡提供这种外观 活动选项卡的标题居中 其他选项卡推到两侧 没有分隔符或下划线 我很确定我以前见过这种可滚动选项卡样式 所以我想知道它是否只是一个设置或者可能是第三方库
  • Android 最近的应用程序缩略图

    我的应用程序在 ICS 和 JB 设备上的最新应用程序列表中显示不正确 缩略图被剪切 扭曲 有时我的应用程序会出现完全不同的应用程序的屏幕截图 某些活动可能不会显示 尽管它们没有标记为从近期排除 可能出现什么问题以及我应该如何解决该问题 N
  • 向 Kibana 仪表板应用只读权限?

    有没有办法在与其他人共享 kibana 仪表板时设置某种权限 我担心有人会删除它或进行更改并保存它 我用谷歌搜索但没有找到任何东西 自从提出这个问题以来 发生了很多事情 自 5 月份起 基于角色的访问控制现已在社区版中提供 https ww
  • yargs 仅采用命令行输入字符串的第一个单词

    我正在教程中开发一个 Node js 命令行天气应用程序 我意识到当我输入一个字符串作为输入时 仅采用第一个单词 该字符串被拆分为一个单词数组 并且仅返回第一个单词 app js const yargs require yargs cons
  • iPhone - 如何识别我的应用程序的 iTunes 用户

    有一些应用程序似乎可以识别 iPhone 的 iTunes 用户 我需要开发一个支持 订阅 类型的应用内购买的应用程序 Apple 希望我的应用程序在每个用户的设备 iPhone iPod iPad 上授予订阅权限 为此 我可以构建一个服务
  • 创建表命令 SQL 缺少右括号

    创建下表时 我收到错误消息 ORA 00907 缺少右括号 create table CustomerOrder CustomerOrderNumber NUMBER 15 CONSTRAINT Customer Order Number
  • 如何在 F# 中实现 beta 缩减函数?

    我正在用 F 编写 lambda 演算 但我一直坚持实现 beta 约简 用实际参数替换形式参数 lambda x e f gt e f x 使用示例 lambda n n 2 3 7 gt n 2 3 7 n gt 7 2 3 所以我很想
  • html如何将H1、H2等设为链接?

    将 h1 h2 等标题转换为链接的正确代码是什么 search engines标题和链接的索引文本 Is it a href h1 heading h1 a or h1 a href heading a h1 谁能解释为什么 每这里 htt
  • 我可以使用资源字符串作为包名称吗?

    这样的事情可能吗
  • Vaadin 23 错误:找不到模块“@vaadin/build-status-plugin”

    我正在尝试从 Vaadin 18 升级到 Vaadin 23 执行升级说明中列出的步骤后 我在获取前端构建时遇到了大量问题 最新的阻止程序是启动应用程序后 npm 运行 但我看到以下错误 我检查了node modules文件夹 build
  • Go模板和函数

    在我的 go 代码中我经常使用if像这样 if user user Registered go 模板中的等效代码是 if and User User Registered end 不幸的是 如果模板中的代码失败 User is nil 在g
  • 将 NSDecimalNumber 转为负数

    我正在寻找一种方法来扭转NSDecimalNumber乘以负数 1 decNumber is the one I would like to turn negative NSDecimalNumber decNumber values ob
  • getter 是否应该返回对象实例的副本以避免副作用?

    我想获取从类的函数返回的值 在我的班级里 public class MyClass private Color color new Color 0f 0f 0f 1f public Color getColor return this co
  • 多维 np.argmax?

    我有一个形状为 n n g 的 3D 数组 并且我需要每个 n n argmax 即结果应该是每个长度为 g 的两个索引向量 x y 直观的解决方案是 array np random uniform size 5 5 1000 np arg
  • Node.js、(Hi)Redis 和 multi 命令

    我正在使用 node js 和 redis 并通过此命令安装了hiredis 库 npm install hiredis redis 我在这里查看了多个示例 https github com mranney node redis blob
  • 使用调查权重时如何为 Logit 模型生成边际效应?

    我通常使用 mfx 包和 logitmfx 函数生成 logit 模型边际效应 然而 我当前使用的调查具有权重 由于某些人群中的过度采样 这对样本中 DV 的比例有很大影响 而 logitmfx 似乎没有任何方法包含权重 我已经用 svyg
  • PhantomJs 脚本中的 Ajax 请求

    Problem phantomJs 脚本中对本地页面的 Ajax 请求不起作用 无响应 问题 我怎样才能让它发挥作用 有什么想法或可能的解决方案吗 描述 我正在运行 phantomJs 脚本 我需要访问另一个页面 本地 中的 php 函数提
  • 如何从 Java Web Start (JDK 8) 升级到 jlink (JDK 9+) 以实现自动更新应用程序?

    Java 8 及之前的版本有Java网络启动 https www java com en download faq java webstart xml 当我们更改应用程序时 它会自动更新应用程序 Oracle 建议用户迁移到jlink ht