Java Web Start替代方案

15
我们正在寻找一种替代Java Web Start的方案,它可以有效地完成相同的任务,但实现更好。我们遇到了很大的麻烦。我们有几个办公室的XP桌面,都略有不同,到目前为止只有少数几个可以在没有严重调整的情况下正常工作。问题与代理设置不兼容有关(在Java控制面板中使用直接连接可使其正常工作),拒绝运行时参数如“-Xmx”被设置但在它们没有被设置时运行良好(直到内存用尽),以及其他我们无法解决的奇怪问题。
Web Start的工作方式正是我们想要的,即连接到具有应用程序的服务器,下载任何已更改的内容,保持JAR文件的缓存等。这里的其他团队使用'clickonce'来为他们的C#应用程序提供服务,它实际上也可以做到同样的事情,但似乎没有那么多麻烦。
我相信我们不是唯一遇到这个问题的人,但是搜索周围并没有显示出任何替代方案。我们已经研究过编写本地应用程序的存根,它本质上只是一个URLClassLoader,可以在网络上动态加载我们的应用程序,但不幸的是,从其他办公室进行这样的操作太慢了。有人有什么想法吗?
谢谢
更新
如果有人好奇最终发生了什么,我们给Web Start再多等了一个月左右,但仍然遇到问题,所以我们实现了自己的版本。它基本上只是一个存根,具有您指向Web服务器的URL类加载器。它不到200行代码,并且已经完美地工作了几个月。虽然不是理想的选择,但在有人改进Web Start之前,我们会坚持使用它。
更新2018

因此,几年后我正在处理一个与之前相同的问题的新项目。这次我们使用getdown而不是编写自己的webstart实现。我们发现它比web start有很大的改进,并且它一直在为我们良好地工作。


我认为你应该写下你实际遇到的问题,因为我相信你现在最好的途径是解决它们,而不是迁移到另一种技术,比如Eclipse更新站点。 - Thorbjørn Ravn Andersen
目前我们只是逐个解决问题,但我认为可能有一种不那么麻烦的替代方案。然而,人们的建议是坚持使用Web Start,这是令人鼓舞的,我想它一定适用于某些人。 - David
Java RMI怎么样?制作一个依赖于一组类并从某个中央服务器远程获取其实现的GUI应用程序。有一个关于此主题的Java SE教程。 - Martin Andersson
@Martin Andersson,你在开玩笑吧,要在互联网上使用Java RMI?即使是在局域网中也不太有趣,这就是为什么会有那么多好的替代方案被开发出来的原因。 - Diego C Nascimento
我们处于同一艘船上,正在努力放弃JNLP/JWS。不是很喜欢编写自己的加载器,但可能不得不这样做。听到你从未找到替代品感到失望。 - Brian Knoblauch
5个回答

10

我们公司在使用JRE 1.6更新19和20时,也遇到了Webstart的问题。我们的问题主要是围绕混合代码安全警告展开的(所有内容已经正确签名,但问题仍然不定期出现)。

无论如何,我偶然发现了threerings的getdown。虽然我还没有尝试过它,但似乎很有前途。https://github.com/threerings/getdown/wiki


我们也刚刚发现了这个,希望它是我们正在寻找的东西。还有一个令人鼓舞的消息,就是threerings最初也使用Web Start,但最终放弃了并编写了替代方案。 - David
1
混合代码问题真的很烦人。 - Thorbjørn Ravn Andersen
我知道在JDK1.6_20左右发现了一个重大的Twitter bug,导致JDK中的SSL发生了变化。我不记得细节了,但如果我没记错的话,可能与证书验证或主机名验证器有关。我认为如果你扫描一下发布说明,你可能会找到一些线索。 - djangofan

5
我在公司广泛使用JWS。唯一真正的问题出现在您尝试从缓存中运行JWS并且客户端机器刚刚升级到较新版本的Java时。应用程序将无法启动,显示“无法启动”、“未找到缓存文件”或类似的错误。
我有两种方法来解决这个问题:要么清除缓存并重新安装应用程序,要么让他们再次从我的网站点击URL(对于我的用户来说最简单)。在这两种情况下,问题都会自行解决。这就解释了为什么这里的几位开发人员从未遇到过这个问题,很可能是因为他们的用户总是点击URL而不是已安装的启动器。
作为解决方法,在我的某些关键任务应用程序中,我使用以下脚本之一:
java -jar netx.jar -jnlp http://url/to/my/launch.jnlp
javaws http://url/to/my/launch.jnlp 其中netx是第三方库。

这不是最美观的解决方案,但对我来说百分之百有效。

现在,如果我能弄清楚如何让桌面快捷方式不出问题就好了……但那是另一个时间的讨论。


你是否有足够的实际经验来评估netx? - Thorbjørn Ravn Andersen
看起来NetX在2013年左右就被放弃了。 - Stephen M -on strike-

2

我们也经常使用JWS,从1-6_19版本开始,它真的开始让人头疼了。有些应用程序启动得很快,但有些却没有启动,然后我们更新到了1-6_20,情况好像反过来了。然后又更新到了1-6_21/2/3/4,问题只是不断地出现。我们可能会放弃使用它。看起来自从Oracle接手以来,开发团队已经做了一些改变。否则,就没有其他解释能够使JWS变得更糟。


2

我觉得你们所有的问题都很奇怪。我曾经在一家公司工作,使用JWS分发其交易软件,在那里一切运行得非常良好。你们有没有考虑在放弃整个技术之前看看非官方Java Web Start FAQ?


2
获取支持合同可能是个好主意...(声明:我在Oracle工作。) - Tom Hawtin - tackline
1
注意:所链接的常见问题解答非常陈旧。Java 6 update 10之后,Sun对JWS进行了一次重大改进。 - Thorbjørn Ravn Andersen
1
我们一直在使用FAQ,并且为了获得所有新的改进,我们正在使用Java 6更新20。问题是存在如此多的问题,而实际上不应该有这么多问题,它应该非常简单明了。我们的选择是继续像过去那样逐个修复问题,但无法确定要持续多长时间,或者放弃这项技术选择其他方案。 - David
2
多年来,我发现了许多关于JNLP的问题,最终已经达到了我的容忍极限。缓存问题会导致新的更新覆盖正在运行的程序,参数传递也存在问题(7U45),自签名证书的废弃更是让我受够了。 :-) - Brian Knoblauch
@BrianKnoblauch,你选择用什么来替代它了吗? - Thorbjørn Ravn Andersen
显示剩余4条评论

2
GetDown似乎也存在问题。我刚刚尝试了一些游戏网站,它们被用作示例展示。它们都无法在我的Firefox中加载。也许是我的Java和Firefox集成的问题?我安装了JRE 7 32位版本,之前安装过JDK 1.6 64位版本。
通常,Web Start的问题和用户体验不佳往往与Java在用户机器上的安装方式有关。在Windows上,我注意到如果您先安装较新版本的Java后再安装旧版本(期望两者共存),我开始遇到运行小程序和WS应用程序时出现问题。

我同意你的看法。我从未成功使用GetDown安装软件。它不能实现它所声称的功能。即使系统上只安装了一个JDK,它也无法正常工作。 - gouessej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接