技术开发 频道

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

Java Applets应用程序体验

    对AWT最初的用户体验打击了我对Java的狂热,我不认为applets会起死回生。结果是Java从来不会成为RIA的主流。

    即使是现在,访问使用Java applets做的网站的时候,获得也是很差的用户体验。错误就是错误,没有错误的任何线索。更糟糕的是,这些网页会残留一些东西阻碍Firefox打开新的窗口,直到我重启为止。

    对于“applets已经消亡”言论的通常反映是“不,它们还存在,我仍在使用它们。”Applets不是没有用武之地;人们还在用它们创建一些令人印象深刻的东西。Java Posse每周还集锦一个或更多的applets应用程序。我想言论应该这么说:“对于RIAs,applets已经消亡”。对于依靠applets来建立一个通用的网站来说,是有很大的风险的,因为不仅是一些特殊applets稳定性不可靠,而且JRE的安装过程也是一个问题。

    桌面应用层程序也受到影响,给Java贴上了一个坏的标签,随着applets一起受到玷污。我使用过一个Java产品,叫Memorex exPressit,给我很坏的体验。用户接口界面非常难看,别且bug很多。给我带来鲜明对比用户体验的是Logitech的IO Pen后台软件(在.net平台下编写),这个软件运行起来很明了,很好看。你或许会说Memorex程序员有经验,但是这个Logitech公司的软件只是一个小的应用程序,没有费很大的力气就做的如此之好,反之,无法想像如果用Java编写的软件,用常规方法,不做更多的处理的应用程序会是什么样子?Eclipse是软件中的杰作,我认为之其中凝聚了极大的努力才达到了现在的程度。

    想想Corel用Java编写了文字处理器所做的努力。他的做法未免太早了,因为他当时可用的只是AWT。当然这是后车之鉴——如果你当初听信了Sun公司市场上的广告,你或许觉得你的选择是对的。对于这类的应用程序根本没有人用Java编写。

    OpenOffice不是用Java编写的,而是用C++。我不相信那是因为程序员为了努力追寻跨平台问题而瞄准C++.。那是因为速度,或许有直接的需求,需要控制底层平台。Java并不是所有问题的非常好的解决方案。

跨平台并不够

    我努力了很多年为了解决我的产品跨平台的问题,如产品Hands-On Java CD。和RIA存在相同的问题,因为我想让安装过程尽量简单,我想在第一次的时候能让所有的事情都无缝运行,我不想被迫去解决平台的问题。很多情况下我编写的软件表面运行良好,但是有时用户会发来email说他们的机器上的软件运行出错了。我不知道问题出在哪里。我最好的解答就是说:“在另一台机器上试试”,通常这样就能解决问题……无论问题出在什么地方。

    Java承诺的编写一次代码,任何地方运行是非常有吸引力的。不幸的是,至少当时是,没有得到Linux有效的支持。当时Linux 和 Mac 的用户还是少数人。

    Java缺少对MP3和其它多媒体的支持。就像Dick Wall所指出的那样,Java多媒体框架(JMF)被人们忽略很多年。我当时做了一个初步的论断,Java没有对任何压缩声音格式的支持。即使现在对MP3有支持的只是一些开源的软件,在概念上还是很不错的,我不想去测试它们,也不想去发现那些平台的问题——我只想它们运行良好;我只想从用户那里听到:“棒极了!”。

Flash解决方案

    首先允许我做这么一个假设:10年后,Java没有称为RIA世界的主流,而Ajax也没有流行起来,受到浏览器、HTML、CSS委员会强加的限制。那么此种情况将如何构建RIA了?

    明显的解决方案是Flash。Flash一直是跨平台的多媒体,有很好的用用户体验和用户接口。人们非常熟悉Flash,使用起来很舒适,它几乎能在世界上所有的机器上安装。它受人们信赖,它稳定,可靠。

    安装已经不成为任何问题。你不需要回答安装过程中出现的问题,或者做一些其它额外的东西;它自己运行安装良好。这就是为什么它无所不在的原因。当前Flash版本或者未来的Flash版本会在三种主要平台上同时发布(是的,除了64位的Linux除外)。标准的Flash安装能够播放MP3和其它的类型的视频。

    你不可否认Flash制作出令人愉悦的用户界面。Flickr和Picasa使用的是什么?不是Java,不是Ajax,而是Flash。Google videos,用Ajax编写,一定不可能在任何地方都能执行,因为他们收购了YouTube,而YouTube是用Flash做的。即使那些大多数顽固的Swing迷也背地里希望他们的UI好看些,特别是能够减少对Swing的额外工作。

    有一个非常有趣的Flash web应用程序叫做Gliffy ,它是模仿Visio(Visio是使用OpenLaszlo创建,稍后我将介绍)。虽然有人用HTML、 CSS 、JavaScript模仿做了一个简单的Microsoft Paint,但是没人能够想象的出用Ajax也能做出这些东西来。这就非常有趣了,因为你将从这些事例中看出这些技术所能达到的极致,然而,Flash才显露头角。另外着色复制(Paint clone)有些慢,并且UI在不同的浏览器之间会不一致。

    我们在惊叹在JavaScript范围之内的技术(如Ajax, JSON, GWT 等)所完成的杰出作品时,然而我们要认识到这都是有极限的。我们每天不断提高它们的极限范围,但是这些极限约束并没有消除。
0
相关文章