Java Web Start的替代方案? [关闭]

问题描述 投票:16回答:5

我们在生产中遇到了Java Web Start的巨大问题。我们害怕发布,因为每次我们这样做,帮助台都会收到来自1/3用户的电话,导致“无法启动”错误。很难说这是因为用户错误,下载过程中取消,网络连接不良还是其他任何问题。但底线是:

我们发现它非常不可靠。

部署和更新丰富的Swing应用程序有哪些替代方案?无论是免费的还是商业的,我对功能和稳健性更感兴趣。

可靠性是关键,但我还想拥有以下内容:

  • 安装一次,从像JWS这样的简单HTTP主机自动更新
  • 差异更新
  • 支持多种配置(想想可能有不同版本的应用程序或不同的启动参数的30个实例 - 每次构建30个工件会很好)
  • Win / Mac / Linux支持。希望这并不意味着我必须为每个实例维护3个构建。
java auto-update java-web-start
5个回答
6
投票

我感觉到你的痛苦,我在JWS中遇到的最大问题是可见性,即它在做什么,为什么要这样做。我们的大多数问题都与内部代理有关(Java似乎真的不喜欢验证代理),而且皱纹似乎暂时被解决了。尽管如此,我确实考虑过只写一个替代品。这并不像听起来那么疯狂,JWS做了很多我并不真正关心的事情,即与Web浏览器集成并检查JVM版本。请考虑以下情形:

  1. 您启动Java应用程序(启动应用程序)。此应用程序采用单个参数,该参数是JNLP文件的URL。
  2. 启动应用程序对URL进行哈希处理,并将其用作本地文件夹(存储库)的基础,用于存储应用程序的任何下载的jar文件。如果存储库不存在,它将创建它。
  3. 启动应用程序尝试下载URL指向的JNLP。如果它无法下载它,它将只启动存储库中的任何内容(可能警告用户)
  4. 如果它可以下载JNLP,解析它并列出任何需要下载的jar。如果您已经拥有jar,请使用Apache HttpClient之类的内容来确定服务器是否具有更新版本并在需要时下载。重要的是,任何下载都应存储在临时文件夹中。所有下载成功后,您可以将这些应用程序应用于本地存储库。理想情况下,您将备份已存在的内容以允许某种回滚过程。

与常规JNLP相比,这应该提供一些非常显着的优势:

  1. 可见性,您可以准确记录正在发生的事情
  2. 更好的故障模式:如果下载被中断,只需启动已经存在的版本(显然,如果在第一次下载时发生了这种情况,这将无法工作),如果您想告诉用户这样做,那么就这样做。
  3. 通过作为本地应用程序运行,你应该避免遇到签署jar的问题,老实说,我不了解签名罐子的Java Web Start安全模型,但似乎如果涉及不同的类加载器,JWS会抱怨它(我认为)

可悲的是,我无法解雇上述工作版本,我确实启动了原型但暂停了原型。我将来可能要回到它,在这种情况下,我很乐意分享完成的版本。

干杯,菲尔


2
投票

目前我们正在使用GetDown来处理我们的挥杆应用程序的分发。我们使用Tomcat来分发更新,使用GetDown来下载这些更新。它非常灵活和强大,并且比java WebStart更好,因为它为更改生成校验和,它可以节省带宽并下载刚更改的文件。

一个很好的教程:http://www.hascode.com/2012/05/creating-updatable-java-applications-using-getdown-and-the-getdown-maven-plugin/


1
投票

您可以使用安装程序:例如Install4j

您可以在此处找到安装程序列表:What are good InstallAnywhere replacements for installing a Java EE application?


1
投票

由于Oracle不推荐使用Java Web Start,我们正在考虑使用Microsoft的.NET Click Once来下载和启动我们的Java应用程序。

我们将有一个Click Once .application文件运行一个检测Java的MS程序,下载我们最新的jar文件,然后使用检测到的Java版本和Jar文件启动我们的Java程序。

当然,这只是Windows机器的解决方案,但我们的客户完全在Windows上,所以这适用于该环境。

MS点击一次:https://docs.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deployment


0
投票

你也可以试试Zero Install。它是跨平台(Linux,Win,Mac),提供jrd下载和自动更新,并具有良好的系统集成。

我眼中的缺点是它不容易处理..

http://0install.net/

© www.soinside.com 2019 - 2024. All rights reserved.