java程序员学习Flex和BlazeDS的好处

37 篇文章 0 订阅
Java程序员必须学习BlazeDS的十三个原因。通过这个例子,我来解释你可以使用BlazeDS的不同方法,任何一个你现有的Java应用程序或者新的Java应用程序。

  理由一:开源

  Flex软件开发工具包核心(SDK)是开源架构,用以创建以及维护RIAs,不同浏览器和操作系统具有同样的外观设计风格。Flex是在Mozilla公共许可证下发布的。经过编译的Flex应用程序在私有的Adobe Flash平台上运行。

  对于连接Flex 和Java,BlazeDS是为远程和信息服务的开源技术。它作为servlet运行在Java应用程序服务器,允许你在任何Java web应用程序规范中使用。BlazeDS是从Lesser GNU Public License (LGPL)得到的许可。除了BlazeDS的发布,Adobe公布了ActionScript信息格式说明(AMF),允许BlazeDS 和Java与Flex客户端联系使用二进制格式。

  理由二:强大的社区支持

  Flex具有一个非常活跃的社区,有很多有贡献的主题。Flex.org,是一个关于Adobe的社区新闻站点,差不多每天都有更新,Yahoo! 上的Flex使用小组有超过11,000名成员。

  比如,Google 编码上的FlexLib项目贡献出大量的开源用户界面(UI)组成部分。Swiz 和 Mate项目贡献出一个架构来帮助处理事件。Gorilla Logic已经为自动化的UI测试贡献出Flex Monkey。

  理由三:你可以在六个月内得到一份工作

  根据Adobe的Flex教父James Ward的说法,市场对Flex高级工程师仍然有很大的需求。学习Flex能够让你掌握一门技术,在竞争中处于优势地位。

  理由四:更高的商业投资回报率

  一般来说,开发企业级web应用软件是众所周知的困难。Flex 和BlazeDS提供的不仅是更高级的工具,而且更容易扩展。开发者生产力的增长允许市场上销售的更多更快。Flex 和Flash创造了更完美的用户体验,提升了销量以及价格。

  一个理想的例子是博德斯图书连锁店,它最近在介绍一种新的具有“Magic Shelf”的website。这个站点使用Flash界面来模拟翻书的感觉。博德斯书店发现这真的可以提高流通率:“使用这种Flash仿真界面,顾客可以查看图书,DVD和 CD的封面,使用这一举措比没有体验过的顾客多62%的购买率”

  理由五:Flex 是第一种用来设计UIs的语言

  很多设计语言都是在事后增加了创建UIs的支持功能。特别体现在Java Swing上。因此,Swing处理一些简单事情,比如线路数据,是非常痛苦的,要求使用特殊的Swing数据模型。Swing的最大问题是你不得不在应用程序界面中挖掘很深才能有效。

  Flex恰恰相反:它一开始就是为创建web UIs而设计的。就像Bruce Eckel经常说的那样,Flex是第一款为UI设计的特定语言。所以使用Flex创建UI比使用其他方法要简单,比如JavaServer Page(JSP),JavaServer Faces (JSF)以及Swing。数据绑定,事件句柄,元件布局还有其它的常见UI发展技术都可以被这种语言创建,甚至你仅仅掌握了一小部分语言知识就可以。

  理由六:拥有与Java类似的设计模型

  你可以使用现有的开发Java的工具进行开发。你也可以使用包含在SDK中免费的命令行工具开发Flex应用程序,通过Adobe Flex Builder(一个Eclipse插件)或者使用最近的IntelliJ IDEA 8。

  Flex提供一个状态环境,数据可以加载到客户端。编译模型与Hypertext Markup Language (HTML)设计相比更像是编译一个桌面客户端,使得任何下载Java Swing设计的人都对编译模型感到很熟悉。

  Flex编译使用了一个MXML组合,一个UI markup语言,与可扩展的Markup 语言 (XML)相似,还有Adobe ActionScript和面向对象的脚本语言。这个组合使得编译Flex与编译Java相似,因为你可以使用概念非常熟悉的面向对象的方式。

  理想的方法是创建你的开发环境使得Flex应用程序能够在web开发地址录中创建。使用这种方法,你不需要在每次创建后重新部署您的应用程序:一个简单的浏览器恢复功能,可以看到最后一次操作。结果是使用Flex 和BlazeDS开发相当有效。

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

  BlazeDS的多个版本都是可以使用的,包括即将投入使用的包含Apache Tomcat设置的版本。在这篇文章中,我使用二进制分布,作为web档案(WAR),来显示你在应用服务器上如何进行部署。否则你可以引用Java存档(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应用程序上使用

  再soda的例子中,假设你想要暴露现有的soda服务以便远程的Flex应用程序可以与之链接。在现有的应用程序上创建BlazeDS的基本步骤如下:

  1、 在WEB-INF/flex目录下编辑BlazeDS配置文件。

  2、 在应用程序上web.xml上规定MessageBrokerServlet 以及session listener。

  创建BlazeDS以后,你需要增加你的soda服务到BlazeDS远程配置文件,它允许从Flex 客户端访问soda服务。通过规定一个目的地以及一个或者更多的数据传送渠道来实现添加。基础的AMF渠道在服务器.xml文件中被定义。通过这个定义在远程config.xml 中识别你的目的地:

        < destination id="sodaService" channels="my-amf">

  < properties>

  < source>com.gorillalogic.sodaSample.SodaService< /source>

  < /properties>

  < /destination>

  

 通过在远程配置文件中定义端口,你可以从Flex客户端访问任何一个Java服务。

  传递Java数据模型到Flex客户端,在你的脚本class中定义两者之间的映射:

  [Bindable]

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

  这段代码显示Flex,当远程服务访问返回Java SodaModel的结果把其映射到你的SodaModel。Flex客户端的示例显示如何访问这个Java服务。访问返回一个odaModel,根据你的命令:

        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从变化的结果中返回你的结果,映射到你的SodaModel上。我不在这里讲述细节,但是一个需要说的细节是在汇编配置中指定services-config.xml,像以下所写:

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

  如果不这样,你的Flex客户端将无法找到Java服务。同样的方法,你可以从客户端传递一个对象返还到服务。比如,你可以传递空的soda model返还到客户端。

  理由九:你可以扩展BlazeDS以及使用Java对其进行修改

  假设你决定当soda服务器被访问的任何时候,要增加一个特别的logging。你可以扩展Java编辑者的标准来增加logging。

  首先,增加Java类别扩展JavaAdapter:

        import flex.messaging.services.remoting.adapters.JavaAdapter.

  public class TimingJavaAdapter extends JavaAdapter {

  Then, overload the invoke() method:

  public Object invoke(Message message) {

  RemotingMessage remotingMessage = (RemotingMessage) message;

  String operation = remotingMessage.getOperation();

  String destination = remotingMessage.getDestination();

  Logger.info("calling " + operation + " on destination " + destination);

  Object data = super.invoke(message);

  return data;

  }

  

 使用这种方法,你可以看见即将要进行的操作以及访问的目的地。你可以使用这种简单的hook,比如说你可以测试对服务器多长时间的访问是最有意义的。

  理由十:你可以从HTML 和JSP访问BlazeDS

  你可以用不同的方式进行访问,比如通过浏览器管理或者flashVars。flashVars可以通过HTML页设置,然后通过Flex引用程序读出。

  举个例子,比如你想要传递你的用户名以及用户类型,想要从HTML页面上进行命令。你必须要在HTML页设置flashVars,如下:

        < object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>

  < param name='src' value='SodaSample.swf'/>

  < param name='flashVars' value='username=ryan&type=coke'/>

  < embed name='mySwf' src='SodaSample.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='username=ryan&type=coke'/>

  < /object>

  

 然后,在你的Flex应用程序中你可以通过应用程序参数读出这些变数:

      var username:String;

  if (Application.application.parameters.hasOwnProperty("username")) {

  username = Application.application.parameters.username;

  }

  理由十一:Flex 和BlazeDS的数据传送比其它的Ajax解决方案好

  默认情况下,所有的远程程序调用(RPCs)在使用的时候运用的是AMF二进制协议。一个开放的标准,AMF极端的迅速。James Ward组成了一个整体样本显示与其他它远程解决方案的对比。尽管其它的异步式JavaScript 和 XML (Ajax)解决方案,比如Dojo与几个成百的队列进行对抗,具有BlazeDS的Flex可以轻松的解决几千个队列。(James Ward为不同的RIA数据加载技术基准做的统计)

  理由十二:你可以直接从Java 客户端访问BlazeDS

  BlazeDS最新发布的版本包含一个Java AMF类,你可以使用它使得Java 客户端访问BlazeDS服务。这种访问unit testing的方法在单元测试以及下载测试中都显示极其有效。

  理由十三:和Spring框架一起使用

  Adobe 与 Spring框架的组合带来两个项目之间更紧密的结合,最初发布的Spring-BlazeDS整合就显示了很多前景。通过允许Spring Bean成为远程服务,完全一样的配置文件将会被删除。

  结论:

  BlazeDS成为开源并且基于Java,对于新事物以及现有的Java服务项目这的确是一个好的选择。优秀的远程交流性能以及Flex 和Java之间的对象映射,Flex和 BlazeDS技术是RIA发展的一个好的选择。Flex 和BlazeDS对于 Java开发者来说是新鲜事物,开发者们会发现它的发展进程非常丰富,并且非常容易学习。

  有BlazeDS 伴随的Flex也是大型企业级应用软件的一个好选择。在以前的一个项目中,我的团队写一个应用程序会包含超过50种不同的表现形式,在服务器与客户端之间规律的转移一些上千行的数据。这种应用程序已经几乎不可能使用传统的Ajax技术。使用Flex 和BlazeDS,在接下来的一年中我们将可以发布最初的版本。看一看这种充满活力的工具可以为你的应用程序发展项目做什么吧。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值