Click into





OSA秋装新品女装韩版修身OL通勤纯色泡泡袖小西装短外套女W13254 OSA2012秋装新品女装韩版修身通勤泡泡袖打底衫长袖T恤女款T13180 OSA2012秋装新品男装休闲宽松长袖圆领拼接针织T恤潮男MT24083



【限时7折】缪诗真爱邂逅超聚拢调整型女士内衣性感蕾丝 美背文胸 买一送二2件包邮 爆款文胸性感胸罩内衣 深V聚拢调整型文胸收副乳 可可迷 专柜正品 精油珠新女内衣胸罩 调整型文胸聚拢厚小胸T1065



丰胸产品 泰国圣荷纳米增大坚挺2月装 赠野葛根片中药丰胸药 Elelen左旋肉碱茶多酚减肥胶囊 瘦身产品 中草药配方 正品 买1送1 淘金币 快速丰乳膏美乳膏 丰胸精油搭配 美胸风胸丰胸产品排行榜



【Justyle】英伦立领时尚秋冬修身男士式装款立领拉链夹克外套 2012英伦新款秋冬季直筒型男款时尚纯棉潮流男士装休闲长裤 【Justyle】英伦新款男士休闲中腰宽松牛仔裤男款直筒牛仔裤



59元起 爱情侣公寓关谷恐龙睡衣连体冬珊瑚绒卡通家居服动物皮卡 家居服恐龙皮卡丘奶牛连体卡通动物可爱珊瑚绒爱情侣公寓关谷睡衣 包邮长袖卡通情侣连体睡衣动物珊瑚绒恐龙史迪仔熊猫加肥大码成康



怡君 2012秋冬季新款品 真皮平底雪地靴 狐狸毛短保暖靴 平跟女靴 淘金币 JUNJOY怡君 2012冬季 真皮雪地靴 女短靴子 平底跟情侣款 步伊鸟雪地靴女2012新款真皮牛皮保暖鞋雪地棉短筒平底短靴子女鞋



【一淘专享价】BEDOOK细肤淡印霜30g 去痘印凹洞痘印修复祛痘印 皙肤泉控油祛痘套装 祛痘印/青春痘 男女士去痘套装 正品 包邮 金丝玉帛清痘除印套装 中药消炎祛痘 去痘疤 痘印去豆坑男女正品
婴儿爬行垫
代码改变世界

cobol声明变量面向Java开发人员的Flex开发指南

2012-04-14 18:24  cobol inspect cobol视频  阅读(235)  评论(0编辑  收藏  举报

  除非你过去四年的编程生涯都是在山下度过的,否则必定对”富互联网应用”——或按潮人的叫法“RIA”——略有所闻。万一你真是如前所述的隐居型开发者,那我把重任交给Google,请它帮你找出RIA的正式定义。我们暂且把它定义成,具有在设计上更注重更操作性和效率的用户界面,不同于传统Web应用那种“输入地址,等待网络传输一个Web页面,填写表格,点击按钮,等待网络传输另一个Web页面”的交互循环。AJAX是一种RIA,Silverlight也是,但比它们出现早得多的,是Adobe的Flash。

  因为新鲜感,对RIA的关注重心,大都集中在AJAX和老朋友JavaScript等工具。但是过去三年里,Apple迅速且戏剧化崛起,并在移动市场占有主导地位,对此产生了极大挑战。以最新的浏览器技术和宽带连接为前提来建立Web应用是不够的,因为连美国自己都做不到这两点。实际上,即使有最新的浏览器技术和最快的连接,只要开发人员打算用超越基本HTML的技术来开发Web应用,就会突然发现自己掉进了一个泥潭,互相冲突的浏览器实现、网络延迟、几十种JavaScript库、错估的用户预期,劈头盖脸而来。

  作为一个职业生涯中大部分时间都在关注后端的开发者,我从来都不太关心前端开发者使用的工具和技术。实际上我曾经把前端贬得一文不值,说那一头的大部分开发”除了看看像素变颜色就没有什么了”。这话比较难听,我承认,但你也应该承认,除开最近几年,传统应用的UI设计一向不是业内的时尚话题:放个表单,用户填两下子,然后提交给服务器,实质工作都是我们后端人员做的。所谓实质工作包括:验证所有的输入(免得万一用户真的是一名黑客,用Telnet伪装浏览器来跳过所有”完美的”JavaScript验证逻辑);调用一些数据库和Web服务,说不定还是并行的;纠合一些模板技术或视图生成技术,准备好将要返回的各种HTML、CSS和JavaScript片段,组装起来;最后传输回去给浏览器渲染和显示。

  多美好的时光。

  不过最近有几件事情发生,我重新认清UI行业的现状:

  移动设备市场——iPhone、Android还有WindowsPhone——火热到如果忽视它们就意味着从软件开发行业中退休。虽然我挺想提前退休的,不过短时间内经济上不可行,还有两个小孩要上大学呢。

  说到孩子,我的大儿子非常热衷于成为一名游戏开发者,对父子携手完成一两个游戏构想也很有兴趣。当然,对于我们这些做“大事”、搞“企业”开发的人,游戏一般不是我们关心的主题……但是除了想多花点时间跟我儿子在一起,把应用"游戏化"的概念在网络经营和市场营销的圈子里正迅速走红,因此是值得多探讨一些。

  说到游戏,游戏有许多有意思的情况:与传统基于表单的应用相比,它们有各种各样的沟通和展示需求。当然游戏不是个例——如果能加快响应速度,甚或实现离线使用,那么很多商业应用也会受益。不管我们多么希望可以假定每个用户有永久在线的宽带连接,严峻的现实是飞机上的互联网连接十分罕见,宾馆的ISP经常无缘无故消失,会议现场的无线连接太难以捉摸。事实上,公平地说,虽然我们在各种场合见到的网络连接多了,可是优质的的连接更难找了。这种状况严重损害了传统浏览器客户端的效果。

  最后,Adobe找到了我,问我是否有兴趣从一个Java开发者的角度探讨Flex,深入了解它并反馈结果。充分披露原则要求我申明他们付费让我写这批文章,但是基于个人诚实原则,其实我一直想找个借口来好好了解一下Flex,所以他们的邀请乐得我“屁颠儿屁颠儿的”,可以这么说。

  所以,我的计划就是照他们的要求,在InfoQ设一个专栏,以Java从业人员的眼光(而不是艺术家打扮画Flash故事板的Web设计师的眼光)来介绍Flex,观察的角度不限于呆板的传统业务应用,还有各种不同的角度,包括游戏/游戏化,与已有的Java应用程序集成,以及作为移动设备客户端技术的适用性。

  我们可以开始了吗?

  Flash平台(Flex的基础)几乎像浏览器一样普及,已经安装到全世界的浏览器中接近十年时间。它被当作一种透过浏览器向不知情大众送上可爱动画短片、视频剪辑和奇怪游戏的手段。多年以来,要想完成HTML规范之外的任何事情,这是除JavaApplet以外的唯一方法,而JavaApplet的问题一点也不少。显然,Flash要求用户安装一个本地插件,但这是必要的代价,况且很多用户早就为了看跳舞仓鼠或者玩其他什么可爱游戏,已经下载安装过了。

  不幸,很多开发者仍将Flash拒之千里,因为它最初是按照"创意"类用户的习惯设计的,采用了美工人员比较熟悉的概念,例如故事板、时间轴、动画效果等。完全没有什么表单栏、对象模型、核心验证逻辑组件之类的东西。这意味着,如果一位开发者想要利用这个平台,将不得不面对各种模样怪异的工具,陌生的术语,还有一帮子不灌可乐品咖啡的用户群。

  除了外表的差异,Flash平台其实和它的Java表亲很相似,都有一个基于字节码的执行引擎,都被移植到多种平台。(从很多方面来看,如果Java“一次编写,处处运行”的口号没有那么多“如果”,真能在客户端成为现实,cobol声明变量面向Java开发人员的Flex开发指南那差不多就应该是Flash插件的样子。)Flash执行.SWF(读作"swiff")文件而不是.class或.jar文件,这种文件格式也像.class文件一样是公开的。而且几年前,Adobe通过Flex开发包进一步了Flash平台,提供Flex的目的是让开发者不需要使用面向美工人员的Flash工具,也能轻松地创建SWF。

  因此,第一步是获取SDK,这个可以在Adobe的网站找到。稍微观察下就可以发现,Flex有几种下载,主要的不同点是授权协议模式-最大的"AdobeFlexSDK"包含若干基于Adobe自定开源协议的软件,有可能不被某些组织接受,所以Adobe提供了另一种下载"OpenSourceFlexSDK",基于MPL授权协议的。一般来说,除非你的组织有特殊严格要求,否则"AdobeFlexSDK"完全适合研究和原型开发用途,但是如果想投入商业产品应用,那么需要请律师先看一下授权协议。我们将用最新发布的Flex4.5SDK来进行;如果你还没有准备好,花点时间完成下载吧。

  下载回来的SDK是一个简单的ZIP文件,解压到你硬盘中任何方便的,最好放到离其他开发工具近的地方。在我的系统里,我喜欢把所有工具都放在"prg"目录下,所以FlexSDK在我的Windows电脑里就放在"C:\Prg\flex-4.5"的;请看图1-1。在该目录下存放了一系列工具和文件,看过JDK目录的开发者会觉得它的目录结构很熟悉。"bin"目录存放着开发者心爱的各种工具(所以应该将其径放进“PATH”变量),"samples"目录下有各种示例应用,还有其他目录就不一一说明了。

  

  检验Flex是否已经安装好,最快最简单的办法是运行一下"bin"里面的一个工具——mxmlc,也就是我们马上就会认识的Flex编译器。所以,假设C:\Prg\flex-4.5\bin已经加到PATH变量,直接输入"mxmlc",看看有没有反应;如果一切都没问题,你就会看到传统编译器"我其实没有做任何事情"的响应,看图1-3。

  

  开发者遇到新平台,写的第一个程序必然是"HelloWorld",不仅是向(Kernighan和Ritchie)致敬,也因为它展示了我们可以用新平台写出的最简单的程序。对于某些平台,像最初的C编译器,只要三行文本和一次命令行调用就完成了一个有意义的可执行程序;当平台变得更复杂,构建的步骤也越来越复杂。(Java开发者回想起“Hello,EJB!”所需的步骤,依然会。)Flex还是比较简单的,虽然不至于只用一个文本文件就变出花来。

  我们暂时可以忽略例中的大部分HTML基本骨架——关键元素在中间部分即<OBJECT>标签下的<EMBED>子标签。显而易见,"src"属性指定当在页面被浏览器加载显示时,被执行的SWF文件名。<PARAM>标签描述该SWF文件所在的URL;因为我们是在本地文件系统操作,所以该属性与<OBJECT>中的"src"属性完全相同。"width"和"height"属性的作用是不言而喻的。所有这些在Adobe的网站上有详细的描述,想了解所有标签的用途和可能参数的读者,请看这个链接

  。(简单补充一下,<OBJECT>是给IE3.0看的,<EMBED>是给NetscapeNavigator2.0看的。是的,Flash有这么老。)

  有心人可以在浏览器里打开这个页面,看看会得到什么结果。虽然没多大看头,但是当作一个快速测试,检查一下机器上是否已经安装好了Flash插件。虽然这检查有点多余,不过万一真的没装,现在是一个很好的下载时机。

  一句话说明FlashPlayer和64位浏览器的关系:它俩合不来。具体来说,Flash还不支持64位浏览器,所以尝试在64位浏览器中运行Flash一定会失败。Adobe回应说,"用32位版的浏览器算了,反正大家都用",以及"将支持64位",请参考这里

  MXML文件本身就是一种合乎规格的XML文件,所以里面的XML命名空间跟一般的XML命名空间并无不同,即限定不同的标记名称的语法作用域。可以把这些命名空间当作Java包的角色来看待。代码中声明的一长串命名空间前缀,实际我们只用到其中两个,fx:(下一个例子会用到)和s:。多数Flex程序都喜欢把这一串命名空间写全,因为声明额外的命名空间不会对最后生成的程序有任何影响(就像导入未使用的Java包),所以可以算作一种好习惯,至少目前如此。

  其余的标记比较简单明了:"s:Application"标签说明这是一个应用程序,它包含一个子控件"s:Button"。只要曾经编写过HTML表单,就不会对这几个标签的属到陌生,这是故意设计的。我们还没有说明按钮被点击时会做什么,但本着“早发布,常发布”的,我们先运行一下看看。

  如果什么都没显示,或者出于某种原因,您的浏览器开始从Adobe下载软件,请勿慌张;先前搭建的HTML脚手架正在替用户忙碌,从Adobe网站上下载最新的Flash播放器。这一迹象表明你的机器还没有安装Flash播放器,等待几分钟,点击几个“你确定吗?”对话框,Flash就应该准备好了。

  还有问题的话,请访问<<Adobe的网址>>以验证Flash是否已经正确安装。如果还失败,你可能需要联系您的系统管理员去排除故障,这超出了本文所讲的范围。

  构建Flex应用程序必不可少的步骤是用mxmlc工具将MXML文件编译成SWF文件。假设mxmlc已经存在径中,且.mxml文件在同一目录,执行“mxmlcMyFirstFlex4App.mxml”,命令行编译器万年不变的工作过程就开始了:它会回馈说明当前执行到的步骤,如果代码正确无误,执行完毕的时候目录下就会多出来一个新生成的.swf文件。如果我们再次在浏览器中打开先前的HTML脚手架文件,等Flash插件加载完毕,就可以看到如图2-3的内容。现在的页面内容仍然没什么看头,因为当用户(你、我、或者刚好经过的大姨妈Sally)点击按钮时没有任何反应。

  

  有经验的JavaScript用户会很快注意到JavaScript和ActionScript的一些不同之处;Adobe选择脱离传统的JavaScript,尝试解决对JavaScript语言的一些常见。例如,ActionScript比JavaScript有更严格的类型,所以AS的声明语句要求有"类型描述符",帮助编译器确认没有用错对象。ActionScript在使用一个包(库)之前,先要进行引用,所以例中脚本块的开头有一行"import"语句。

  函数的命名就像JavaScript一样没有什么,只是按照惯例写成"control_handler"的格式,如果这不符合你的编码习惯,请随意更改。(只是之后不要抱怨。)

  重新编译代码产生一个新的SWF,现在可以响应按钮点击了,在浏览器中重新载入"hello.html"页面,点击按钮会产生图2-5的结果。编程前辈们,接受我们的HelloWorld吧!

  

  只要是写过5分钟Java代码的开发者,都知道Ant构建工具的好处——让人类从事任何重复工作都是在等着出错而已,随之而去还有生产力和发展势头。(如果你从来没有浪费过时间在调试上,从来没有遇到过编译失败,那就请你从本系列的下一篇文章开始看吧。)因为Flex是像Java一样的综合开发,显然应该有一个与Ant角色地位相当的工具,Adobe做得更好:他们没有重复造轮子,而是让Flex提供一系列Ant任务插件,让Java/Flex开发者易于将Flex集成到他们构建脚本中。

  (是的,这意味着你需要安装Ant,无论作为IDE一部分还是直接从命名行运行都可以(请参考这里

  )。如果你居然没有安装Ant,请自动摘下Java开发者的牌子,回去弄你的COBOL吧,我们会装作什么都没有看到。如果喜欢用Maven,那就要靠自己了——Adobe没有提供现成的支持。尽管你可以找到一些教程说明如何把FlexSDK安装到Maven仓库,但老实说,如果你使用Maven……叫救命罢。马上。)

  是的,这就是一段没意思的Ant代码,但现在打好基础将来会有回报。写好这段Ant脚本,以后所有的Flex项目都可以用它来做模板,就像当初servlet还新鲜的时候,我们给Java/web-app写的Ant脚本一样。

  顺便一提,好奇的读者如果想了解编译器命令行参数的完整列表,请输入"mxmlc-help"即可,这个列表同时也是<mxmlc>标签属性的完整列表。Adobe在FlexSDK/ant目录下的README文件中说明,编译器参数直接对应Ant任务的属性。因此,如果我们想启用命令行参数"-compiler.debug",就给<mxmlc>任务加上一个属性,"compiler.debug=true"。

  嗯,还行。就是有点小问题。

  从入门到出师,还有很长的要走:我们还要讨论两套UI组件、输入事件、远程通信、库,还要学一种完整的语言(ActionScript),学过这些基础之后,才真正进入到有意思的主题,例如动画、游戏(我个人的最爱)和移动设备(有争议的主题)等等。幸运地是,我有充足的时间时间慢慢写,Adobe也有足够的预算来让我做这件事,所以这篇文章仅仅是“从Java开发者的角度学习Flex和Flash”系列短文的第一篇。日后我们会逐一介绍Flex和Flash所提供的一切。

  且听下回分解。

  关于作者

  TedNeward是一名Java和.NET开发者、顾问、作家,他发现自己对“让像素变变颜色”非常有兴趣。他居住在太平洋西北地区。

  查看英文原文:BusyJavaDeveloper’sGuidetoFlex

  cobol声明变量·[教程]Java泛型简明教程(13顶)

  ·外刊IT评论:只要一个返回语句...(3顶)

  ·外刊IT评论:交易(5顶)

  ·由Java说起:编程语言还需要开源...(7顶)

  ·外刊IT评论:编程语言不需要开源...(6顶)