Java Webstart的反对意见?

20

自从Adobe AIR发布以来,我一直在想为什么Java Web Start过去没有受到更多关注,因为在我看来它们非常相似,但Web Start已经出现了很长时间。

这主要是由于Sun的营销不好,还是除了需要安装适当的JVM之外还有其他技术方面的问题?您是否使用Web Start有不良经历?如果有的话,请分享一下。在使用Web Start分发应用程序时,您有什么建议?

6个回答

20
在我们公司中,我们使用Java Web Start来部署Eclipse RCP应用程序。尽管设置很麻烦,但一旦安装好了就非常好用。因此,我唯一能提出的建议是先从小做起,先部署一个简单的应用程序,以掌握技巧。如果没有使用JWS的经验,试图部署一个已经完成的完整产品会很快变得复杂。
另外,学习如何向JWS应用程序传递参数是进行调试的宝贵方法。设置环境变量JAVAWS_VM_ARGS允许将任何任意属性设置到Java虚拟机中。在我的情况下:
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4144
有助于在启动过程中检查问题(suspend=y)。
我认为Java Web Start被接受度不高的主要问题在于它相对难以设置。此外,还有这种不协调之处:当你有一个桌面应用程序时,人们希望有一个可以双击的安装程序;当你有一个Web应用程序时,人们希望能够直接在浏览器中使用它。Java Web Start 两者都不是……
尽管如此,它在Intranet中被广泛使用。

7

我在一家银行的内部网络工作已经有5年了,我的部门开发并分发了大量Java Web Start应用程序,这些应用程序在全世界范围内使用。我认为Java Web Start具有桌面应用程序(易于开发,用户界面丰富,客户端机器处理能力强)和互联网应用程序(易于部署和升级)的优点。

我真的很喜欢Java Web Start。


4

以下是来自mindprob的列表:

Java Web Start应用程序启动非常缓慢。监视器为自身和每个应用程序加载新的JVM。应用程序始终在Web上检查更新,下载并处理整个新的JNLP文件,而不仅是检查其日期。但是,如果检查新版本需要80秒左右的时间,则意味着您可能遇到代理服务器的问题。启动javaws.exe,单击编辑⇒首选项⇒网络设置⇒直接。您不希望JWS尝试使用Google Accelerator代理。还要在IE中检查,单击工具⇒Internet选项⇒连接⇒LAN设置,并确保一切都符合您的期望。
更新所需的时间与原始应用程序下载几乎相同。几乎没有任何巧妙方法来使更新紧凑。
它需要在ISP上运行自定义代码,以正确提供jardiff文件或使用即将推出的pack200超级压缩。
自从最初发布以来,它几乎没有改变。它可能是另一个被遗弃的产品。然而,Sun在一年左右没有发生任何事情之后发布了一个新的beta 1.2版本,并将其集成到JRE中,因此我们将看到它是否再次受到青睐。他们忽视了一些主要问题,例如证书OK隐藏在闪屏后面,并且需要分别对每个jar进行确认。即使它被遗弃,也不会发生太可怕的事情。除非您编写未签名的JWS应用程序并使用JWS沙箱,否则您的JWS应用程序将独立运行良好。
它需要在ISP和客户端浏览器中特殊配置JNLP MIME类型。这两者都不在开发人员的直接控制范围内。
如果您有紧急更新,则无法强制在再次运行应用程序之前安装它。
它需要一个严格的方案来为客户端机器分配硬盘空间,具有以下属性:
目录的名称必须避免与其他供应商的名称冲突。它们应该包含应用程序的主要包名称。
名称必须对最终用户有意义。他们应该是他可以记住,查找和键入以查找桌面工具文件的内容。
方案必须提供一个地方,既适用于每个用户,又适用于每个应用程序文件。
程序应在任何平台上运行,无需修改以处理查找其文件。

4
我曾在JWS中做过一个项目,启动起来非常麻烦。更糟糕的是,我并没有涉及整个互联网,只是一个小应用程序,只有我们办公室的几个人要使用。在配置服务器和帮助他们在客户机上设置应用程序时,我不止一次地感到恶心。我认为AIR现在越来越受欢迎(尽管我不知道它会走多远),因为它有人们真正想使用的应用程序(说出你最喜欢的JWS应用程序...好了,我在等待)。我仍然不是AIR工作方式的忠实粉丝,但这比JWS好多了。

3
Java Web Start是启动大型Java应用程序的正确方式,因为它允许轻松更新和安装/下载应用程序,并且可以提供比Java小程序更好的UI / UX。

但是,使用常见浏览器默认设置从网页启动Java Web Start应用程序存在一些障碍:

  1. Sun/Oracle未能创建可靠的浏览器集成。例如,参见http://crbug.com/10877中有关Google Chrome / Chromium的例子。基本上,Java插件未能实现所需的NPAPI内容,以便Firefox和Chrome可靠地将MIME类型application/x-java-jnlp-file转发到javaws / javaws.exe二进制文件。

  2. Sun/Oracle未能为Java Web Start .jnlp文件获取真正的注册MIME类型。 application/x-前缀在技术上意味着草案或私有。

  3. Sun/Oracle未能在意图是让Java Web Start处理应用程序下载和启动时使用URL方案而不是MIME类型。例如,如果不使用URL(如https://example.com/app/launch.jnlp),而是使用javaws://example.com/app/launch.jnlp来启动Java Web Start,则事情会更加顺利。这是因为在这种情况下,Web浏览器甚至不需要加载.jnlp文件,它只是将完整的URL传递给方案处理程序(这将是javaws二进制文件)。

注意到重复的部分(“ Sun/Oracle failed ... ”),你就不会再想知道为什么Java Web Start从未得到广泛应用了。最大的遗漏是如何获得一个网页链接,可以可靠地启动给定的 .jnlp 文件的 javaws 二进制文件。那 应该 在技术上非常容易(只需在安装 javaws 二进制文件时注册新的URL方案),但Sun / Oracle未能这样做。我个人认为,整个混乱是由于试图干扰MIME类型而不是简单地使用新的URL方案所导致的。连MIME类型的东西都做得很糟糕,真是让人大声疾呼。

如果您仍然希望使用Java Web Start,只需为正确配置浏览器以解决Sun / Oracle留下的问题准备好良好的文档。好处是它只需要完成一次,它将适用于任何使用Java Web start的站点。坏处是通常浏览器从未被配置为正确处理 .jnlp 文件,因此用户不想配置其浏览器仅仅是为了使用您的应用程序而让受到“难以使用的技术”的指责。我提到过是Sun / Oracle没有自动配置浏览器吗?


0

我的经验:
我在2006年使用过它,用于银行的内部应用程序。

第一次下载很顺利, 但是当想要推出新版本时, JAR文件的缓存无法正常工作, 因此新文件无法推送到客户端。

花了一周时间尝试修复这个问题,但没有成功。


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