Online Book Reader

Home Category

Beautiful RIA [16]

By Root 418 0
是开发 RIA的最佳组合之一。无论是高度交互的网站还是以 Java为后端的企业应用,这项组 合都是最佳选择之一。更重要的是,这项组合能同时为开发员和企业带来高回报(ROI)。

在阐述 Java程序员应当学习 BlazeDS的 13条理由时,我以一个假想的苏打分派系统来展示 如何让已有的 Java程序转变为 RIA应用。通过这个例子,我同时还会讲解到 BlazeDS在已有 Java应用或新建 Java应用中的多种不同用法。

理由一:开源

Flex 软件开发工具箱(SDK)的核心是个开源框架,专门用来开发、维护那些在不同浏览器、 不同操作系统下界面都相同的 RIA应用。Flex发布采用的是 Mozilla公共许可证(Mozilla Public License)。编译后的 Flex应用在 Adobe Flash平台下运行。

BlazeDS 是连接 Flex和 Java的索桥,是项针对远程调用和消息传递的开源技术。在 Java应用 服务器上,它以 servlet的形式存在,因此可以在任何标准 Java网络应用中运用它。BlazeDS 以 LGPL(Lesser GNU Public License)公共许可证书发布。在发布 BlazeDS的同时,Adobe还 公布了 AMF(ActionScript Message Format)规格说明,BlazeDS、Java和 Flex客户端间以这 种简洁的二进制格式实现通信。

理由二:完善的社区支持

Flex社区非常活跃,社区贡献了大量项目。Flex.org,这个配以社区新闻的 Adobe站点几乎 每天都有新的社区贡献;Yahoo!上的 Flex用户组的成员也已经超过了 11000。

Java程序员学习 Flex和 BlazeDS的十三个理由

再比如 Google Code上的 Flexlib项目,已经提交了大量的开源 UI组件。Swiz和 Mate项目贡 献了优化事件处理的框架;还有 Gorilla Logic贡献了自动化 UI测试的 Flex Monkeym项目。

理由三:带来广阔的就业前景

据 Adobe的 Flex“传道士”——James Ward看来,Flex高级开发员的市场需求非常大,学习 Flex 能让你拥有极具市场竞争力的开发技能。

理由四:更高的业务效益回报

总体上,开发企业 web应用不是个轻松的活,这基本上是众所周知的事实。Flex和 BlazeDS 提供的不仅仅是功能强大的开发工具,而且开发技术本身相对也非常简单。开发效率可以得 到大幅度的提升,产品因此可以很快推向市场。Flex和 Flash带来的用户体验也相对更有魅 力,对增加流量、提高用户转化率(conversion rate)很有帮助。

很经典的一个例子是 Borders连锁书店。他们最近发布了带有“魔法书架”的新网站,这个网 站采用 Flash接口来模拟书籍借阅的过程。 Borders发现这一模拟借阅非常明显地提到了用 户转换率:“借助这个 Flash驱动的接口,用户可以浏览书籍、DVD和 CD的封面,用户转换 率比其他没有此项功能的网站高出 62%”。

理由五:Flex是第一个专门为创建 UI而设计的语言

大部分语言都不是在第一时间设计其对 UI的支持。Java中 Swing包的实现刚好是个很好的 证明。也就是这个原因,很多像捆绑数据这样的简单动作在 Swing当中的实现就非常痛苦。 用 Swing最大的问题在于,要想提高开发效率就必须要对其 API了如指掌。

Flex 刚好相反,它是专门为创建web UI而设计的。正如Bruce Eckel所说,Flex是第一个针 对 UI开发的领域特定语言(DSL)。 用 Flex构建 UI比其它诸如 JSP、JSF、Swing等技术简便 得多。语言本身糅合了数据绑定、事件处理、控件布局以及其它一些 UI常用开发技巧,就 算对语言没有深刻的理解也不会影响开发效率。

理由六:编程风格近似于 Java

你可以继续使用现有的 Java开发工具来开发 Flex应用。当然也可以采用 SDK中携带的免费 命令行工具,Adobe Flex Builder(一个 Eclipse插件),或最近的 IntelliJ IDEA 8。

Java程序员学习 Flex和 BlazeDS的十三个理由

Flex 提供的是一个有状态环境,在这个环境中,数据从客户端加载。这种编程模式更像是开 发桌面客户端而非 HTML编程,这种风格对于用过 Java Swing编程的开发员来说应该是相当 熟悉。

Flex 是 MXML(类似 XML的 UI标记语言)和 Adobe ActionScript(面向对象的解析语言)的 结合体。鉴于这种结合方式,Flex编程与 Java非常相似,因为两者用的都是熟知的面向对象 的概念。

最理想的开发环境是把 Flex应用创建在 web部署文件夹下。这样一来,每次更新应用之后 都不需要重新部署,只要在浏览器下刷新一下就可以了。用 Flex和 BlazeDS开发后,开发效 率绝对比之前有很大的提升。

理由七:BlazeDS可以在任何 Java应用服务器上运行

BlazeDS 目前已发布了多个版本,其中的 turnkey版本还包含了为 BlazeDS配置的 Apache Tomcat。本文中,我用的是二进制发布版本,其中含有一个 WAR用来展示如何把应用部署 到各种应用服务器上去。不用这个 WAR的话,你也可以从中提取 JAR文件放到自己的项目 中去。关于安装 BlazeDS的各种选项内容,可以参见 BlazeDS的 wiki。

这里举一个简单的例子,比方说要在已有的一个简单的苏打调配系统中应用 BlazeDS。你只 要把 JAR文件放到项目文件夹下,然后就可以在应用里直接用 BlazeDS,可以部署到能够部 署应用的任何地方。

在项目中添加 BlazeDS,只需要完成下面两个步骤:

1. 解压缩 BlazeDS WAR文件的内容:jar xvf blazeds.war。

2. 把 JAR文件都拷贝到项目的 lib文件夹下:cp -R WEB-INF/lib /sodaSample。

理由八:可以在已有 Java应用中运用

比方说这个简单的苏打调配系统,假设你想要扩展这个已开发好的服务,让其它 Flex应用 可以远程调用。在现成的应用中配置 BlazeDS的基本步骤有:

1. 修改 WEB-INF/flex文件夹下的 BlazeDS配置文件

2. 在该应用对应的 web.xml文件里定义 MessageBrokerServlet和 session监听器

配置好 BlazeDS之后,再把苏打调配服务添加到 BlazeDS远程配置文件里,Flex客户就能远

Java程序员学习 Flex和 BlazeDS的十三个理由

程调用了。这个过程通过在配置文件里定义一个目的地( destination)、一个或多个信道 (channel)来传输数据。基本的 AMF信道定义在 services.xml文件里。下面这段配置在 remoting-config.xml里定义了目的地(destination):

com.gorillalogic.sodaSample.SodaService

通过在远程调用配置文件里定义端点(endpoint),Flex客户端就可以调用任何一个基本的 Java服务。

要是想把 Java数据模型也传送到 Flex客户端的话,只要在 ActionScript类中定义好两者间的 映射:

[Bindable]

[RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]

这段代码告诉 Flex,在远程调用的服务返回 SodaModel的时候,把它映射到 Flex的 SodaModel。本例中的 Flex客户端显示的就是如何调用这个 Java服务。调用返回一个已经填 写好预定信息的 SodaModel:

public function callSodaService():void {

var sodaType:String = type.text;

var sodaCount:int = parseInt(cnt.text);

var flag:Boolean = preOpen.selected;

remoteObject.getSoda(sodaType, sodaCount, flag);

}

private function resultHandler(event:ResultEvent):void {

var sodaModel:SodaModel = event.result as SodaModel;

}

Flex 返回的结果是通用的 result变量,可以直接映射到你的 SodaModel。这里我就不深入讨 论怎么实现映射了,但其中值得提到的是要在编译配置里声明 services-config.xml路径,像 这样:

-locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml

-context-root /

如果不添加这个路径的话,你的 Flex客户端就没发找到 Java服务。同样的方式,你还能把 一个对象从客户端传递回服务器端。比如,你可以把一个空的 soda model发回服务器(审 校注:

Return Main Page Previous Page Next Page

®Online Book Reader