AJAX,Flash,Silverlight,JavaFX到底选谁

作者:网络 来源:佚名 更新时间:2008-10-30 10:06:14 点击:

  ajax已经永久的改变了用户对网站提供的用户体验的期望。在当今世界,用户只是坐在椅子上等待着观看ajax接下来将提供怎样的视觉盛宴,包括:一些较为显著的视觉效果和像台式机一样的互动,例如, prototype-esque fades(原型褪色), dojo style fisheyes(dojo 风格的注视), the near ubiquitous drag-and-drop(无处不在的拖拉和水滴)。而且,当然,当ajax进行异步处理的时候,如果没有了它提供的分散我们注意力的各式动画的加载,谁又能忍受?是的,这样看来,ajax无所不能,并且没有任何桌面的视觉效果和手势是安全的,如果它是由网站提供的。

  他们对谁有好处?

  这曾经是我的观点,直到我看到在苹果公司最近最新发布的mac os x leopard 版本上的新搜索器。搜索器包括一个文件浏览功能,即cover flow,它可以使用户通过网页预览,将文件以三维的方式展示。它是这样一种视觉效果,这种效果十分依赖向量图形,这种效果如果仅用ajax是很难实现的。事实上,像adobe's flex, microsoft's silverlight, 以及sun 最近发布的javafx这样的计算技术,使得向量图形实质上优于ajax提供的dojo或者yahoo图形实验室(yui)这种构架.无论相信与否,在网络应用程序开发中,在基于网络的向量图形的应用方面存在巨大的商机,而这绝不仅仅是看起来比较诱人这么简单。这种需求已经被商业分析中得到的数据很好的诠释了(例如:sap 和oracle),就像视频重放和图片编辑软件一样(例如:youtube和mixbook).当然,ria交付向量图象的技术并不仅仅限于视觉领域。基于flex的字处理器buzzword通过交付一个完整的网络应用程序,提供了一个关于高清晰度ria解决方案的生动的例子。这个网络应用程序叫做google docs,它是一个基于ajax,更加流行的网络应用程序。因此,向量图形并不仅仅是高清ria解决方案提出的。类似的框架也提供丰富的设备用来开发能交付声音,sockets,本地存储,视频的应用程序,在这个领域,ajax要落后了。

  ajax的革新结束了吗?

  这是否意味着ajax已经完成了它的比赛?一点也不,事实上,adobe flash和相似的技术正在和ajax进行着竞争。但是就现在来看,仍然有一些特定的限制使这些高清ria框架无法取代ajax。在我们考虑是用高清ria框架还是ajax的时候,这有一些更显著的需要考虑的事情。

  需要的插件:高清ria解决方案需要浏览器插件。在2007年三月份,在美国,加拿大,英国,德国,法国和日本,大约83.4%的个人电脑安装了flash 9 player.因此,可以说flash已经无处不在了。然而,即使是一个全球性的,最近安装的版本,升级插件是一件十分困扰的事情。多于一半的用户,当被提示需要更新插件的时候,经常会放弃下载软件的连接,而转向其他网站(很有可能是一个计算机网站)去下载软件,为的是避免和别的用户争夺下载和安装软件。需要注意到,无论是javafx, 还是sliverlight现在都没有分享到被adobe flash player占领的任何市场份额。也应该注意到被flash 9 占领的83.4%的市场份额,在跟现代浏览器中(例如:ie7.0,firefox2.0,safari3.0)支持的ajax比起来,就显得黯然失色了。

  缺少开放标准:ajax,并不像高清ria 解决方案,它是建立在开放标准上的,例如(x)html,css和javascript. hd ria一直以来,都不是开源的,标准比起来少的可怜。javafx,一开始就是被当作一种开源的成果介绍的。在这个时候,在改变hd ria 解决方案的的进程中,像一个领导者一样。但是它到现在为止却很少改变。

  技能的缺乏:flex,silverlight,和javafx分别介绍了自己的代表性语言。另一方面,ajax依赖的是javascript。javascript是被广泛认知的,而且很容易和其他主流的技术相结合,例如:ruby-on-rails, php, java, and .net.

  不能在html中很好的显示:对于完全用flex开发的应用程序,并不存在这样的问题。但是对于已经存在的应用程序,它就是一个值得考虑的问题了。ajax和javascript的创造是用来补充html的。另一方面,flash在运行时,在操作已经存在的网页结构时,缺少灵活性,而这是javascript dom 对象提供的。

  大量下载印记:基于flash的ria解决方案跟依赖本地ajax支持的解决方案比,趋向于有一个更大的下载印记。这种更大下载的结果时,在应用程序安装的时候,有一个延迟的等待。

  可查找的,但并不是总能被找到:近年来,搜索引擎在他们各自的网页抓取中,引入了检索swf 文件的能力。yahoo和google是这种文件格式的最好的广告宣传提供商,虽然使用的方法(检索swf文件的方法)并没有广泛的公布,也没有很好的理解。为了优化查找结果,网络设计者经常既建一个flash网站,又建一个传统的html网站。或者在一个传统的html网站中选择一个嵌入的flash电影,作为对文本内容的装饰。应该注意到,在写这篇文章的时候,我并不能知道搜索引擎会在何时,会用何种方式把这个问题加入到hd ria 技术中,就像javafx和silverlight一样。

  并不是所有的客户都是平等的:随着更新的个人电脑的使用,这已经不在是一个问题了。但是自从hd ria 环境大量使用用户的资源用来执行业务逻辑,应用性能由客户机的配置来决定了。因此,客户体验会因为机器配置的不同而不同。基于ajax的解决方案有一个继承过来的服务端组件,(例如:oracle adf faces rich client),可以利用服务器资源来装载处理和表现以保证在客户端更统一的交付。

  读者应该注意,没有一种列出的考虑会阻止你选择flash或者相似的产品,而去选择ajax。ajax的确有它自己的缺点,有很多。在近些年,比hd ria 解决方案显示出的问题多很多。让我们关心的,一些显著的问题包括速度很慢的javascript执行,内存泄露,大量的浏览器错误,两个连接的限制,和css产生的问题。简单的输入,在google maps或者gmail上用ajax创建一个应用,你就不能拒绝任何形式的攻击。进一步讲,这篇文章已经指出了在哪种情况下,hd ria 解决方案做的比基于ajax的解决方案做的好,尤其是在向量图形的领域。但是,在这个平衡的另一端,我们会显然的发现ajax更适合增量的修改已经存在的应用程序,在这一点上,flash或者其他hd ria解决方案做的没有ajax好。并且ajax更适合处理文本内容。而文本内容又是当今网络内容的主流,虽然更多的媒体中心,实时驱动的web3.0可能会使规模在不远的将来,达到一个更高的级别。因此,现在所有ria解决方案都是有限制的。

  幸运的,ajax和hd ria的限制因素,在大多数情况下,运行起来并不会产生相互影响。因此,ajax和flash这样的技术实际上很好的互补了,并且,像youtube和slideshare已经证明了,ajax和flash可以结合起来用来创建一个健壮的应用程序可以提供丰富的媒体和动态的文本.但是,这又引入了一个新的难题,那就是并不是所有的开发者都被平等的创建了,这将导致一个问题,就是是否这个混合的ria解决方案只能通过极端的方式来达到?

  两个世界中最好的,但并不是免费的:

  最终的测试的结果是积极的。adobe实验室最近提供了一个flex-ajax桥,允许开发者用javascript来操纵一个flex的应用程序。进一步的,sliverlight dom可以通过javascript来访问。因此,hd ria解决方案已经提供了ajax的整合点。然而,尽管有整合到一起的接口,仍然有其他的复杂的问题没有显现出来,也就是找到一个有经验的开发者的难题,这样的开发者需要有flash,(或者sliverlight,javafx),css,html, javascript, 有一些php,ruby-on-rails, 或者 java.的知识。进一步讲,开发者的技能一般都是针对客户方法和服务方法分开的。或者精通flash,或者ajax,但是不精通服务端的技术。相反的说,也成立。因此,你需要雇一个精通flash的人和一个精通ajax的人,而不仅仅是他们其中的任何一个。这会使你在雇佣人员上的花费翻倍。最后,基本上是没有开发工具的,比把所有技术都集成到一个程序开发环境中的,端到端的开发框架要少得多。理想情况下,这样的开发环境会包括可视化开发和其他加速编程速度的方法,更进一步,会包括宣布数据隐藏的工具。因此,这就好象是,在试图平衡flash和ajax的工程中,技能和工具所提供的生产力并不是足够的。

  ajax和flash,最终将结合到一起

  在2004年,javaserver faces (jsf) 开始采用十分激烈的方式,简化网络开发并且在一些提供商的帮助下,仿佛成为了期待再一次重振网络开发的标准。jsf是一个服务器端的组件框架,这个框架允许开发者用一个单一接口去构建一个基于网络的,能操作多个设备的应用程序。能这样开发的一个主要方面是因为有一个可以高度灵活性表现引擎或者一个更加专业的表现包。像oracle adf faces 这样的构件框架引入了表现包,不仅仅表现html浏览器,智能客户端,wml浏览器,和ask客户端,创建用来交付的多通道而不用去理解内在技术的细微差别。你可以很容易的发现这项技术是如何扩展到ajax和flash中去的。创建一组组件的想法适用于ajax,同时也适用于flash.在这个想法中ajax用来交付增强的窗口,布局管理器,和数据表格。与此同时,基于flash的组件服务于更多特定的目的,利于画图,画图表,和其他的数据可视化需求。在开发中使用单一的借口消除了理解javascript, (x)html, css, xml, json, and flash(或者其他ria解决方案)的需要。开发者仅需要简单的知道java的语义和jsf的接口。再者,深入理解的需要减少了,因为大量的工具和为jsf提供的可视化设计(例如:oracle jdeveloper, netbeans, eclipse)。

  成果是一个开发环境,在这个开发环境下,即使水平相差很多的开发者,都可以创造和交付一个高交互式的ria。

  然而,尽管有很多工具可以选择,却很少有jsf组件提供商,在一个单一的框架中,既提供基于flash组件,又提供基于ajax的组件。一些更著名的jsf组件提供商发布基于ajax的组件,包括:backbase, icesoft, oracle, jboss,和ilog。目前,oracle adf faces rich client 代表了唯一的一个既提供支持ajax的,又支持flash的组件。而且,为了消除任何概念的所有权干涉,oracle近日在今年的javaone上宣布,oracle adf faces rich client对apache foundation的贡献,被当作是rich client framework(rcf)。rcf显示javaserver faces能够提供一种开源的解决方案,建立在工业标准上,将带给ria开发者两个世界中最好的,在一个接口下同时提供hd ria和ajax。