Adobe Flex 2和Java创建富Internet应用 Flash + POJO = RIAs Victor Rasputnis,Yakov Fain,Anatole Tartakovsky
一般的Java开发者知道,当需要为Java应用程序开发GUI时,Swing是一个工具。Eclipse SWT也有很多拥护者,但多数人使用Swing。十年来,经验证明Swing开发GUI并不轻松,你必须精通事件派发线程,GridBagLayout等等。近来,NetBean团队创建了一个叫作Matisse的不错的GUI设计工具,并且它已经集成到MyEclipse开发环境。和Matisse相比而言,JBuilder是最棒Swing GUI工具,但它太贵了。目前,优秀的GUI设计者使用免费的NetBean。 为什么不考虑使用Flex开发富Internet应用(Rich Internet Applications,简称RIA)? 首先,我们给出一个简短的回答。看一下Listing 1示例代码。这段代码编译并运行在Flash播放器中,运行结果如Figure 1所示。对,它是一个拥有几个节点的树控件,它能展开、收缩,还能突出显示用户选中的节点。想象一下实现相同功能要编写多少Java代码。
Listing 1: HelloTree.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical">
<mx:Label text="Rich Internet Applications with Adobe Flex and Java"/> <mx:Tree id="tree1" labelField="@label" showRoot="false" width="400"> <mx:dataProvider> <mx:XML format="e4x"> <folder label="TOC"> <folder label="Chapter 1"/> <folder label="Chapter 2"/> <folder label="Chapter 3" > <Sample label="HelloWorld" /> <Sample label="HelloBasil" /> <Sample label="HelloBasilAS" /> <Sample label="HelloTree" /> </folder> <folder label="Chapter 4" /> </folder> </mx:XML> </mx:dataProvider> </mx:Tree> </mx:Application>

这段代码优雅而简洁;界面也显得漂亮迷人。Flex编译器自动地将Listing 1中的MXML代码转换成OO语言ActionScript(译注:符合ECMAScript规范,与JacaScript类似),然后再将它编译并生成一个可被Flash播放器识别、运行的SWF文件。
要给这个示例添加商业逻辑处理,我们需要用ActionScript 3.0语言编写事件处理过程,这与Java有些类似,但我们不必担心路由所有事件到事件派发队列等麻烦。Flex/Flash相结合进行RIA开发是一种很有前途的技术,下面列举一些原因: • Flash播放器是一个强大的跨平台的、拥有一个高性能的byte code/JIT编译器以及丰富UI API的虚拟机。 • 虚拟机(译注:即ActionScript Virtual Machine,简称AVM)体积很小。 • 易与Web浏览器集成。 • Flash应用可以在Web浏览器之外运行(指不使用Web浏览器也可以运行)。 • Flex提供了基于组件的编程方式,消除了大部分低级别的编码。 • 它提供了与多种媒体(例如视频和声音)的简单整合。Java Swing在这方面很落后。 • 与Adobe其他产品类似,它有快速的采用率(指易于被接受使用)。 • 最重要的是,Flex 2很容易在服务端与Java进行集成。 我们稍后用Flex开发一个Stock Portfolio应用程序,再把它与POJOs集成。 Flex客户端应用程序编译成SWF文件并传递到客户端,在Flash播放器(作为插件安装到Web浏览器)运行。Flex客户端由Flash播放器、预置组件框架、几个编译器以及一个基于Eclipse插件的Flex Builder IDE组成。Flex服务器端是一个Web应用程序(译注:详见Flex的部署部分),由Flex Data Services(FDS)和Flex图形组件组成,它们能部署在任意的J2EE服务器中。
要了解Flex实战应用,让我们编写功能实现,然后开发并部署一个示例应用。
设计Stock Portfolio应用程序 我们要创建一个Web应用程序,它接收并显示股票价格及最近新闻(如图2、3所示)。 顶部界面(译注:即主界面的TOP部分)必须放置用户投资的各种股票。为简单起见。在XML文件存储用户投资信息(见Listing 2)。 Listing 2: portfolio.xml 片段
<portfolio> <security> <Symbol>MSFT</Symbol> <Quantity>10000</Quantity> <Price>20.56</Price> <Value>1</Value> </security> <security> <Symbol>IBM</Symbol> <Quantity>3000</Quantity> |