Flex SDK 与 Flash Builder 4:深度对话 Andrew Shorten

  • Ryan Slobojan
  • 张龙

2010 年 6 月 24 日

话题:Java语言 & 开发

最近,Adobe发布了 Flex 4 SDK与 Flash Builder 4(此前叫做 Flex Builder 3)。InfoQ 有幸采访到了 Adobe 高级产品经理Andrew Shorten以深入了解此次发布的相关信息以及他们将如何适应整个 Flash 平台和未来的期望。

InfoQ:随着从 Flex 3 到Flex 4的迁移,整个 Flash 平台似乎都有一些变动,包括将 Flex Builder 的名称改为Flash Builder。能否详细谈谈这一点呢?

Andrew Shorten:在 Flex Builder 3 发布后,我们发现不仅是那些需要代码编辑、调试、分析等特性的 Flex 开发者在使用这个 IDE,那些只开发 ActionScript 项目和使用 Flash Professional 的开发者(也会花不少时间编写代码)也都纷纷转向了 Flex Builder。

Flex Builder 对日益增长的非 Flex 开发者的吸引力与日俱增,Flash 平台的势头也越来越猛,我们觉得无论是否加进 Flex 框架,开发者都还在开发着 Flash 应用,基于以上考虑,我们觉得改名字很有意义。现在,随着 Flash Builder 4 的发布,我为我们的决定感到骄傲:Flash Builder 依然为 Flex 开发者们提供最具效率的开发环境,此外还为那些使用 Flash Catalyst 的人们提供了工作流,包括对 Flash Professional 项目的新支持,根据 ActionScript 开发者们的需要提供了健壮的代码编辑功能。

本质上,我们承认 Flash Builder 是个专业的开发环境,面向那些使用 Flash 平台的开发者们,也就是说,如果你在编写 MXML 或 ActionScript 代码,那么 Flash Builder 将是你的不二之选。现在,Flex 的定位更加清晰了:Flex 只用来连接开源的 SDK 来构建 RIA。

除了名字上的变化,我们在 Flash Builder 4 中增加了 70 多个新特性:很多新特性都与代码编辑、调试和分析相关,这会极大提升 ActionScript 或 Flex 应用开发者的生产率。甚至对于 Flash Builder 4 中所增加的特定于 Flex 的特性来说,那些使用 Flex 3 SDK 和 Flex 4 的人们也会从中受益无穷。

我写了一篇博客,完整地介绍了 Flash Builder 4 中的新特性并给出了对应的文档链接,感兴趣的读者可以自己去研究这些新特性。

InfoQ:Flex 3 开发者如何迁移到 Flex 4 上呢?现有的项目如何迁移到 Flash Builder 4 上呢?

Andrew Shorten:好消息是你可以将使用 Flex Builder3 开发的 Flex 3 应用迁移到 Flash Builder 4 上而无需使用 Flex 4 SDK:这样就可以在现有的项目中直接感受 Flash Builder 4 所带来的众多新特性。

我曾写过一篇文章,介绍了如何将项目导入到 Flash Builder 4 中,在迁移项目时要记住的关键一点是:在导入过程中,需要指定继续使用现有的 Flex 3 SDK 进行编译。

在将 Flex 3 应用迁移到 Flex 4 上时,工作量并不大。除了一些 bug 修复和默认主题的一点变化外,应用的开发方式与 Flex 3 相差无几,可能还要好一些。

如果想使用 Flex 4 的新特性则需要升级代码以使用新的 Flex 命名空间、将非可视化属性迁移到 declarations 标签中并更新状态代码以使用新的内联语法,此外,如果想使用全新的 Spark 组件、基于 Spark 的可视化效果或是 Flash Player 10 新增的 Text 功能,那么你需要做一些额外的迁移工作。

Adobe 发布了一个迁移指南(PDF)来帮助开发者升级现有的应用,Adobe Developer Connection 站点上也有关于该主题的一些资源供大家参考。

InfoQ:Flex 4 和 Flash Builder 4 的新特性主要有哪些呢?

Andrew Shorten:在 Flex 4 SDK 中,我们实现了一个全新的组件和皮肤架构(Spark),这为 RIA 增加了新的表现力。借助于新的 Spark 组件和皮肤架构,组件逻辑从组件可视化代码中“剥离”开来,可以更加直接地定制组件的行为和感官。此外,在 Flex 4 SDK 中,Flex 编译器的性能也得到了改善,同时增强了大量语言和基础设施等特性,对新的 Flash Player 10 运行时提供了完美的支持。

在 Flash Builder 4 中,我们可以通过一套完整的以数据为中心的特性、借助于 Flash Catalyst 和 Flash Professional 所提供的新的设计与开发工作流轻松实现与后端服务的连接;此外,我们还增强了核心的代码开发特性,以达到提升开发者效率的目的。

我们还实现了新的重构功能、改进了调试器以支持条件断点、观察点和表达式赋值,增加了代码生成功能,借助于新的网络监控和 FlexUnit 支持,应用的测试变得轻而易举。如前所述,无论使用 Flex 3 还是 Flex 4 SDK,开发者都可以充分利用这些改进,这样 Flash Builder 4 对整个开发过程都会起到帮助作用,即便没有使用新的 Spark 组件也没关系。

InfoQ:Flex 3 和 Flex 4 的组件模型有何不同?

Andrew Shorten:Flex 4 新增的一个主要特性是全新的皮肤与组件架构,叫做 Spark。

借助于 Spark,设计师和开发者可以更加直接和高效的方式无缝定制 Flex 组件的可视化元素与行为。Spark 架构的主要思想由一个皮肤模型支撑,它将组件的可视化元素与逻辑分离开来。这种分离赋予设计师和开发者更大的自由,可以随心所欲地设计 Flex 组件的可视化元素而不必顾虑组件的逻辑实现了。在了解了 Spark 皮肤模型后就能在很短的时间内构建富于表现力和健壮的 Flex 组件了。

InfoQ:最近很多人都在议论更大的 Flash 平台,比如几个月前收购了 Omniture,能否谈谈这个 Flash 平台呢?

Andrew Shorten:这个 Flash 平台包含了客户端运行时、框架、工具、服务器以及服务,设计师与开发者可以使用他们构建应用并部署到日益增长的联网设备上。

Flash Builder 是 Flash 平台不可分割的一部分,开发者可以使用它和 Flex 框架构建跨平台的 RIA 与内容,然后使用 Adobe Flash Player 部署到 Web 上或是使用 Adobe AIR 部署为桌面应用。将来还可以使用 Flash Builder 开发面向移动电话、平板电脑和其他设备的 Flex 应用,只要这些设备上有 Flash Player 或 Adobe AIR 就行。

从集成的角度来看,我们把重点放在了与 Adobe 服务器(比如 ColdFusion 和 LiveCycle)和服务供给(比如最近收购的 Omniture 所提供的服务)相关的工作流上,当然了,开发者还是可以使用众多的非 Adobe 技术来连接并交换数据。

在 Flash Builder 4 中,我们增加了一套以数据为中心的开发特性,可以探析到服务器端服务,Flash Builder 也可以生成服务器与相关数据模型的客户端表示,开发者可以将服务操作拖拽到可视化的组件上以绑定返回的数据,这样就能很快地将数据集成到 Flex 应用上,也能够与 XML、PHP、ColdFusion、 Java、Web Services(通过第三方适配器)和.NET 协同工作。Adobe LiveCycle Data Services 通过向 Flash Builder 增加应用建模工具进一步升华了这种能力,它还支持高性能的数据消息和高质量的服务交付,同时还能实现离线的数据管理。

关于 Omniture,我们打算发布一个 Flash Builder 扩展,可以让开发者在 RIA 开发过程中以可视化的方式追踪 SiteCatalyst,这么做就无需手工标记内容,进而减少实现时间,还可以映射自定义变量以实现追踪与分析的功能。

InfoQ:在 Flex 4 中,Adobe 为大多数现有的 Flex 3 组件都提供了新版本,但并非全部。比如说,Halo(Flex 3 组件模型)有 DataGrid,但目前并没有对应的 Gumbo(Flex 4 组件模型)版本。是否打算解决这个问题呢?如果是,大概什么时候呢?

Andrew Shorten:是的,但遗憾的是,目前有些组件我们还不能迁移到 Flex 4 组件模型上。也就是说,我们一开始就知道这是个问题,因此我们的做法是在同一个应用中,让 MX 和 Spark 组件的和谐共处变得简单,这样,即便是缺少 Spark DataGrid 也不会妨碍你迁移到 Flex 4 上。

当然了,我们打算发布剩余关键组件的 Spark 版本(比如 DataGrid、Tree 和 Form),就在即将发布的代号为“Hero”的 Flex SDK 中。虽然我们还无法预计该版本 SDK 的确切发布日期,但开发者可以通过 Adobe Open Source 站点上的每夜构建了解我们的开发进度。

InfoQ:虽然 Flex 4 改进了编译器性能,但 Flex 编译器在编译时间上还是远远落后于 Java 编译器。编译 Flex 的时间为何要比 Java 慢那么多?Flex 编译器的编译时间何时能达到 Java 编译器的水平?

Andrew Shorten:改进 Flex 编译器的速度始终是每个 Flex 版本的目标。在 Flex 4 中,编译期的编译速度和内存使用率上已经好了很多。接下来的几个版本中,我们会加倍努力提升 Flash 的编译速度,以期能达到其他技术的水平。值得注意的是,人们已经投入了多年的努力改进 Java 等技术的编译性能。与之类似,Flash 和 Flex 的每个版本都会向编译性能的改进这个目标大踏步前进。

查看英文原文:Flex SDK and Flash Builder 4: An In-Depth Interview with Andrew Shorten

Java语言 & 开发