flex和blazeds

本文概述了Java程序员学习Flex和BlazeDS的13个原因。 它讨论了为什么Flex with BlazeDS是开发富Internet应用程序(RIA)的最佳选择之一-从高度交互的网站到带有Java后端的企业应用程序。 最重要的是,它显示了此组合为开发人员和企业提供的高投资回报率(ROI)。

在概述Java程序员学习BlazeDS的13个原因时,我使用了一个虚拟的汽水分配器来展示如何将现有的Java程序转换为RIA。 通过该示例,我说明了可以在现有Java应用程序或新Java应用程序中使用BlazeDS的不同方法。

原因1:它是开源的

Flex核心软件开发套件(SDK)是一个开放源代码框架,用于构建和维护RIA,这些RIA在不同的浏览器和操作系统上的外观相同。 Flex是根据Mozilla公共许可证发行的。 编译的Flex应用程序在专有的Adobe Flash平台中运行。

为了将Flex连接到Java,BlazeDS是一种用于远程处理和消息传递的开源技术。 它作为Servlet在Java应用程序服务器上运行,允许您在任何标准Java Web应用程序中使用它。 BlazeDS是根据较小的GNU公共许可证(LGPL)许可的。 随着BlazeDS的发布,Adobe发布了ActionScript消息格式(AMF)规范,该规范允许BlazeDS和Java使用紧凑的二进制格式与Flex客户端进行通信。

原因2:社区大力支持

Flex拥有一个非常活跃的社区,其中包含许多社区贡献的项目。 Flex.org是一个包含社区新闻的Adobe网站,几乎每天都能看到社区的贡献,而Yahoo!上的Flex用户组也是如此。 拥有超过11,000名成员。

例如,Google Code上的FlexLib项目贡献了大量的开源用户界面(UI)组件。 Swiz和Mate项目贡献了一个框架来帮助处理事件。 大猩猩逻辑公司为自动UI测试贡献了Flex Monkey。

原因3:您可以在另外六个月内找到工作

根据Adobe的Flex传播者James Ward的说法,仍然需要高级Flex开发人员。 Learning Flex为您提供适销对路的技能,使您在竞争中处于领先地位。

原因4:更高的业务投资回报率

通常,开发企业Web应用程序非常困难。 Flex和BlazeDS不仅提供功能更强大的工具,而且更易于开发。 开发人员生产力的提高使组织可以更快地进入市场。 Flex和Flash还可以创建更引人入胜的用户体验,从而可以增加流量和转化率。

一个理想的例子是Borders书店连锁店,该连锁店最近推出了一个新网站“ Magic Shelf”。 该站点使用Flash界面来模拟浏览书籍的体验。 Borders发现这大大提高了转换率:“使用Flash驱动界面的客户(允许访问者查看书籍,DVD和CD的封面)的转化率比不使用Flash的客户高62%” 。

原因5:Flex是设计用于创建UI的第一语言

后来,大多数语言都添加了对构建UI的支持。 对于带有Swing的Java来说尤其如此。 结果,Swing中的简单事情(例如接线数据)可能会很痛苦,并且需要使用特定于Swing的数据模型。 Swing的最大问题是,您必须非常深入地研究应用程序编程接口(API)才能发挥作用。

相反,Flex恰恰相反:它是从头开始设计的,用于构建Web UI。 正如Bruce Eckel所言,Flex是用于UI开发的第一种域特定语言(DSL)。 因此,与其他技术(例如JavaServer Pages(JSP),JavaServer Faces(JSF)和Swing)相比,在Flex中创建UI要容易得多。 该语言内置了数据绑定,事件处理,组件布局以及其他常见的UI开发技术,即使您对该语言了解甚少,也可以使您高效。

原因6:它具有类似于Java的编程模型

您可以使用用于开发Java的现有工具进行开发。 您还可以使用SDK附带的免费命令行工具,Adobe Flex Builder(Eclipse插件)或最近使用IntelliJ IDEA 8开发Flex应用程序。

Flex提供了一个有状态的环境,在该环境中可以从客户端加载数据。 与超文本标记语言(HTML)编程相比,该编程模型更像是开发桌面客户端,这使该编程模型对执行Java Swing编程的任何人都感到熟悉。

Flex是使用MXML(一种类似于可扩展标记语言(XML)的UI标记语言)和Adobe ActionScript(一种面向对象的脚本语言)的组合进行编程的。 这种组合使Flex编程类似于Java编程,因为您可以使用熟悉的面向对象的概念。

设置开发环境的理想方法是在Web部署目录中直接构建Flex应用程序。 这样,您无需在每次构建后重新部署应用程序:简单的浏览器刷新即可反映最新的更改。 因此,使用Flex和BlazeDS进行开发非常有生产力。

原因7:BlazeDS可在任何Java应用程序服务器中运行

可以使用多种版本的BlazeDS ,包括完整版本,其中包括使用BlazeDS配置的Apache Tomcat版本。 在本文中,我使用了Web存档(WAR)附带的二进制发行版,展示了如何部署到任何应用程序服务器。 否则,您可以提取Java归档(JAR)文件并在项目中使用它们。 请访问BlazeDS Wiki,以获取有关安装BlazeDS的各种选项的信息。

本示例将BlazeDS与现有项目(简单的苏打水分配器)结合使用。 您只需将JAR文件添加到您的项目中,然后就可以在应用程序中使用BlazeDS,这允许您将其部署到可以部署应用程序的任何位置。

要将BlazeDS添加到您的项目中,请完成以下步骤:

  1. 提取BlazeDS WAR文件jar xvf blazeds.war的内容。
  2. 将JAR文件复制到您的项目lib目录:cp -R WEB-INF / lib / sodaSample。

原因8:可以将其与现有Java应用程序一起使用

对于苏打水示例,假设您要公开现有的苏打水服务,以便远程Flex应用程序可以连接到它。 使用现有应用程序设置BlazeDS的基本步骤是:

  1. 编辑WEB-INF / flex目录中的BlazeDS配置文件。
  2. 在应用程序web.xml中定义MessageBrokerServlet和会话侦听器。

设置BlazeDS之后,需要将苏打服务添加到BlazeDS远程配置文件中,以允许从Flex客户端调用苏打服务。 您可以通过定义目标和一个或多个用于传输数据的通道来进行添加。 基本AMF通道在services.xml文件中定义。 使用此定义在remoting-config.xml中标识目标:

<destination id="sodaService" channels="my-amf">
<properties>
<source>com.gorillalogic.sodaSample.SodaService</source>
</properties>
</destination>

通过在远程配置文件中定义端点,可以从Flex客户端调用任何基本Java服务。

要将Java数据模型传递给Flex客户端,请在ActionScript类中定义两者之间的映射:

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

此代码告诉Flex,当远程服务调用的结果返回Java 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变量中返回结果,该result变量映射到您的SodaModel 。 我不会在这里详细介绍,但是一个技巧是在编译器配置中指定services-config.xml,如下所示:

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

否则,您的Flex客户端将无法找到Java服务。 以相同的方式,您可以将对象从客户端传递回服务器。 例如,您可以将空苏打模型传递回客户端。

原因9:您可以扩展BlazeDS并使用Java对其进行修改

假设您决定要在调用苏打水服务时随时添加特殊日志记录。 您可以扩展标准Java适配器以添加日志记录。

首先,添加一个扩展JavaAdapter的Java类:

import flex.messaging.services.remoting.adapters.JavaAdapter.
public class TimingJavaAdapter extends JavaAdapter  {

然后,重载invoke()方法:

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;
}

在这种方法中,您可以看到传入的操作和呼叫的目的地。 您还可以将这个简单的钩子用于其他事情,例如,确定对服务器的呼叫花费多长时间。

原因10:您可以从HTML和JSP调用BlazeDS

您可以通过几种不同的方式进行此调用,例如通过浏览器管理器和flashVars 。 可以通过HTML页面设置flashVars ,然后由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;
}

原因11:Flex和BlazeDS数据传输的性能优于其他Ajax解决方案

默认情况下,所有使用中的远程过程调用(RPC)均使用AMF二进制协议。 AMF是一种开放标准,速度非常快。 James Ward整理了一个示例,该示例显示了与其他远程解决方案的比较。 尽管像Dojo之类的其他异步JavaScript和XML(Ajax)解决方案都需要数百行,但是带有BlazeDS的Flex可以轻松处理数千行。 (有关各种RIA数据加载技术的基准,请参阅James Ward的人口普查 。)

原因12:您可以直接从Java客户端调用BlazeDS

最新版本的BlazeDS包括Java AMF类,您可以使用该类使Java客户端调用BlazeDS服务器。 能够以这种方式调用BlazeDS对于单元测试和负载测试非常有用。

原因13:与Spring兼容

Adobe和Spring联手实现了两个项目之间的紧密集成,并且Spring-BlazeDS集成的初始版本显示出很大的希望。 通过允许Spring Bean成为远程服务,将消除重复的配置文件。 有关更多信息,请访问项目的主页 。

结论

由于BlazeDS是开放源代码并基于Java,因此它是新的和现有Java服务器项目的理想选择。 通过Flex和Java之间的高性能远程通信和对象映射,Flex和BlazeDS技术是RIA开发的理想选择。 Flex和BlazeDS的新手Java开发人员将发现开发过程非常高效且易于学习。

BlazeDS的Flex也是大型Java企业应用程序的理想选择。 在上一个项目中,我的团队编写了一个包含50多个不同屏幕的应用程序,该应用程序将定期在服务器和客户端之间传输数千行数据。 使用传统的Ajax技术几乎是不可能的。 借助Flex和BlazeDS,我们可以在不到一年的时间内发布初始版本。 看看这个动态二人组可以为您的应用程序开发项目做什么。


注意:您应该具备这些技术的一些基本背景。 有几个教程可帮助您入门BlazeDS,包括“使用BlazeDS和AMF构建Web和桌面应用程序”和“ BlazeDS 30分钟测试驱动器” 。

翻译自: https://www.infoq.com/articles/java-flex-blazeds/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

flex和blazeds

flex和blazeds_Java程序员学习Flex和BlazeDS的13个理由相关推荐

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

    作者 Ryan Knight 译者 沙晓兰 发布于 2009年5月18日 上午2时55分 本文列述了13个Java程序员应当学习Flex和BlazeDS的理由,讨论了为什么Flex结合BlazeDS是 ...

  2. 【前端学习笔记】移动web-黑马程序员学习笔记

    移动web-黑马程序员学习笔记 1 字体图标 2 平面转换 2.1 绝对定位元素居中: 2.2 双开门效果 2.3 旋转效果 2.4* 转换原点 2.5 多重转换效果 2.6 缩放 3* 渐变 4 空 ...

  3. 一个初级程序员学习新技术的策略

    一个初级程序员学习新技术的策略 我是一名初级程序员,工作一年多.还记得刚毕业,踏入社会的时候,面临着很多工作上尴尬和困惑.首当其冲的便是在学校学的知识并不够用,甚至并不管用.于是学习新技术成了重点解决 ...

  4. 一个C#程序员学习微信小程序的笔记

    一个C#程序员学习微信小程序的笔记 客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ,知道了小程序的所有页面. 在这个Index页面就是我们的首页,客户端在 ...

  5. python的类程序的结构_Python程序员学习路径之数据结构篇

    原标题:Python程序员学习路径之数据结构篇 点击标题下「异步图书」可快速关注 在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大.Python语言的语法简单,交互性强.用Python来讲 ...

  6. java程序员学习路线以及我的学习经验

    本文作者为优知学院创始人陈睿(mike),作者有10年以上技术&产品经验,曾任百度研发经理.携程定制旅游CTO. " 这是一篇完整的java程序员学习线路图,一共分为六个阶段. 我以 ...

  7. java min 函数的使用方法_【Python】Java程序员学习Python(五)— 函数的定义和使用...

    不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...

  8. 用c语言写出一个榜单程序,C语言依然位居榜单前列,依然值得程序员学习

    原标题:C语言依然位居榜单前列,依然值得程序员学习 关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C ...

  9. java前沿技术_互联网百强企业架构师告诉你,Java应该这么学!云和数据超全面Java中级程序员学习路线图重磅发布!...

    作为常居编程语言排行榜第一名的编程语言,Java语言以其稳定性.健壮性著称,是一门非常成熟的编程语言,多年来一直是国际上众多企业的首选编程语言. Java语言不仅吸收了C++语言的各种优点,还摒弃了C ...

  10. 转 程序员学习的革命-如何使用大脑

    本文链接地址:http://blog.csdn.net/thefirstwind/archive/2006/12/13/1440965.aspx 标题:程序员学习的革命,教你如何使用大脑 作者:邢晓宁 ...

最新文章

  1. 吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
  2. 手把手教你安装OpenStack——Ocata安装指南(上)
  3. 【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
  4. cassandra 数据库_使用Apache Cassandra构建分布式NoSQL数据库
  5. python 第一天
  6. Maven: NoSuchMethodError fasterxml.jackson.core强行指定,无法排除
  7. 从入门到入土(九)手摸手教你搭建RocketMQ双主双从同步集群,不信学不会!...
  8. SpringBoot项目获取Spring容器中的bean
  9. 手机HiFi嗨不嗨 看完这些才能算是入坑
  10. Java中IO的快速复习(代码+注释)
  11. 计算机在表格底部插入一空行怎么弄,简单高效的Excel技巧,表格隔行插入空行,这两种方法很实用...
  12. ANC主动降噪,FFT方案与FxLMS方案比较
  13. 笔记 | 人工智能导论 语义网络表示
  14. 关于弹出和隐藏输入法
  15. uni-app动态设置原生标题左侧按钮
  16. 如何设置软件开机自启
  17. 上云安全建设之CDN安全防护
  18. A,NS,cname,forward,txt,aaaa记录讲解
  19. 工业自动化新引擎:工业机器人引领制造业转型升级
  20. Banner竖向轮播实现

热门文章

  1. 多商户订餐系统php,PHP网上订餐系统V3.7(带微信功能)支持多店铺可绑定微信公众号...
  2. Typora下载、安装及使用
  3. linux 制作分区镜像img文件
  4. php远程下载头像,Laravel 项目中 远程把图片下载到本地
  5. springboot学习路径 转载子方志朋
  6. 初中计算机成绩评定方案,初中信息技术学科评价方案
  7. python 保存scv文件乱码与报错的问题解决TypeError: a bytes-like object is required, not 'str'
  8. 5.3 解决二维拉普拉斯方程:heat_2d
  9. win10 更新后指纹不能使用
  10. 手把手带撸Junior AlphaGo算法「AI工程论」