Flex RIA 生态圈现状分析

  • Moxie Zhang
  • 张龙

2010 年 1 月 13 日

话题:Java语言 & 开发

2004 年 3 月,Macromedia(2005 年被 Adobe 收购)发布了 Flex 1.0。从那时起,基于 Flex 的 RIA 开发获得了越来越多的动力,RIA 也已经成为广泛接受的 Web 应用开发方式。今年,Adobe 将发布 Flex 4,随之而来的是 Flash Builder 4 以及 Flash Catalyst,他们都将成为 Adobe Flash Platform 技术的组成部分。最近 InfoQ 回顾了当前的 Flex RIA 生态圈以明晰 Adobe Flex 的现状。

Flex 开发环境

Adobe Flex Builder仍然是使用最为广泛的商业 Flex IDE。它构建在开源的 Eclipse IDE 平台之上。在 Flex 4 发布后,Flex Builder 即将更名为 Flash Builder。除此以外,Adobe Flash Catalyst目前还处在 beta 版,这是一款设计工具,旨在通过集成设计与编程以将 Flash 设计人员与 Flex 开发人员联系起来。

除了 Adobe 的工具外,Flex 开发也已经深入到了现有的各种 IDE 中。

应用框架

开发软件框架的目的在于实现常见的软件开发模式以提高编程生产率及改善质量。InfoQ 注意到 2008 年推出的一些 Flex/ActionScript 框架对于 Flex 使用率的提升功不可没。他们是CairngormPureMVCModel-Glue:FlexFoundryGuasax Flex Framework、ARPFlest FrameworkEasyMVC以及Adobe FAST。从那以后涌现出了越来越多的框架,这些框架丰富了 Flex 开发生态圈:

  • Ruboss这个Flex 框架集成了Ruby on RailsMerb。它还有一个 RESTful 接口以与 Adobe AIR 的嵌入式 SQLite 数据库进行通信。Ruboss 框架与 Rails 和 Merb 应用的关系就好像是 Adobe LiveCycle Data Services ES 与 J2EE 应用的关系一样。
  • Mate Flex 框架发布于 2008 年,其目的是简化事件驱动的 Flex 应用开发。
  • Swiz是个面向 Flex 的 IoC 框架。它并没有太多的强制要求,比如目录结构或是样板代码等,这一点与其他框架如 JEE 大不相同。
  • Prana是又一个面向 ActionScript 的 IoC 框架。它基于Spring 框架的 XML 方式进行开发。
  • JumpShip是个 ActionScript MVC 框架,包含了标准的数据模型以进行自动化的数据分类、枚举以及搜索。它反对在框架中使用单例模式,而单例模式在现代的软件框架中得到了广泛的应用。
  • GAIA是个面向 Adobe Flash 的前端 ActionScript 框架,支持 Flex Builder。
  • Razor是个 ActionScript 组件框架,对常用的 Flex 组件提供了另一种选择。
  • Flight Framework是又一个 ActionScript 框架,支持 MVC 及其他设计模式。

Flex 与 AIR 开发工具支持

如果没有调试、测试、日志以及文档,软件开发怎能进行下去。在过去几年中,Flex/ActionScript 社区创建了大量的开发支持工具。

  • RIATest是个面向 Flex 的 GUI 自动化测试工具。它支持 Windows 以及 Max OS X。
  • Flexcover是个面向 Flex、AIR 以及 ActionScript 3 的开源代码覆盖率检测工具。
  • Alcon是个轻量级的调试工具,支持ActionScript3、Flex 及 AIR 开发。
  • Fluint(Flex unit and integration 的简称)是个面向 Flex 2/3 应用的测试框架,无论应用是通过 Adobe Flash Player 部署在 Web 浏览器中还是通过 Adobe AIR 部署在桌面上。
  • Arthropod是个面向 Flex 和 AIR 开发的调试工具。凭借 Arthropod,开发者可以在运行期轻松调试应用。
  • De MonsterDebugger是个面向 Adobe Flash、Flex 及 AIR 项目的开源、轻量级,但功能完善的调试器。它完全使用 Adobe AIR 开发
  • ASTUce是个衰退测试框架,其灵感来源于 xUnit 架构,如 JUnit。它支持对 ActionScript 3 的单元测试。
  • AsUnit是个面向 ActionScript  3 的开源的单元测试框架。AsUnit 2.x 已经完全集成了 Flash IDE。
  • FlexMonkey是个面向 Flex 应用的测试框架,它可以对 Flex UI 功能进行捕获、重放以及确认。FlexMonkey 可以记录并回放 Flex UI 的交互并生成 ActionScript 测试脚本,这些脚本可以轻松集成到持续集成过程中。
  • Xray是个 Flash 应用检测工具,用于在运行期调试应用而不会增加应用负载。
  • FlexPMD是由 Adobe 创建的,旨在通过审查 AS3/Flex 源代码目录来改进代码质量和检测常见的最差实践。
  • Natural Docs是个文档生成工具,支持多种语言,包括 ActionScript 3。

Flex 企业级开发

Adobe 在企业应用系统开发上投入了大量的人力物力。大多数企业系统都需要服务端开发和集成,Adobe 的开源产品 BlazeDS 及商业产品 Livecycle DS 在这其中扮演着重要的角色。此外,Flex/ActionScript 社区也开发出了各种服务端集成工具以支持 Flex 企业级 RIA 开发。

  • Potomac framework for Flex 用来开发大规模的 Flex 应用,它利用了模块化方法而没有使用 Flex 模块框架。其灵感来源于OSGi,后者则被众多的应用服务器厂商使用以支持服务端的模块化功能。
  • FluorineFx提供了一个 Flex/Flash Remoting、Flex Data Service 以及实时消息功能的.NET 框架实现
  • FxStruts则是一个开源的程序库,提供了与Struts中的 bean:write 相同的功能,但其输出格式为 AMF 或是 XML。
  • X2O是面向 Adobe Flex 应用的基于 Web 的数据建模平台。它会生成一个远程托管框架,这样开发者只需编写客户端即可。
  • Spring BlazeDS integration是个 Spring 组件,用于简化以 Adobe Flex 作为前端的基于 Spring 的 RIA 开发。
  • Spring ActionScript以前叫做 Prana framework(上面提到过)。
  • Granite Data Services是个免费(基于 LGPL)的组件,作用与 Adobe LiveCycle Data Services 一样。
  • Red5是个开源的 Flash 服务器,使用 Java 编写。
  • AmFast是个面向 Python 的 Flash Remoting 框架,支持 NetConnection 与 RemoteObject RPC。
  • Exadel Flamingo可以将 Flex、JavaFX、Swing、J2ME 以及 Android SDK 粘合到 Seam、Spring 及 JEE 中。
  • 还有面向各种脚本语言的 Flash Remoting 支持:面向 PHP5 的PHPObjectSabreAMF、面向 JEE 的OpenAMF、面向 Perl 的AMF::Perl以及面向 Python 的AmFast

展望未来,Flex RIA 开发的下一领域将是移动平台。一系列事实表明即将发布的 Adobe Flash 10.1 将能够运行在大量的智能设备上,比如将要发布的 Google Nexus One phone 将安会安装 Flash 10.1。一旦 Flash 移动技术横空出世,Flex 社区将会大举进军移动平台。

InfoQ 将会持续关注并报道 Flex RIA 领域的最新进展。

查看英文原文:The State of Flex RIA Development Ecosystem

Java语言 & 开发