Habitat Framework

专注于Java EE企业级开发
posts - 13, comments - 81, trackbacks - 0, articles - 5
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Adobe AIR 初探

Posted on 2007-11-05 20:39 Kerwin Weng 阅读(3778) 评论(7)  编辑  收藏 所属分类: Javascript
好像国内对Adobe的新产品AIR反应还不多,我个人试用了下觉得其实用处还是很大的,于是我就抛砖引玉写一篇相关介绍文章吧

AIR其实是一套框架和一个VM,它允许用户把Javascript,HTML,CSS集成到统一的客户端,在用户桌面运行,避免了浏览器差异,并且实现了跨平台的通用性,同时又对Javascript功能进行了很多扩展,比如读取本地磁盘文件,做跨域的远程访问,使用多媒体文件等等(相信是flash的底层在支持),相对于两年前的Flex,AIR在RIA领域无疑又是一个跨越,
想象一下以后我们可以用JS+HTML+CSS来写基于http的远程且防火墙安全的C/S应用了,还是蛮爽吧
Demo在这里:http://labs.adobe.com/showcase/air/?promoid=BJXTF
用JS来写应用的文档在这里:http://livedocs.adobe.com/labs/air/1/devappshtml/


Adobe AIR出新版SDK后,出乎意料的是很多之前的Demo不能跑了,会出"parsing disallowed"
,原因就是adobe换用了新的安全框架,禁止掉了Javascript中某些可能对其框架做出安全威胁的API,比如说JSON的命根--eval

Adobe的官方解释是在AIR2禁止掉了类似eval这种动态代码加载技术在其Application sandbox中的运行,解决办法是把你有eval的应用移到Browse sandbox中执行,所谓的Browse sandbox意思是你的应用主页面是通过application.xml中配置的根页面来用iframe引入的,在iframe引入的页面中你就可以做eval,而把其他如跨域查询等AIR提供的高级API操作放到根页面中去做,然后通过一个parent/childSandboxBridge来做互相引用和传递数据的桥梁,
但是同时你在iframe中的js也不能直接使用AIR所提供的一些高级API,比如air.trace().原文的解释在这里 ,Adobe甚至还写了一篇文章来鼓吹这种方式其实更符合设计模式--根页面负责数据传递,iframe页面负责业务逻辑.但是无论如何这篇文章作为Browse sandbox的入门来讲还是很值得细读的

于是结合自己当前的实际需要,我写了一个批量查询airasia.com机票的小工具,因为airasia从来都是打广告说从多久到多久,从那里飞到那里才几块MYR! 就是这个"起"字相当关键......直接造成每次我去查的时候发现因为"已经快满坐"了,所以价格和平时的一样,甚至更高,听同事说他们都是先一天一天去查看哪天便宜就赶快预定,太辛苦了吧,那我要查2007-11-05到2008-01-31日的机票要花多少时间啊,而且不查到最后一天还不知道是不是最便宜的,嘲笑他们原始之后我就决定自己写个工具来查

所以我写的第一个AIR应用就是这个AirAsiaTicketsSearch,可以批量查询某个时间段去和某个时间段回的所有机票,并且把机票价格用jQuery.tablesort给排序出来,并且用jQuery.tablesort.page做了分页(说句题外话,jQuery的tablesort确实很强大,但是在排序"1,280.00 CNY"这种数据的时候还是有问题).另外开发环境值得一说,无论是eclipse+aptana或者aptana standalone都一样的,aptana就是一个Eclipse的RCP,关键就是aptana真的是很好用的工具,目前不仅支持AIR,而且还支持开发Apple iPhone的应用,只是专业版要收费.....

后面给出截图,
结果发现昨天还有295.99的机票,到了今天就涨到349.99了-_-!



评论

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 09:25 by BeanSoft
要说AIR, 微软很早以前推出的有 HTA. 至于脚本扩展, 为啥病毒木马横行, 也跟微软那个强大的 VBScript/JScript 扩展是分不开的. 国内要流行, 那也得先把做桌面程序的人都干掉才行.

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 09:38 by Kerwin Weng
印象中hta/htc当时还没有AJAX这类应用,作用有限,现在AIR的API允许Javascript使用多媒体资源,跨域资源,windows menu,os资源等,甚至可以开socket,相对于当年,应该说air强大的正是时候.

关于国内流行这个问题,我觉得只要一个产品真的好,真正能帮助程序员提高开发效率,降低维护难度,又能让客户体验提高的话,不用谁去打败谁,都会有很多C/S程序员和新入门的程序员转去另一边

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 10:15 by pallove
现在的AIR还是比较鸡肋的。

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 11:03 by BeanSoft
典型的技术推广贴的说辞

用户 A 写道:
我从实用的角度上来说 **** 框架/技术是相当烂的一个东西.
从理论上也许先进.

用户 B 反驳道:
我不喜欢听没有证据的东西。不知道你指的"**** 是相当烂的一个东西"什么意思?不知道你使用****有多久?是做了具体的项目体会出来它很烂还是玩了半天就觉得它烂?能不能举出具体的例子?
我认为 **** 很棒,因为这是我在做项目和学习的过程中体会到的。
国外有很多牛人都认为 ****很棒,牛人 XXX 从????年就已经在他的项目中使用了自己的****架构,至今有很多大型的项目都在使用这个****架构。**** 在此之上做了很多的改进,总结了框架 A 和框架 B 的不足,是经过很多考验和实践总结的成果,希望大家不要只花了半天时间就把它否定掉。



把 **** 替换成不同的框架/技术, 这就是当前技术推广贴的一贯文风.

放这里完全合适, 呵呵, 其实这个是 JavaEye 上某 Spring Fans 反驳另一位反驳者的话的. 开个玩笑了, 别介意, 呵呵.

当然非常感谢楼主写了介绍文章, 呵呵. AIR 我也去看了一眼, 个人觉得还不行啊, 就跟 AJAX 一样, 开发成本太高了. 哪天浏览器内置各种控件(如 Tree, Table, Grid)可以调用就好了.

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 11:55 by Kerwin Weng
我没有推广的意思,只是分享自己最新的体验和看法,大家用不用不是我关心的.

萝卜白菜各有所爱吧,我猜你肯定是做Web application的吧,所以巴不得浏览器内置很多东西,而且最好不用写JS,都交给gwt,JSF等帮你生成了.个人觉得还是应该把Javascript当成一门很有用的语言对待,不过我最希望浏览器做的就是提供统一的支持,少一些自作主张,尤其憎恶IE这个不遵守W3C标准的家伙,这在要求客户统一使用IE的时候是不需要考虑的

我不知道你说的AJAX开发成本高指什么,我觉得倒是很容易啊,prototype,jQuery,dojo我还可以数出10个js的lib都实现了高级AJAX的抽象封装,甚至我自己改过的JSON-RPC,调用远程数据也就是1-2句代码.如果是指整个AJAX应用的话,的确Javascript占的分量相当多,对没有丰富的Javascript组织经验的团队来说还是很繁重的工作量,但是一旦有很好代码组织体系,充分利用Javascript的继承特性,开发应用还是非常快的,更不要说还有像jQuery这样的优秀lib,插件众多,甚至在Javascript中实现AOP

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 12:04 by Kerwin Weng
@pallove
的确,可能业界还没有找到AIR最有竞争力的场景吧,80%功能浏览器可以做,剩下20%Flash和C/S又轻而易举,不过即便这样,AIR在有限的RIA场景中可能也是受人喜爱的

# re: Adobe AIR 初探  回复  更多评论   

2007-11-06 14:15 by pallove
嗯,是的,其特殊性就算jser不喜欢,flasher也会喜欢的。对air现在只是观忘。java总是有很多东西学不完,而flash总是在等待学一些东西。

只有注册用户登录后才能发表评论。


网站导航: