技术开发 频道

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

解决UI问题

    编程中的一个难点之一就是选择GUI库。有的时候有一个标准库,但是它总在变化。在Java中,我们首先使用的是AWT,而后来结果证明它是一个错误,以至于我们不得不耐心等待Swing的开发成功,直到IBM和Eclipse的出现,才给我们提供了额外的选择SWT。在Python中,有许多的GUI库,包括内置的Tkinter、WxPython、Qt等。基于操作系统的库也是一种选择,但是如果你想创建跨平台的应用程序,这些库就不可取了。

    如果你想涉猎这些GUI库的话,就像我一样,那么你必须冒学习更宽泛的知识,而不是更高深的知识。每一个库都需要很大的努力才能学会,每一个库似乎都有自己的一套体系,至于行为动作就很简单了。每一种库描述世界的GUI编程都是不一样的。

    我喜欢学习一种方案,让后将它运用到我所有的应用程序中去。我会停止学习GUI解决方案,而开始取学习一些高深的知识。理想状况是,有这么一种真正的语言,在不同的平台下,仍旧能够得到一致的结果。

    我相信要解决用户界面问题,我们需要一个具有多领域特征的语言的等价物,来致力于用户体验。对我来说,这个等价物就是Flex,它是基于Flash的技术,解决用户体验问题的出色方案。

Flex是什么?

    传统意义上说,Flash内容和应用程序由Flash工具创建,现在叫Flash 8 Professional。还有其它的工具叫Macromedia Director,为CD-ROMs而做的一个多媒体制作工具,它能制作Flash和输出一个Shockwave格式的内容,能在Plug-In/ActiveX上运行,非常像Flash内容,但是完全是不同的控制。Shockwave达到了全盛时期,现在仍被广泛使用,特别是游戏软件,但是Flash的重量更为轻载,并且取得了主流,远远超过Director。

    Flex是通过编程开发Flash应用程序的一种方法。它包括声明XML语言,调用MXML来布局用户界面,和一种叫ActionScript的编程语言,ActionScript是ECMAScript(标准化的JavaScript)的父集,还有一个特别的特征,有些像可选静态类型校验。ActionScript是一种单独的语言,能够在不同的平台上运行,你不需要担心不同平台的差异性。应为它是基于ECMAScript,你的JavaScript知识还能用得上。所有的MXML组件都是由ActionScript编写的,你还可以自己编写组件。Flex应用程序直接编译成SWFs(Flash二进制),随后在Flash运行过程中,编译时执行,以此获得很快的速度。

    最初我没有使用Flex主要原因是它的成本,主要来讲读者不愿意或者不能支付这个费用。在Flex的最初版本,你不得不购买服务器版本,仅仅是为了创建静态SWFs也不例外。那个服务器版本是为动态内容而设计的,对于大的组织,购买还是值得的,他们可以创建从数据库创建动态SWFs。但是,对于一个想对它进行实验的个人来说,购买是不理智的。对于我来说,如果你没有合理的实验路线,包括创建静态的SWFs来传送你自己的服务的目地话,我推荐你使用它很困难。

    然后,现在你可以下载免费的命令行Flex编译器来创建静态的SWFs,把你网站上的内容传送出去,不需要花一分钱。编译器,框架,调试器都是免费的,所以没有理由不去使用Flex。

    你可以使用Flex Builder 集成编译环境来帮助你创建Flex应用程序。这是建立在Eclipse平台之上(不是白手起家重新创建一个新的GUI开发系统,而是建立在别人的基础上发展——聪明的方法)。它具备我们所期待的通常的功能,如自动完成,上下文帮助,GUI布局工具。布局工具能够帮你快速设计,虽然我觉得手动设计会更好。

Flex作为DSL用于绘图

    Flex最为吸引人的事情是将UI作为创建Flash的首要解决的问题。这非常有道理,它是一个多领域的语言,能够用于绘画,多媒体,UI,相比较而言,其它的解决方案只是带了一个UI库,然后在应用程序中添加。

    由于设计的目标,Flex 和 Flash 提供了一个全美的,无局限的,灵活的工具来构建良好的用户体验。从程序员的角度出发,你只是学一种语言来构建UI,不需要考虑运行时的问题或者其局限性——问题诸如:
安装问题
创建时的约束问题
陡峭的学习曲线问题

    Flex有丰富的组件,你只需要拖下来使用就可以使用了——与Flex框架一起有100多了组件。组件的创建出现了很大的商机,无论是开源还是付费形式的。有这么一个组件来自Adobe:Flex制图组件(大约几百美元),但是仍有许多与之竞争的制图组件。

    Ajax最为有趣的一面就是它的异步行。这允许信息在客户端和服务器之间交互,而不需要页面的刷新。对于Flash来说,有一种比这还完善的技术,由Flex Data Services提供,一组数据管理发布/提交的API(publish/subscribe API)。Flex Data Services客户端和服务器之间自动完成高速缓冲技术和数据更新,产生一个最优的体验,而不迫使你写更多的额外代码。这可以让你获得实时数据,构建更大的应用程序,完成企业通信整合问题。你可以免费使用Flex Data Services在一个CPU上,如果你想你的应用程序使用多个CPUs,你就需要交费获得许可证。

    早先我提到过Gliffy,使用OpenLaszlo构建的。在Flex编译器和框架免费之前,OpenLaszlo非常吸引人。但是,OpenLaszlo组织决定将DHTML和Flash结合起来,这就引入了DHTML的局限性。Flex吸引我的就是它能让我从一些事物中获得它的优势和在任何地方都能产生同样的结果。Flex速度比OpenLaszlo快很多,因为Flex吸取了Flash 9 运行时编译执行的技术。现在Flex还是免费的,没有理由不去使用这个资源。
0
相关文章