我最近使用过Java Web Start应用程序。我使用我正在查看的页面中的嵌入式jnlp链接从我的Web浏览器启动它。该应用程序已下载,启动并正常工作。它可以访问我的本地文件系统,并在重新启动之前记住我的偏好。
我想知道的是,为什么Java Web Start应用程序不是Web上复杂应用程序的更流行的交付格式?为什么开发人员经常花费大量时间和时间。能够使用Java和Linux更轻松地传递桌面应用程序的强大功能,从而在html / javascript中复制桌面功能。 Java Web Start?
我知道在某些企业环境中,例如银行业务,它们是向客户提供复杂交易应用程序的相对流行的方式,但为什么它们在整个网络上并不普遍?
(为了便于讨论,我们假设一个世界:下载源是“可信的”,应用程序是“已签名”(即没有安全问题),下载速度快(加载时间快),开发人员知道Java(在数字他们知道html / js / php))。
答案 0 :(得分:15)
我认为原因不是应用程序的安全性或启动时间。在找出根本原因之前,让我们先了解一下幕后的情况。
Java控制面板具有允许用户使用默认浏览器的代理设置或覆盖它们的设置。换句话说,基础架构团队能够自定义Windows或OS安装映像,以便使用企业代理设置预安装JVM。所以我认为这根本不是问题。
Java Web Start实际上使用Java控制面板中的可自定义设置缓存所有应用程序。应用程序缓存后,应用程序就像其他应用程序一样“安装”。虽然第一次执行可能很慢,但由于JVM的智能内存分配技术,第二次执行速度很快。因此,启动时间可能是一个问题,但很多网站(甚至企业内部)现在都已迁移到门户网站。 Web门户通常包含许多未使用的库以用于开发目的,因为门户本身并不预期在特定页面上构建和部署哪种类型的portlet。因此,下载单个门户页面最多可能消耗MB并在5秒内完成一个页面;这只是一个页面,缓存有助于高达30%,但每次下载仍然需要大量的HTML / Javascript / CSS组件。有了这个,我相信Java Web Start在这里是一个优势。
只要未升级服务器副本,只要缓存Java Web Start就不会再次下载。因此,如果,例如,像MS Project这样的项目管理软件是使用SmartClient(类似于JWS)完成的,客户端和服务器之间的信息交换将纯粹是数据,而不像浏览器的整页刷新那样呈现。即使在Ajax的帮助下,它也不能完全消除整页下载。此外,很多公司认为Ajax还不成熟且不安全。这就是为什么Ajax是开发人员圈子中的热门话题,而不是企业软件中的热门话题。考虑到这一点,JWS应用程序肯定具有更多优势,例如如何在沙箱中部署和执行JWS应用程序,签名以及具有更多交互式GUI。
其他优点包括更快的开发(更容易在代码和性能中调试),响应式用户界面(不需要Comet服务器提供PUSH功能),以及执行速度更快(当然,因为客户端计算机无需像HTML / Javascript那样翻译GUI / CSS,减少数据处理。)
在所有这些之后,我还没有触及这个问题,为什么JWS不那么出名?
我的观点是,它与Brian Knoblauch的评论相同,没有意识。
IT人员被Web技术,Ajax PUSH,GWT的炒作所吸引,所有这些流行语使他们偏向于使用不同技术或解决技术挑战的乐趣,而不是真正为客户工作的事情。 / p>
看看Citrix。我认为思杰实际上是个好主意。 Citrix允许您在场景后构建自己的应用程序场。您可以使用大量的升级和实施策略,而不会影响客户体验。 Citrix部署非常简单,稳定且安全。企业仍在使用它。但是,我认为JWS甚至比Citrix更好。 JWS的想法是在客户端计算机上运行应用程序,而不是托管大量服务器场,其中客户端计算机能够自己运行这些应用程序。这为公司节省了很多钱!使用JWS,开发团队仍然可以在服务器端构建业务逻辑和数据。但是,如果没有Web处理单元并让客户端计算机执行渲染过程,则可以大大减少网络消耗和服务器处理能力。
为什么JWS是一个惊人的想法的另一个例子是Blackberry MDS。 Blackberry应用程序实际上是从Javascript翻译的Java应用程序。使用BB的MDS工作室,您可以使用GUI工具构建BB应用程序GUI,在Javascript中编写GUI逻辑。然后,应用程序将在BES服务器上进行翻译和部署。然后BES服务器将这些应用程序分发到BB。在每个BB上,它运行仅具有GUI呈现和网络功能的瘦Java应用程序。每当应用程序需要数据时,它通过Web服务与BES通信以使用来自其他服务器的服务。这不仅仅是JWS BB版吗?它非常成功。
最后,我认为JWS并不受欢迎,因为Sun如何宣传它。 BB从不宣传他们的BB Java应用程序有多好,他们认为客户甚至不关心它是什么。 BB宣传使用MDS开发应用程序的好处:快速,节省成本,业务回报。
只是我的,有点长,2美分......:)
答案 1 :(得分:11)
Java Webstart的一个主要障碍可能是您仍然需要安装JVM才能尝试下载和启动应用程序。每个人都有一个浏览器。不是每个人都有JVM。
修改强> 我已经获得了一些实际的webstart经验,现在可以添加以下两点:
答案 2 :(得分:8)
我认为这主要是由于缺乏意识。它工作得很好。相当无缝。应用程序仅在第一次下载,升级或最终用户已清除缓存时才下载。部署完整桌面应用程序的绝佳方式,用户无需担心手动升级!
答案 3 :(得分:7)
Webstart的问题在于,即使使用快速连接,您实际上也必须“启动”一些不快的东西,而使用Web应用程序则输入URL并且应用程序就在那里。
webstart也可能出现很多问题。也许目标用户没有所需的权限,或者webstart的代理配置错误,或者jre依赖项出现问题,或者首先没有安装java。因此,对于互联网上普通的约翰·多伊来说,它根本就不是。
在像公司这样受控制的环境中,在许多情况下,这是一个很好的解决方案。
答案 4 :(得分:3)
我已经在几千年的用户群上使用JWS部署的应用程序几年,其自动升级实际上是一个巨大的痛苦。
由于某种原因每次更新都会有数十名用户“陷入困境”。你得到的只是“找不到类”的例外(如果你很幸运的话),或者在它到达你的代码之前从JWS无法提供信息“无法启动”。看起来更新是半下载的。或者,换句话说,它不会以原子方式下载和应用更新,并且缓存较差,因此从同一URL重新启动应用程序无法解决任何问题。
除了清除JWS缓存或提供不同的URL(例如,在末尾添加?dummyparam=jwssucks
)之外,无法解决此问题。即使我作为一名开发人员有时也会遇到这种情况而且看不到任何方法。
当它工作时,它的工作原理。但它经常没有,然后对你和你的服务台来说是一个巨大的痛苦。我不建议将其用于企业或任务关键型用途。
答案 5 :(得分:1)
有一个非常大的问题,即它不允许“立即启动程序,然后在后台检查并下载任何更新”部署,这就是应用程序的事实行为正在融合的。
我个人认为这非常令人烦恼,我们正在积极寻找另一种能够提供这种技术的技术。
答案 6 :(得分:1)
从这些帖子看起来,当使用Web start时,重要的是要好好关心服务器。在每次启动时下载应用程序的“巨大痛苦”可能是由服务器提供的错误时间戳引起的。这里不是应用程序,而是服务器必须配置为正确使用缓存而不仅仅是禁用它。关于越野车的开始,我不是很确定,但在我看来,这也可能是由不可靠的连接造成的。
Web start的重要优势在于它可以很好地与Linux下的OpenJDK配合使用。一些开心的开发人员的客户只使用Windows,但我的客户不使用。
在初始问题中提到的HTML和JavaScript是较轻的方法,可以在较小的任务(如动画按钮甚至交互式表)中正常工作。 Java利基似乎围绕着更为复杂的任务。
答案 7 :(得分:1)
Java Web Start是Java Applets的继承者,applet在新的千禧年被烧毁了。 但是,我仍然认为Java Applets比GWT或Javascript地狱更好。