对Adobe Flex的十大误解

在Qcon上,Adobe的James Ward和InfoQ.com一起分享了他推广传播Flex应用框架过程中所遇到的对Adobe Flex的十大误解。

为了运行Flex应用程序用户需要安装新东西。

Ward向InfoQ.com独家论述了Flash采用比例和Flex编程模型:

Flex 2和Flex 3必需运行在Flash Player 9上。Flash Player 9运行时目前已经被安装在世界94%的计算机上: http://www.adobe.com/products/player_census/flashplayer/version_penetration.html

Flex 2和Flex 3的应用程序执行在Flash Player 9环境下。Flex应用程序构建在本地Flash Player API之上,如矢量图形、位图处理和网络(基于浏览器网络协议栈)。Flex框架增加了如日期选择器、数据表格、图表等可重用组件。编译Flex应用程序的结果产生一个SWF文件,它是供Flash Player使用的二进制字节码格式。SWF文件包含的是Flex框架代码和项目自定义代码的字节码。Flex编译器对字节码进行了优化,只将要用的类编译到SWF文件中。

对于桌面应用软件,Adobe的目标是推出自己名为Adobe AIR的新桌面运行时,希望能像Web运行时一样普及。Adobe AIR 1.0版本将于2008年初发布。目前,从labs.adobe.com上可得到的AIR是测试版。许多公司都已经在使用AIR构建产品软件。eBay的应用程序eBay桌面就是一个例子。

Flash Player是100%私有的。

Ward继续为InfoQ.com做出说明:

Flash Player的核心是Tamarin虚拟机,这是Mozilla旗下的一个开源项目。而SWF文件格式不是完全开放的,它是由osflash.org社区备案的。已有很多读写SWF文件的开源产品。Flash Player产品的发展方向在很大程度上受该社区及其需求所影响。Flash Player的核心语言是ECMAScript 262的一个实现,ECMAScript 262是JavaScript的规范。Flex还将CSS用于组件/应用的样式。Adobe AIR使用web标准以及开源技术如Tamarin、Webkit和SQLite作为其桌面应用的基础。

Flash是为设计者、视频准备的,而且让人讨厌。

2007年7月Ward在博客文章“我是如何克服对Flash的恐惧”中指出:

毋庸置疑的,Flash的能力被滥用了。弹出窗口、跳过介绍和烦人的广告横行于我们的屏幕上。我曾听人们说过不应该因为一个宗教被滥用而否定它。这一格言同样适用于技术。FLASH不能因为有些人拿它来做令人讨厌的东西而遭到摒弃。毕竟e-mail并没有因为垃圾邮件泛滥而消失。

Ward为InfoQ.com详细阐述了该主题:

传统的FLASH是用为设计者提供的基于时间轴的工具构建的。Flex是用于构建基于Flash的内容/应用的开发者工具套件。设计者和开发者通过共享两个工具之间的资源能够携手合作。Flex增加了一个全面的组件库:

http://www.adobe.com/go/flex_explorer_app
http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15&loc=en_us

Flex不是为企业/商业应用准备的。

在过去数周里,Ward 发布了关于Oracle在Adobe Flex之上实现大量新应用的七篇系列博客文章。这些应用软件近来公布在Oracle OpenWorld 上,其范围涉及从销售工具到数据库管理和商业智能。

除了Oracle对Flex的使用,InfoQ.com也公布了一些使用Flex开发企业应用的团体。Ward也为InfoQ.com指出了很多使用 Adobe Flex开发企业级应用的例子,包括:Workday, SAP, Salesforce和Business Objects。

Flex太贵。

Ward详述了Adobe所做的一系列努力来消除公众对价格的误解:

Flex是为构建Web和桌面的丰富互联网应用所提供的、免费的开发工具包,并且马上要开源。免费SDK包含了开发者构建RIA应用所需的一切,构建出的 RIA应用可在任何浏览器或操作系统上同样工作。免费Flex SDK的一部分部分是一套内容广泛的组件集,其可扩展、可更换皮肤且可访问。你可以在Flex组件资源管理器上看到很多这样的组件:http://www.adobe.com/devnet/flex/samples/code_explorer/

Flex Builder是一个可选的Eclipse插件,这让使用免费Flex SDK开发应用软件更高效。它包括如集成调试、设计视图和代码补全等功能。

最近也采取了不少办法来调整Flex Builder的价格。Flex Builder现正免费提供给学生及教职人员。不带图表组件的vanilla版本Flex Builder,其价格已降至249美元,以此更好地平衡Flex Builder的价格等级。

还有许多构建Flex应用后端基础结构的可选项。为了利用高性能AMF数据传输协议,有如LiveCycle数据服务这样的官方Adobe产品,以及如 Granite数据服务这样的众多开源项目。使用AMF消除了以下不必要的步骤:从数据转换为文本(SOAP, RESTful 等),传送,然后再由文本转换回数据。AMF还允许在线传送中保存类型信息。
关于AMF 和其他基于文本序列化技术的比较,请看James Ward的RIA基准应用系统普查:http://www.jamesward.org/census.

Flex的应用程序需要专用服务器。

Ward再次为InfoQ.com讲述:

Flex应用程序可以运行在任何Web服务器,应用服务器和数据库服务器之上。Flex应用程序更像是客户端-服务器应用程序。由于逻辑是运行在 Flash Player客户端内,你需要某种方式来与服务器交互。你可以有很多不同的选择将Flex连接到你的基础结构。不需要任何专用库,你可以将你的后端数据和服务暴露为RESTful、XML或SOAP,并且很容易在你的Flex应用中消费这些数据。如果选择使用AMF二进制序列化协议,你可能需要添加一些额外的库到你的web应用软件。AMF只是另外一种序列化技术,就如XML或JSON 一样,所以它可以作为你用于和后端SOA沟通的多样方式中的一种。

Flex很难学。

InfoQ.com社区的Leftie Friele,就InfoQ.com文章"谁在使用Flex?" 发表了评论,详述了他的公司在学习Flex上的经验:我们初创公司Ezmo在开创以来就在使用Flex,我们非常愉快的使用该框架。

不需要任何Flex/Flash的预备知识,我们可以在少于两周之内构建出我们的应用程序。Java和Flex之间的整合更是超级简单,开始使用Flex就像是公园漫步。

说到工具支持, Flex Builder也是相当不错。如果你熟悉Eclipse环境,你能顺利起飞,不会碰到任何问题。唯一缺憾是缺少更好的持续集成工具和更好的Maven插件来构建Flex应用。
对于Flex新手们,Ward给了一段截屏录像,展示了一个Flex应用的构建过程,以帮助你起步。此外,还有许多关于使用Flex和Java的其他文章在 Adobe Developer Connection上 。

使用Flex,我需要重建我的整个应用。

今年1月,Bruce Eckel发表了一篇题目为"混合Java" 的文章。文章中他认为Java团体应该继续使用Java好的方面,但是也应该采用其他技术来替代Java薄弱的方面。文中主要焦点是使用Adobe Flex作为用户界面来取代传统的Java选项(Swing、JSF等……)

Ward详细阐述了这一概念:

既然Flex应用程序只是应用程序的UI端,而后端通常都是一样的。如果你的后端是依照SOA模式构建的,那么通常很容易将这些服务暴露给一个新的Flex UI。这将保持你现有的商业逻辑不变,无论它使用的是EJB、Spring服务还是POJO。

Flex打破了常规的浏览习惯,象后退按钮。

Ward的博文讨论了后退按钮:

Flex已经内建了对后退按钮的支持且非常容易定制,因此这已不再是问题。Flex也提供了一个简单的办法来处理“#”url(或命名的锚点),url随应用状态的变化而变化。另一个Web 1.0的整合问题业已解决。

Ward为InfoQ.com补充了更多的细节:

Flex 3给应用提供了一个简单的方式在命名的锚点中储存状态参数,当该URL被请求时可以根据这些参数正确地恢复状态。有关这一特点的更多信息可以参见Flex 3特性介绍:深连接专题介绍文档。

可访问性对Flex应用来说一直是非常重要。因为Flash Player与Jaws及其他可访问性技术一起工作的,因此为基于Flash的应用程序增加可访问性的能力已经具备了。Flex框架将可访问性纳入核心框架。有许多不同方面的可访问性,这取决于你的应用程序需要支持什么样的损伤和残疾。你可以在开发者指南中找到更多有关Flex可访问性特性的信息。

Flex能做到的,Ajax也能做到。

Ward解释说:
Flex RIA和Ajax不是非此即彼的关系。像Google Finance网站就展示了如何同时使用Flex和Ajax。Ajax非常适合以内容为中心的应用,而Flex则适合于互动,媒体和数据为中心的应用。如果你的应用介于这两者之间,那么你可以用Flex Ajax Bridge来结合这两种技术。在 Flex 3里,Flex Ajax Bridge已经直接集成到SDK中。如果使用的Flex 2,你将需要单独下载Flex Ajax Bridge。
此外,InfoQ.com社区的Michael Marth讲述了他的小组为什么选择Flex:
我们即将推出的网上约会站点viibee.com使用的就是Flex 2

理由是:付出相同的努力,Flex使我们能够创建的用户体验远远超过我们用Javascript/Ajax所能做到的。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License

Subscription expired — please renew

Pro account upgrade has expired for this site and the site is now locked. If you are the master administrator for this site, please renew your subscription or delete your outstanding sites or stored files, so that your account fits in the free plan.