`

AIR, 我已经对你彻底失望了.

阅读更多
这不是一篇客观全面的评论 只是一种情绪的表达.

希望大家不要只注意我文中“愤青”的一方面,而忽视文中提到的那些AIR和adobe的问题。

最近我打算写一篇 比较详细的“AIR到底哪些地方不好 以及 我期望的AIR应该是什么样子
虽然 也是以 我自己的视角来看 但是一定会比这篇更客观 摆事实讲道理
敬请期待。
另: 我从来没想过打击flashbuilder 和 flex ,我对他们没什么感觉。



BTW :
vii779 ltian znjq  等几位朋友的跟帖讨论 要比主贴更精彩
建议关注flex 开发的同学看一下.
(虽然我主贴是关于 AIR的 但是我不介意在这里讨论 flex的问题 呵呵
因为关于flex 其实我也有很多话想说)

我关于AIR的具体的分析贴 打算在AIR 2.0正式推出 并且我使用过之后再写.
但是不管怎样 如后面一位朋友所言 我对AIR更多的是一种恨铁不成钢的感觉 而没有绝对的恶意.



adobe 有了 AIR这样一个 好东西(至少想法和创意是好的), 但是眼看着一个好东西被adobe糟蹋了.
成天 flash flash flash...完全无视 html ajax 开发人员在 AIR下的诉求

同样是 webkit 内核 效率比 chrome safari 低了不是一点半点.

而且很多很基本的功能都不肯实现.

作为国内 比较早的一批使用 AIR+ajax模式搞开发的程序员 我很失望.

最初AIR带给我的惊喜正在一点点的消失.

我实在不理解adobe是怎么想的.

================================


我在twitter上曾经说过:
引用


AIR的伟大之处在于可以让广大熟悉html编程的人也可以快速的掌握开发客户端软件的能力. 这是好事.熟悉html开发人员要比熟悉SWING .net(桌面开发)的人多很多


苹果有浏览器 有操作系统 有硬件,google有浏览器 有操作系统 有硬件,微软亦然。所以他们在谈论起在“互联网应用的UI要使用什么技术”时 明显有更大的话语权和更足的底气。而Adobe能拿得出手的只有需要寄人篱下的“flash”。所以AIR对于adobe的意义还是很大的。


虽然外界一直把HTML5当做 flash的对手偶.但是adobe千万不能这样看,adobe应该把html5变成自己的武器,让旗下的产品加强对html5的支持...好吧,我承认我太过迷恋AIR+Ajax的开发模式了...
(从最新发布的cs5的特性来看 adobe已经意识到这点了 GJ! XD)


我在AIR里用js+html5 canvas开发一个动画示例,在chrome safari中能跑到每秒90帧左右,在AIR里勉强18帧(且很不稳定).抱怨一下.我实在是没地方抱怨了


突然发现 我搞AIR+Ajax开发好尴尬. 纯Web开发流 纯Native桌面应用开发流 都不待见我.而Adobe流又都是搞flash的 更是一副跟我势不两立的架势.我好无辜...


google chrome捆绑flash也只是暂时的,当他发现这么做并不会帮助他进一步扩大市场占有率时 他随时都可以放弃这种捆绑


adobe的flash需要运行在别人的浏览器和操作系统里 而且这个“别人”还是adobe的竞争对手…那被别人耍被别人欺负被别人当作博弈的筹码就不足为奇了.

....



我在推特上的话 可能只是一些牢骚 只是一些主观视角强烈的妄语,但是至少说明我----一个曾经的AIR坚决的拥护者 已经开始对它厌倦了.

================================

ExtJS 的官方IDE已经抛弃AIR了 使用了 QTWebkit

google的chrome 开始支持 native client技术了 html5 webgl也来了

摆在我面前的选择真的很多 AIR 我是不是应该放弃你了?

================================
adobe 如果想在未来的互联网领域内占有一席之地 拥有一定的话语权.
AIR 应该是一部很关键的棋子

用更加开放的态度去拥抱HTML5才是王道.

(例如让AIR 和 dreamweaver更好的支持html5的特性 开发出基于html5 canvas/svg的动画制作工具 等等,
甚至做一个 浏览器 --- AIR都可以做出来 做浏览器自然也不是问题...)

================================

好吧 我承认我的担心有点多余.

靠着ps ai pdf 这些东西 adobe 就已经可以把自己喂的很饱了.

好吧 我知道我的牢骚很傻很BI ,

闪客们靠着"世界上98%的计算机都装有flash插件"这句话 就可以让自己心满意足 高枕无忧了

恩 各位 adobe的粉丝们 无视我吧.


====================

补充:

我本人 不会flash (只会一点as3 摆弄过一阵flex), 也不打算深入学习这项技术
但是我 对flash并没有敌对情绪  我一直觉得 flash在很多领域是无法被替代的.

就算未来浏览器很NB了 可以在浏览器里面看电影 听音乐 玩使命召唤, 那flash也不会消亡.
而且会活得很长很长, flash的寿命绝对比目前所有的闪客们的职业生涯要长久.

但是 adobe 必须面对html5的挑战
不管flash的卫道士们 怎样高喊"HTML5不是flash杀手" "flash无法被替代", "html5的到来还很漫长" "html5的统一化 标准化更漫长"...
html5 都是adobe无法回避的.

与其酸酸的去说  "html5将把互联网带入黑暗"(详见这里) 不如用开放的胸怀去接纳它.



分享到:
评论
78 楼 115300111 2011-07-31  
air with ajax 教程还有后续吗?
77 楼 yunzhongxia 2011-01-13  
从事flex开发快2年了,来说说我对flex的感觉。做简单的MIS系统勉强还可以,但是对于复杂的系统就很艰难了。作为富客户端的技术,flex根本没有做到给用户“富”的感觉。DataGrid等不能直接复制内容,组件本身存在的一些bug,flex sdk变化这么快就是因为bug太多,在我们的开发中遇到过很多问题,flex做企业级开发实在有很多问题。现在平台对flex封装了很多东西,如果完全抛弃flex也很心痛。flex想说爱你不容易呀!
76 楼 inshua 2010-11-02  
flex 设计的最经典的应该是 view stack 了。

as 烂的不可救药,幸好及时抛弃了它。
75 楼 damoqiongqiu 2010-11-02  
杯具,我应该早点看到这个文,我TMD今天还在用AIR倒腾JS,一点不爽,F**K。
74 楼 fu80008 2010-05-02  
哎,我也只能说air的确四不像。air真2
73 楼 arlxy 2010-04-15  
前段时间做了做了两个基于AIR 2.0 BETA2 SDK&FLEX SDK 3.2的项目
FLEX AIR确实不适合做效率要求较高的项目
如果是用户体验要求比较另类FLEX当然是开发方的首选
72 楼 hsbcnet 2010-04-14  
就是一个版面显示几个到几十个货币对,价格在嗖嗖的更新而已。
不过我不是做开发。。。

vii779 写道
hsbcnet 写道
Flex这么慢吗?我公司用他来做UI哦

慢与不慢只是相对而言,取决于你要做什么样的应用以及你的应用的界面复杂程度。如果仅仅是简单的数据呈现和一般的表单提交,就像Flex例子里面的那种界面,速度还是可以接受的。如果界面需要创建大量的UI元素,速度的问题就要好好衡量一下了。

71 楼 vii779 2010-04-14  
ltian 写道
vii779 写道
fins 写道
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了


确是这个意思,早期的Flex sdk 3.0里面,只有组件的属性能支持数据绑定,组件的样式(此例中Label的color是一个样式)是不支持数据绑定的,sdk 3.2以后样式可以支持数据绑定了。

想申明一下,在这个地方不想讨论如何如何去开发一个组件,相信大家都有一定的组件开发功底。只想列举一下因Flex SDK某些地方的不成熟和一些功能的缺失给开发带来的不方便。

我的例子写的太简单,说的不太详细,有可能误导大家了。举这个例子想阐明以下几个观点

1 Flex SDK 是否做到了可以让一些刚入门的新手很方便的就能写出一个Renderer
2 组件的样式不支持数据绑定,带来了不必要的麻烦。现在已经支持了,也没必要讨论了。
3 一些被奉为开发实践的原则难道就应该这样吗,例如Renderer不要写的太复杂,setStyle要慎用,会带来性能问题。我觉得这是Flex不够完善的一个借口。
4 本例中为了达到Label颜色的动态切换,需要动态更改Label的样式color,这势必会调用setStyle方法,按照某些开发实践原则,setStyle会带来性能问题。您有更好的不损失性能又能达到效果的方案吗,请指出来,但有一个要求,要最简单,至少不要超过我写的例子的那个复杂度,让刚入门的新手都能方便的做到。

希望您能看懂我例子之外所阐述的一些想法,而不仅仅只是陷入对技术实现的一些细节探讨。



关于Render我们在项目中是这样解决类似问题的:
<mx:itemRenderer>
   <mx:Component>
      <mx:VBox horizontalAlign="center" verticalAlign="middle">
    <mx:CheckBox click="data.selected=!data.selected"    selected="{data.selected}"      visible="{!data.buildIn}" />
     </mx:VBox>
</mx:Component>
</mx:itemRenderer>
如果有多种不同情况导致不同的样式显示,就需要写多个不同样式的Text,根据数据决定其是否visible(不 visible的就不会render,因此不会影响性能)。
这样写Render就可以不需要写ActionScript,稍微比你的方式复杂些。你对Adobe提的意见很好,能否写邮件给他们,我以前曾给JSF规范组写过邮件,如果他们觉得有道理,他们会有回应的,否则也会说出为什么不!


实际上,setStyle的性能并没有想象中的那么夸张,性能慢大概是指的sdk3.0。3.2环境下可以通过对样式进行数据绑定来简化Renderer的开发步骤,并没有感觉到慢,至少在我这边的环境下是这样的。我所说的慢,主要集中在组件的创建速度上,组件数量超过一定规模同时创建的时候,就会有停顿感。组件创建完成后,再怎么处理也慢不到哪里去。基本上在处理这类界面的时候,已不在使用Flex的标准组件。说到JSF,有过比较惨痛的使用经历和不太好的用户体验,才转为用Flex来开发,至少在Flex里面,碰到什么问题,用AS3来封装一下还是可以克服过去的,JSF问题太多,封装一个可重用的JSF组件也是一个痛苦的过程...
70 楼 ltian 2010-04-14  
vii779 写道
fins 写道
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了


确是这个意思,早期的Flex sdk 3.0里面,只有组件的属性能支持数据绑定,组件的样式(此例中Label的color是一个样式)是不支持数据绑定的,sdk 3.2以后样式可以支持数据绑定了。

想申明一下,在这个地方不想讨论如何如何去开发一个组件,相信大家都有一定的组件开发功底。只想列举一下因Flex SDK某些地方的不成熟和一些功能的缺失给开发带来的不方便。

我的例子写的太简单,说的不太详细,有可能误导大家了。举这个例子想阐明以下几个观点

1 Flex SDK 是否做到了可以让一些刚入门的新手很方便的就能写出一个Renderer
2 组件的样式不支持数据绑定,带来了不必要的麻烦。现在已经支持了,也没必要讨论了。
3 一些被奉为开发实践的原则难道就应该这样吗,例如Renderer不要写的太复杂,setStyle要慎用,会带来性能问题。我觉得这是Flex不够完善的一个借口。
4 本例中为了达到Label颜色的动态切换,需要动态更改Label的样式color,这势必会调用setStyle方法,按照某些开发实践原则,setStyle会带来性能问题。您有更好的不损失性能又能达到效果的方案吗,请指出来,但有一个要求,要最简单,至少不要超过我写的例子的那个复杂度,让刚入门的新手都能方便的做到。

希望您能看懂我例子之外所阐述的一些想法,而不仅仅只是陷入对技术实现的一些细节探讨。



关于Render我们在项目中是这样解决类似问题的:
<mx:itemRenderer>
   <mx:Component>
      <mx:VBox horizontalAlign="center" verticalAlign="middle">
    <mx:CheckBox click="data.selected=!data.selected"    selected="{data.selected}"      visible="{!data.buildIn}" />
     </mx:VBox>
</mx:Component>
</mx:itemRenderer>
如果有多种不同情况导致不同的样式显示,就需要写多个不同样式的Text,根据数据决定其是否visible(不 visible的就不会render,因此不会影响性能)。
这样写Render就可以不需要写ActionScript,稍微比你的方式复杂些。你对Adobe提的意见很好,能否写邮件给他们,我以前曾给JSF规范组写过邮件,如果他们觉得有道理,他们会有回应的,否则也会说出为什么不!
69 楼 znjq 2010-04-14  
上升到这个高度,话题可以打住了.
小胖"恨铁不成钢"的心情可以理解,大公司考虑问题有自己的出发点,不仅仅是技术上的原因.就像老乔说的adobe那么不思进取,坚决抵触adobe进入apple,商业利益上的冲突是关键的.
看了iphone os4 sdk新的规定,cs5中的转换iphone应用简直就是个杯具
68 楼 ltian 2010-04-14  
fins 写道
ltian 写道
windywindy 写道
应乔布斯的话:Adobe不思进取!

IBM \微软\Oracle这些大公司之间有资格相互抨击,但无论哪个公司,对我来说其技术成就都是高山仰止!



你关于技术的观点 我都可以认同 (毕竟大家的角度和经历不一样)

但是 这种 "你做不到或者做不到更好, 就没有资格批评别人" 的逻辑是极其错误的.

按照这个逻辑 我们没有资格说iphone比山寨机好 因为我们自己动手做不出山寨机
按照这个逻辑 我们老百姓永远也没有资格去批评"正厕" 批评"正府" 了, 因为让你当"国加煮习"你未必就比"掏歌"做的好.
按照这个逻辑 90%的批评都是不应该存在的

批评是自由也是权利 你说对吗

你说的对!我的逻辑是存在问题!大家应该有批评的权利!!!
67 楼 fins 2010-04-14  
ltian 写道
windywindy 写道
应乔布斯的话:Adobe不思进取!

IBM \微软\Oracle这些大公司之间有资格相互抨击,但无论哪个公司,对我来说其技术成就都是高山仰止!



你关于技术的观点 我都可以认同 (毕竟大家的角度和经历不一样)

但是 这种 "你做不到或者做不到更好, 就没有资格批评别人" 的逻辑是极其错误的.

按照这个逻辑 我们没有资格说iphone比山寨机好 因为我们自己动手做不出山寨机
按照这个逻辑 我们老百姓永远也没有资格去批评"正厕" 批评"正府" 了, 因为让你当"国加煮习"你未必就比"掏歌"做的好.
按照这个逻辑 90%的批评都是不应该存在的

批评是自由也是权利 你说对吗
66 楼 vii779 2010-04-14  
hsbcnet 写道
Flex这么慢吗?我公司用他来做UI哦

慢与不慢只是相对而言,取决于你要做什么样的应用以及你的应用的界面复杂程度。如果仅仅是简单的数据呈现和一般的表单提交,就像Flex例子里面的那种界面,速度还是可以接受的。如果界面需要创建大量的UI元素,速度的问题就要好好衡量一下了。
65 楼 hsbcnet 2010-04-14  
Flex这么慢吗?我公司用他来做UI哦
64 楼 ltian 2010-04-14  
windywindy 写道
应乔布斯的话:Adobe不思进取!

IBM \微软\Oracle这些大公司之间有资格相互抨击,但无论哪个公司,对我来说其技术成就都是高山仰止!
63 楼 windywindy 2010-04-14  
应乔布斯的话:Adobe不思进取!
62 楼 vii779 2010-04-14  
fins 写道
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了


确是这个意思,早期的Flex sdk 3.0里面,只有组件的属性能支持数据绑定,组件的样式(此例中Label的color是一个样式)是不支持数据绑定的,sdk 3.2以后样式可以支持数据绑定了。

想申明一下,在这个地方不想讨论如何如何去开发一个组件,相信大家都有一定的组件开发功底。只想列举一下因Flex SDK某些地方的不成熟和一些功能的缺失给开发带来的不方便。

我的例子写的太简单,说的不太详细,有可能误导大家了。举这个例子想阐明以下几个观点

1 Flex SDK 是否做到了可以让一些刚入门的新手很方便的就能写出一个Renderer
2 组件的样式不支持数据绑定,带来了不必要的麻烦。现在已经支持了,也没必要讨论了。
3 一些被奉为开发实践的原则难道就应该这样吗,例如Renderer不要写的太复杂,setStyle要慎用,会带来性能问题。我觉得这是Flex不够完善的一个借口。
4 本例中为了达到Label颜色的动态切换,需要动态更改Label的样式color,这势必会调用setStyle方法,按照某些开发实践原则,setStyle会带来性能问题。您有更好的不损失性能又能达到效果的方案吗,请指出来,但有一个要求,要最简单,至少不要超过我写的例子的那个复杂度,让刚入门的新手都能方便的做到。

希望您能看懂我例子之外所阐述的一些想法,而不仅仅只是陷入对技术实现的一些细节探讨。

61 楼 fins 2010-04-14  
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了
60 楼 discolt 2010-04-14  
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}
59 楼 vii779 2010-04-14  
ltian 写道
vii779 写道
关于setStyle的问题,都建议尽量不要调用,会导致性能低下。

假设我写了一个renderer,里面有一个lable组件,我希望根据数值的大小显示不同的颜色,比如大于100显示红色,小于100显示蓝色,很自然的我会这么写
<mx:Label text="{data}" color="{data>100?0xff0000:0x0000ff}"/>

很遗憾这样是行不通的,首先样式是不支持值绑定的。好吧,hack一把让样式支持值绑定,然后你又会被告知setStyle会带来低下的性能问题。

我想这是一个再普通不过的需求了,解决这个问题会有好几种办法,要么写复杂的AS3代码,要么再冗余一个Label,但是不论哪一种都不如上面来的直接简单和自然。如果setStyle没有性能问题,如果样式支持值绑定,整个世界就变的清净了。话说回来了,这个世界又那会有十全十美的东西,要么您就期待Flex一点一点慢慢改进吧,要么您就去封装自己的组件库吧。

顺便一提,Flex默认的几个Renderder都是用As3写的,创建和布局逻辑代码不少,如果你想继承一下扩展一把,那是不行地,里面几个关键的变量和方法都是私有的。期望Flex以后在设计API的时候,能够抱着更加开放的态度,以利于大家扩展,才有可能形成一个成熟的组件库市场的氛围。




原来您是这样理解Flex组件开发的,难怪!


不妥之处欢迎指正,期待您的高见。

相关推荐

Global site tag (gtag.js) - Google Analytics