可能有人会大胆猜想:“在不久的将来,RIA可能会完全替代目前的HTML应用。”对此猜测,只能说“仁者见仁,智者见智”,站在不同的角度会产生不同的观点。然而,值得肯定的是,无论上面的猜测是否成立,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的组织,以及采用基于B/S架构的瘦客户端技术部署Web应用系统的组织而言,RIA确实提供了一个廉价的选择。
目前,构建RIA的技术还处于“诸侯混战“的态势。开发人员面临多种选择,这其中包括AJAX、Silverlight、Flex、JavaFX、Laszlo、XUL等,它们各自有着不同的技术特点和针对性。了解这些技术,对于读者加深RIA的理解具有一定的益处。
▲AJAX
AJAX是“Asynchronous JavaScript and XML”(异步JavaScript和XML)的缩写。很多人容易将AJAX误解为一个新技术,它实际是几种技术以新的方式组合而成。每种技术都有其独到之处,结合在一起就形成了这种功能强大的技术。这几种技术包括:
(1) 基于Web标准的XHTML+CSS表示
(2) 使用DOM(Document Oject Model,文档对象模型)进行动态显示及交互
(3) 使用XML个XSLT进行数据交换及相关操作
(4) 使用XMLHTTPRequest进行异步数据查询和检索
(5) 使用JavaScript将所有的东西绑定在一起
在技术应用方面,AJAX主要用于实现轻量级的RIA开发,例如为标准网站添加丰富内容和响应特性。AJAX的最大优点是能够在不更新整个页面的前提下维护和刷新数据,同时AJAX应用不需要任何浏览器插件,只需要用户允许在浏览器中执行JavaScript即可。AJAX的不足主要是开发不易上手,同时还涉及到浏览器兼容性问题。
▲Silverlight
Silverlight(开发代号是WPF/E,Windows Presentation Foundation Everywhere)是由Microsoft公司发布的基于.NET的全新Web呈现技术(目前最新是Silverlight 3版)。借助这种技术,开发人员能够创建出内容丰富、视觉效果绚丽的交互式用户体验,例如矢量图形、动画、视音频等。Silverlight采用插件方式部署,这有点类似Flash插件。它具有良好的跨平台特性,支持多种操作系统,例如Windows、Mac,支持多种浏览器,例如IE、Firefox、Safari,甚至能够在移动设备上运行。在技术应用方面,Silverlight主要用于创建重量级RIA应用,其允许在浏览器中创建更加丰富的用户界面。如果将Silverlight与AJAX结合,利用AJAX的异步数据,那么Silverlight将如虎添翼,用户会得到非常舒适和丰富的交互体验。Silverlight具有很多优点,例如开发效率高、易于上手、运行速度快、跨平台,允许开发者和设计人员协同工作等。
▲Flex
在Flex出现之前,试图解决用户界面问题的开发人员常常因为HTML的局限性而遭受挫折。原因很简单, HTML起初是为浏览静态文档而设计,并不适合于创建内容丰富、交互性强和数据驱动的应用程序。为了满 足RIA开发人员需求,Flex技术横空出世。对Flex最简单的理解是:Flex技术能够根据.mxml文件(包含 XML和ActionScript代码)生成相应的.swf文件,然后传送到客户端,由客户端的FlashPlayer或者 Shockwave Player解释执行,从而提供给用户丰富的内容和交互体验。实际上,Flex并非这样简单,否则 它也无法称为当前最完整、最强大、市场份额最高的RIA开发解决方案(最强大的竞争对手是Silverlight ).Flex技术提供了基于标准的、声明性的编程方法和流程,以及运行时服务。利用Flex技术提供的表示 服务和应用程序框架,能够创建既具有桌面程序的交互性和丰富内容,又结合了Web的广泛性和易于部署 性的应用程序。
▲JavaFX
JavaFX(即JavaFX Script)属于SUN产品家族的一员,它是Sun公司推出的最新RIA解决方案。利用javaFX,开发人员能够快速创佳在支持java虚拟机的计算机和手机等设备中运行的应用程序。JavaFX是一种声明式的静态类型编程语言,它具有第一级函数、声明和语法、列表推导及基于依赖关系的增量式求值等特征,并能够直接调用平台上的JavaAPI。由于JavaFX脚本是静态类型的,因此它具有相同的代码结构、重用、封装特性(例如package、类、继承、分离编译、部署单元),这使其能够用于创建和维护大型Java程序。从语法来看,JavaFX是Java和VRML的混合体,既具有Java的优点(例如,面向对象、集成等),又具有VRML的优点(图形描述)。在IDE支持方面,目前已经推出了针对JavaFX的NetBeans和Eclipse的插件。
▲Laszlo
Laszlo是一个开源的RIA开发技术,其类似于Flex。由于它是开源的,所以可以免费为开发人员使用。开发人员可使用JavaScript和基于可扩展标记语言XML的编程语言LZX来构建Laszlo应用程序,接着运行在J2EE应用服务器上的Laszlo平台会将源代码编译成SWF格式的文件,最后传输给客户端展示。从这点上来说,Laszlo的本质和Flex是一样的。由于Laszlo编译结果为SWF文件,所以它与使用Flex技术构建的Flash应用程序相同,一次编写到处运行的特点,从而解决了浏览器之间的移植问题。另外,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。Laszlo超于Flex的优点之一是,下一个版本的Open Laszlo(命名代码为legals)将允许编写一次代码,可编译生产SWF、动态HTML(DHTML)或者AJAX应用程序。当然Laszlo也面临着支持组件不足,市场开拓有限,以及Flash Player的约束等问题。
▲XUL
XUL(XML User Interface Language,XML用户界面语言)是一种基于XML的用户界面语言,它来自于Mozilla的开发源码项目。XUL中包括很多预定义的小部件(按钮、单选按钮等)。仅有兼容Mozilla的浏览器(例如Firefox)才能显示这些小部件。虽然开发人员可以在RIA的创建过程中使用XUL,但是XUL主要用于Mozilla应用程序和扩展应用的创建过程当中。XUL最大的优点在于,与大多数其他XML用户界面描述语言相比,XUL是一种非常简介和具有表达力的语言。XUL的主要优点是,目前XUL还没有获得一个主要商业实体的支持。
RIA的解决方案比较多,并且各自有着优点和不足,这对于应用开发人员和组织而言的确有些难以取舍。目前,开发RIA主要使用的是Flex技术。在国内,虽然Flex的技术文档,开发工具都是英文(对于国内学习者可能会造成一定障碍),虽然Flex的技术推广工作还不是很到位,但是这些不足都无法掩盖Flex的魅力光芒,无法降低学习和使用Flex技术人员的热情。