对 Adobe Flex 的十大误解

  • Jon Rose
  • 王军

2007 年 12 月 14 日

话题:JavaWeb框架语言 & 开发

  • 为了运行 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_a pp


    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 所能做到的。

  • JavaWeb框架语言 & 开发