[英]How do I upgrade to jlink (JDK 9+) from Java Web Start (JDK 8) for an auto-updating application?
Java 8和更早版本具有Java Web Start ,当我们更改应用程序时,它将自动更新应用程序。 Oracle建议用户迁移到jlink ,因为这是Oracle的新技术。 到目前为止,这听起来不错。 这带来许多好处:
问题:我找不到用jlink自动更新的规范Java解决方案。
有人会认为Java Web Start可以继续使用,特别是如果一个人随便阅读本文档时 。 请注意,Java Web Start继续被列在显着位置。 但美中不足的是 :Oracle正在弃用Java Web Start。 它计划在JDK 11中删除。因此,前进的正式方向是什么。 如果失败,人们是否有标准的前进方式?
出于这个问题的目的,以下内容不在范围内 :
在过去的项目中,我遇到了类似的问题。 我们需要从Webstart迁移到另一种技术。
第一种方法是安装IcedTea 。 它直接与AdoptOpenJDK项目捆绑在一起。
但是据我了解的问题,Java不再打算像这样在客户端安装,我们也不希望所有客户都遇到问题。
然后,我们的解决方案是构建自己的特定可执行文件,该文件连接到服务器,从服务器端请求环境设置,然后下载并提取JLink Java。 因此,我们可以使用旧技术并将其包装在可执行文件中。
完成的最后一件事是在调用jnlp-URL时重定向到Executable的下载位置。
您使用Maven吗?
我已经用maven解决了类似的问题(我需要更新EAR)。
我的主应用程序(ear包)有一个pom.xml,其中列出了相关性和存储库。
依赖项具有<version>
标记,并带有一个范围( 文档 ),如本示例中所示
<version>[1.0.0,)</version>
这意味着:获得1.0.0或更高版本的依赖关系。 (您还可以为版本[1.0.0,2.0.0]设置上限,因此,如果开发新版本,则该版本不会在旧应用中使用)
在存储库部分,我添加了我的个人存储库。
现在,在远程机器中,我只需要用maven重建我的耳包:编译器下载jar的较新版本并将其放在一起。
您需要一个系统来检查是否有较新的依赖项版本,并警告用户更新应用程序并锁定其工作(如果不更新,则无法工作)。 也许您需要一个小应用程序来使用户轻松进行重建过程。 这是1990年代,但是许多桌面应用程序都以这种方式工作
专业版
控制
您需要在远程计算机上构建应用程序,因此客户端必须具有JDK并可以访问您的存储库(如工件)。
您必须在不同的jar中编写代码,并将它们像依赖项一样添加到主归档中。
您必须每次更改JAR版本并在存储库中发布(这可能是一个好习惯)
在2019年5月发表评论观看了OpenWebStart项目。
现在(2019年10月)是时候认真考虑OpenWebStart了。 虽然没有完整的功能 ,OpenWebStart的
α+β
版本现已可供下载下一个“以GPL的Classpath例外”许可。
OpenWebStart 技术详细信息页面指出:
OpenWebStart基于Iced-Tea-Web和JSR-56中定义的JNLP规范。 它将实现Java Web Start最常用的功能,并且能够处理任何典型的基于JWS的应用程序。 我们计划从Java 11开始支持所有将来的Java版本。除了Java 11,OpenWebStart的第一个发行版还将支持Java 8。
该页面继续指出,OpenWebStart将支持具有自动更新功能的交互式安装程序和非交互式安装程序。 将支持某些JNLP功能,并将包括Java控制面板的替代品。 功能表中提供了计划功能1及其实现状态的更全面列表。
1-如果您的要求不在其功能列表中(例如,jlink支持),则可以与OpenWebStart团队联系,并提供适当的激励措施(例如,向开发人员付款)以为您实现该功能。 他们还为付费客户提供该软件的商业版本。
免责声明:我与OpenWebStart项目,公司(Karakun)或项目发起人没有任何关系。 这不是建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.