技术开发 频道

追问富客户端应用程序(RIA)的宠儿为何是AJAX而非Java

富客户端应用程序

    从某中程度上说,我们要扪心自问,Java applets为什么没有作为RIA的客户端的标准,在互联网上盛行起来?

    这是一个非常令人痛苦的问题,因为Gosling和开发团队急匆匆的将Java推广出去(因此铸就成许多欠考虑的决策),以便使得互联网发生革命性的变化。这就是为什么AWT和Applets为什么在最后时刻才出现,据说从提出概念到完成,只用了一个月的时间。Bill Venners 引用 Patrick Naughton如是说:“那是个时间问题,时间太紧,我们几乎不能完成它”。我以前也听到过这样的言论,当你在构建一种编程语言的时候,急功近利的态度在任何时候都是错误的。你创建了最基本的结构,然后你希望人们将会采用并且使用很多年。这需要深思熟虑的,并不能急于求成。

    我知道为什么Green团队采取了这个决策:像Microsoft一样。首先打出一个产品出去,为了把你吸引到window上来。这个产品不需要完美;仅仅需要垄断市场而已。随着时间的过去,你能够修补那些缺陷,是由于急匆匆的打出新产品而留下来的缺陷。这样的做法像市场版本下的敏捷开发方法。

    这种方法同样适合动态语言。曾今风靡一时的VB,就是通过许多年的发展才完善的。Python已经修复了很多的东西,目的是为了净化新的语言。据报道,Ruby将会采取同样的方法。

    但是,对于静态语言,特别是有大量编码基数的语言,想修补一些东西是很困难的。所有的代码必须重新编译和改变——虽然我建议Java可以采取Python的方法:如果你不想改变的话,不需要升级的话也可以运行。现在就有许多公司就不去升级到新的Java版本。

安装问题

    Java已经发展了10多年了,而applets并不是我们和互联网交互的主流方式。我认为主要的原因是安装的问题,这是Java的另一个欠考虑的方面。我们为什么喜欢Ajax?

    我们喜欢Ajax,显然不是因为JavaScript很容易使用——JavaScript曾因为存在的跨平台的问题,过去人们避免去使用它。Ajax之所以流行,是因为我们知道它在客户端所需要的软件已经安装了。如果有人解决了JavaScript如何跨平台的问题,并且假设安不安装JRE无关紧要,那么今天我们每个人可能在使用Java applets。但是事实上不是这样的,applets并没有无处不在,每个人现在正热衷于Ajax。这就是为什么Ajax称为RIAs的宠儿。

    虽然随着ECMAScript的标准化,JavaScript情况有所好转,我仍将用Java而不是JavaScript编程,主要原因还是其不一致性的原因。或许过了八年后,当前版本的ECMAScript成为所有浏览器的标准。尽管其具有随机执行特性,但是目前版本的JavaScript已经生效,并且安装问题为零,而Java还是没有称为主流,这就是很好证明:Java没有作为RIA语言的选择的原因就是安装的问题。

    这些年来,Java尝试了很多的补丁,但是我认为最基本的问题的是谁能够解决安装的问题,这是更为关键的内在技术,而不是外在的关注用户体验问题。

    举个例子,由于安装的复杂问题,我安装的早期Linux分布系统被侵袭过。大约一年后,我正准备重新安装Linux的时候,我就立即问自己一些问题。这些问题只有知道Linux核心部分的技术人员才能够解答。我不敢冒充自己是Linux高手,于是放弃安装,在第二年才重新试了一次。接着Red Hat的到来(至少我认为他们是第一个关注安装用户体验的),我在安装的过程中没有提出任何问题,或者至少给了我一个合理的默认解答。这就是为什么Linux开始流行的原因(最近,Ubuntu似乎准备解决Linux用户友好的问题)。

    安装JRE需要终端用户选择回答一些问题。对于一个技术人员,问题的答案是非常简单或者显而易见的,但是对于其它的web用户者,在安装过程中出现的问题会吓退他们。这里有一篇文章,及其评论,例证了安装Java时的一些问题。虽然这篇文章大部分抱怨更新问题,有一大堆的疑问是关于如何更新老的Java版本。

    JNLP,又称Java WebStart,本应该是解决简便安装桌面应用程序问题的。我认为JNLP没有被广泛的使用有其原因的,可以看看这个网站(https://aerith.dev.java.net/),其中有一个页面叫“Cool JavaOne Demos.”如果你点击这个页面上的JNLP 超链接,它就会开始启动,下载一堆东西,并且询问你一些问题。随后,什么也没有了。没有错误信息,也没有告知你当前的任何信息。重复尝试,产生同样的结果,只是整个过程变快了,因为所需的文件已经下载到本地了。至少,这是我的体验。如果者也同样发生在你身上,我不得不说这甚至更糟糕——这种情况只是随机的在一些平台上发生。这样一来,你就无法找出问题的所在。

    使用Java来构建GUI应用程序是不可能的,10年已经过去了,仍然存在applets、Java WebStart、常规应用程序的安装问题。再过十年,人们将不会相信什么了。如果不是过了10年问题还是这样的话,我今天说这些话将会处于孤立无援的地位,并且我会说你们没有考虑到这些问题的重要性。目前即使他们做了改进,仍然存在许多的不好的用户体验问题,给用户造成了不好的印象,如果想重新获得用户的信赖的话,需要很长的时间了。
0
相关文章