在开始参与Flex产品之后,才对Flex有了个基本了解。
Flex其实是一个产品家族的名称,包括Flex SDK、FlashBuilder和FlashCatalyst,Flex SDK是一个开源的产品,FlashBuilder和FlashCatalyst也是基于著名的开源平台Eclipse,这对于我这个开源拥护者无疑是非常有吸引力的,而且更大的惊喜是Flex中大量的使用了Java技术,且不说FlashBuilder是采用Eclipse作为平台,Flex SDK的编译器就是用Java语言写的。
Flex应用经过编译,可以成为ActionScript的字节码,在FlashPlayer虚拟机上运行,这个概念对于熟悉Java或.NET技术的人来讲并不陌生。
相比于Java的虚拟机,FlashPlayer要简单很多,同时大小上也小很多。Flex的组件库也没有Java Swing那么庞大而复杂,但这可能恰恰是Flex的优势吧—-没有了Java 2D复杂的组件,使开发者易于学习,据说大多数的Flex开发者都不知计算机专业的。
Flex的核心是ActionScript,一种非常类似Java的语言。虽然名字看上去像一种脚本语言,其实ActionScript是需要编译的,不过并不是编译成真正的机器代码,而是一种可以运行在FlashPlayer虚拟机上的字节码。不过,Adobe觉得直接使用ActionScript开发Flex应用还是不够简单快捷,所以有提供了一种称之为MXML的语言来描述用户界面。MXML完全采用XML的语法定义,开发者可以根据自己的设计,描述用户界面的结构,MXML中可以嵌入ActionScript语句,用来描述事物逻辑和事件响应。在编译的时候,MXML先被转成ActionScript程序,而后再被编译。
FlashBuilder则是一个基于Eclipse的集成开发环境,提供了可视化的界面设计、方便的代码跟踪和调试等功能,最大限度的提高了开发者的生产率。
FlashCatalyst是个非常有特色的产品,它并不是给程序员使用的,而是给UI设计者使用的。设计人员可以把一些预先在Photoshop中编辑好的图形导入到Catalyst中,使用这些图形生成或定制一些个性化的UI控件,并对这些控件的效果进行设计。Catalyst并不提供代码的编写和调试功能(实际上也不需要),经Catalyst设计的项目可以被导入到FlashBuilder中,有程序员来定义和实现具体的业务逻辑。Catalyst有机地把Flex和Adobe其他的产品进行了连接,为Flex应用的设计和开发提供了全面的解决方案,使得Photoshop、Illustrator等产品可以被应用到Flex应用开发上,建立了一套Flex开发的生态系统,这一点是Flex的竞争产品(Silverlight和JavaFX)所不具备的。
Flex最吸引人的地方无疑是它丰富的控件库和绚丽的视觉效果,而作为一个普通的开发人员又根本不用去深入了解如何去实现它,只需要通过一些简单的描述 (使用MXML的语法) 就可以做出非常漂亮的应用,比我以前用Java 2D写不知道要简单多少倍。
随着对Flex的深入了解,我进一步体会到Flex对Internet应用的支持。Flex非常好的封装了访问HTTP和web服务的接口,使得访问Internet上的应用就像从一个变量上读取数据那么简单,你根本不需要知道一个web service是如何被调用的。
通过半年左右的学习,我对Flex已经有了一个比较全面的认识,我相信每一个使用过Flex的人都会喜欢上它。想想也是,现在99%以上的PC都已经预装了FlashPlayer,对于这样一个如此容易获得的平台,哪个程序员会不动心呢?
