最近,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