`
WonLen
  • 浏览: 51097 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

[Flex]为什么国内的公司都不敢使用Flex作为产品的平台与主要开发语言

阅读更多

我增加了一个关于国内Flex从业者的调查问卷,大家有时间可以填写一下:
http://poll.flexapp.cn

关于这个题目不止一个人问过我,而这些问过我的人们大概分成:各种初创公司的CEO、CTO。各式想做把Flex作为产品主要平台的产品经理及其想学Flex的初学者。
其实我也在想关于这方面的事情,为什么现在Flex似乎出现了雷声大、雨点小的情况?
 
其实我觉得不外乎以下几个原因:
 
1、产品线有些长
就说一下Flex的版本吧,我在2007年初的时候,写《Flex第一步》的时候,是Flex 2.0,而后又升级了一个版本:Flex 2.0.1(比较重要的升级)
2008年初期的时候,就是Flex 3.0(AIR 1.0)的天下了,而2008年中旬出现了AIR 1.5版本。而在2008年末截止到目前位置Flex 4.0已经开始慢慢的浮出了水面...
现在的问题Flex 2.0.1、Flex 3.0、Flex 4.0(测试版)
 
如果我是一个Flex的初学者的话,那么我学习什么呢?Flex 2.0.1过时了(真的过失了吗?)Flex 3.0(是不是也要过时呢?)Flex 4.0(我的英文不好,就算我的英文好的话,目前还是测试版本还是要在看一下的)
如果我是一个打算使用Flex作为产品的平台的话,那么我学习什么呢?Flex 2.0.1过时了(现在已经是Flex 3.0版本了,肯定比2.0.1好!)Flex 3.0(我需要使用它的一些特性,但是3.0里面似乎没有提到)Flex 4.0(什么时候才可以发布正式版?否则我只能等...)
 
其实所谓的产品线过长应该指代的它们之间的兼容性很差。这样就限制了Flex由低版本迁移到高版本的效率、增加了迁移成本。
那么有朋友说了,Silverlight的版本似乎也比较多,因此Adobe需要与MS进行竞争,这是在所难免的。
但是我想说的是:Silverlight的版本虽然也比较多,但是目前大规模的商业化还未开始(我指国内)因此就算是版本不兼容,影响不大。
而反之Adobe就不行了。目前国内的形式是,比较少,但是也会有一些的,一旦发生了版本迁移的成本增加、开发人员的学习费用增加,势必会造成负面的口碑营销(这点是致命的)
 
请看一下,目前比较成功的语言的版本命名:PHP(我虽然不是十分了解PHP,但是我也知道它的版本1.0 ~ 5.0)python(包括了 2.X 与 3.0)虽然 2.X与3.0很多是不兼容的,但是python官方已经给出了初学者一条学习的方向:建议初学者学习 3.0,然后回头再看 2.X的时候,就会比较容易些,因为 2.X很多会让初学者混淆的东西在3.0里面已经不存在了。
 
PS:这里面的版本号指代的是Flex SDK,而非Flex Builder IDE
 
2、名称混淆
a、Flash
b、Flash Player
c、Flex  Builder
d、Flex  SDK
 
请问各位初学者有谁可以分清楚上述名称的区别、版本直接的联系?估计就算是老手也不一定100%的说清楚吧?
 
a、Flash(MX2004、CS3、CS4)
b、Flash Player(9.X、10.X)
c、Flex  Builder(目前似乎与SDK的命名混淆在一起了)
d、Flex SDK(重要的版本有 2.0、2.0.1、3.0、3.2、4.0(测试版))
e、Action Script(1.0、2.0、3.0)

这样混乱的版本难道不会让一个新手晕头转向吗?

3、Flex framework 奇多
我以前是一个Java、C#的开发人员,现在偶尔也玩玩JQueryExt、Python等脚本语言,我从来没有为上述语言的框架选择上面出现疑问?为什么?答案很简单,一共就那么几种框架,而且大多数框架已经很成熟了,因此比较好选择。

而到了Flex/AS这边,我却傻眼了,怎么这多的framework呢?
这样的结果造成的原因就是:所有人都在想到底是用哪个框架?这个框架与其他框架的优势是什么?这个框架适用于我的项目吗?结果所有的人都会把尽力放在寻找、比较框架上面,而真正的忽略了框架的本质。
那么什么是框架的本质呢?或者说框架(framework)是什么呢?
我认为中的框架就是:语言本质特点 + 设计模式

那么语言本质特点:
AS3的语言特点、MXML的语言特点。如果开发人员可以好好的学习这门语法的话,那么我想他一定会了解这个语言特点的。

设计模式:
这个地方就容易了,无论哪种framework的本质都离不开设计模式的,而设计模式基本上全部都是遵循GOF描述的23种设计模式(关于设计模式就是让大家了解这些,毕竟本篇文章不是描述设计模式的文章)

另外我觉得造成Flex框架过多的另一个重要的原因:很多的Flex从业者都是从Flash设计人员慢慢转行过来的,而这些设计人员之前没有很系统的编程功底,因此他们为了编写出更具有可读性的代码,因此就会对framework情有独钟。其实他们这些人完全可以追溯Flex Framework的本源,也就是我刚才说的:语言特点 + 设计模式。

4、中文资料的稀缺:
我这里说的稀缺指的是:好的中文资料,例如:设计模式方面、优秀框架的翻译等内容。
这里我想说一下国内的Flex书籍,我记得没错我的话,关于AS 3.0的数据应该最早是黑羽兄的《AS 3.0 殿堂之路》而Flex方面最早的中文书籍则是walktree与我合写的《Flex第一步》了。

先说说《AS 3.0 殿堂之路》的确是一本不错好书,值得推荐和初学者的学习。
而《Flex第一步》平心而论,这本书写的不够好,有些地方深不下去(追究其原始还是定位的问题),但是作为Flex入门书籍我觉得这本书应该可以胜任了。同时它也可以光荣的退出了历史的舞台。:)

而这两本书之后的很多的国内原创书籍似乎都没有逃脱这两本书的范围和范畴(我这里不是指其他的原创书籍不好)而是想说的是,似乎这些书籍的定位都太重复,也就是差不多都是面向初学者的,没有面向企业级、面向高级程序员的。
如果,我说的如果,现在已经有了关于AS3/Flex的设计模式的书籍、面向企业级开发、分析AS3源码等面向中高端Flex开发者的书籍肯定会拉动国内的“内需”。

说了一大堆,无外乎几个字概况:官方清晰的版本策略、最好可以做到版本的无缝迁移,多一些面向企业级开发的中高端书籍。这样才能让更多的人想去使用Flex、让他们知道如果使用Flex,那么会给公司带来多少、多少的利润:)

21
4
分享到:
评论
28 楼 tieshow 2009-06-11  
刚开始用flex了, 因为有些复杂功能的界面 ,感觉用js不太好做 , ext grid已经不够用了,而其也不好扩展。
继承flex的advancedDataGrid,扩展了一些功能,比如同一grid中单元格拖拽互换,还是很容易的,而且代码看着也清晰的多。
当然挺多复杂的功能 , 还没实现, 资料少,看官方论坛也讨论的少,就看源代码慢慢摸索着...

身边没有 有flex经验的高手, 学习曲线高啊 。
虽然用 mate框架了 , 但大家代码也很容易就写乱了, 急
27 楼 量产型人型自走炮 2009-06-03  
引用
且那效果一看就是原封不动的Flex控件拖出来的,连那暗蓝色调都没改过

怎么感觉在说我...
26 楼 量产型人型自走炮 2009-06-03  
RednaxelaFX 写道

night_stalker 写道同不爽 AS 的不伦不类语法,为什么大家都是 ECMA,但 javascript 就这么简洁有趣,AS 就这么奇怪复杂。get 和 set 就是败笔中的败笔。因为原本的ECMAScript是包着C语法皮的LISP,而ActionScript 3/ECMAScript 4是kitchen sink——太贪心了。要是当时AS3不以ECMAScript兼容性为目标,而抛弃基于原型的对象模型,说不定就没那么复杂了。AS3的语法本来就不是要“比Java或C++有改进”,正好相反,从ActionScript的发展过程看,它正好是从一个类似JavaScript的小型脚本语言逐渐向Java的方向发展过去的。说来,AS1和AS2现在都已经过时,新学的人恐怕都接触的是AS3,在这方面应该不会有多少混乱?AS3的思路,类型系统是动是静看用户自己的需要:要想类型动态起来,就别开strict mode,这样就选择了类型的动态性而放弃了IDE里相对准确的自动完成;要想在IDE里获得比较好的自动完成就得乖乖的打开strict mode,那类型就不好动起来了。诶……其实简单getter/setter都可以通过元编程技巧动态生成出来,只不过这需要类型的动态性……你是要少写几行代码还是要打个点就能看到成员列表呢?恐怕大家都是两者都想要。难啊 :-(不过麻烦的事情还没结束。要是选择了strict mode,在IDE里用起来是舒服了,但在运行时的效率却没比不用strict mode好多少。也就是说束手束脚的“静态”类型不会带来显著的性能优势。这多少还是让人觉得伤心的,明明付出了代价……AS3里我最喜欢的语法是E4X的部分,处理XML超方便。别的主流编程语言里可能就VB9的XML字面量能与其媲美了。我们学校教务处的教服平台有一段改用Flex 2来做,在校园网里面等它加载都非常慢;而且那效果一看就是原封不动的Flex控件拖出来的,连那暗蓝色调都没改过 OTL 总之反响十分糟糕,很快又换回Ajax方案了(但是那些懒惰的人不知道用了什么库,有些页面不在IE核心上就用不了,可恶)

FX大都来了...看来果然是我学艺不精..不关AS什么事
E4X超赞...这个我赞成,用完这个再用dom4j xerces就很那啥了。要是能对象到XML直接转就更赞了...不过我在实际使用中似乎发现一点小问题,FLEX3.0对E4X解析true false不能直接用as boolean转换,还是需要比较字符串,这个不太好。
关于元编程自动生成getter setter能更详细一点么?
25 楼 蓝月鸟 2009-06-03  
用了就上吊了
24 楼 WonLen 2009-06-03  
步行者 写道

框架就是:语言本质特点 + 设计模式感觉这个定义有点片面了我觉得框架就像“骨架”,需要我们添一些“肉”,才会成为有用的软件实体,但如果“骨架”不好,那么这个实体也不会很稳固一个框架一般是针对于特定领域的,像Struts就是针对web开发,语言和设计模式 就像 一门自然语言 和 经典句式,一门自然语言 + 经典句式 不一定就能成就一篇好文章

武汉的朋友,我发现武汉搞IT的人很多啊:)
其实这种性质的文章很容易出现“摩擦”的,很感谢你的回复:)
23 楼 步行者 2009-06-03  
框架就是:语言本质特点 + 设计模式
感觉这个定义有点片面了
我觉得框架就像“骨架”,需要我们添一些“肉”,
才会成为有用的软件实体,
但如果“骨架”不好,那么这个实体也不会很稳固
一个框架一般是针对于特定领域的,像Struts就是针对
web开发,语言和设计模式 就像 一门自然语言 和 经典
句式,一门自然语言 + 经典句式 不一定就能成就一篇好文章

22 楼 WonLen 2009-06-03  
ningzai 写道

量产型人型自走炮 写道
嘛...其实我觉得AS语法上很多败笔。学什么不好学java....一个getter setter就浪费好多时间。类型不动不静,泛型支持很挫又不是完全的动态类型....

你的观点我同意!

setter and getter可以通过Binding的方式进行有效的改善。不过你的观点,我还是很赞同的:)
21 楼 WonLen 2009-06-03  
RednaxelaFX 写道

night_stalker 写道同不爽 AS 的不伦不类语法,为什么大家都是 ECMA,但 javascript 就这么简洁有趣,AS 就这么奇怪复杂。get 和 set 就是败笔中的败笔。因为原本的ECMAScript是包着C语法皮的LISP,而ActionScript 3/ECMAScript 4是kitchen sink——太贪心了。要是当时AS3不以ECMAScript兼容性为目标,而抛弃基于原型的对象模型,说不定就没那么复杂了。AS3的语法本来就不是要“比Java或C++有改进”,正好相反,从ActionScript的发展过程看,它正好是从一个类似JavaScript的小型脚本语言逐渐向Java的方向发展过去的。说来,AS1和AS2现在都已经过时,新学的人恐怕都接触的是AS3,在这方面应该不会有多少混乱?AS3的思路,类型系统是动是静看用户自己的需要:要想类型动态起来,就别开strict mode,这样就选择了类型的动态性而放弃了IDE里相对准确的自动完成;要想在IDE里获得比较好的自动完成就得乖乖的打开strict mode,那类型就不好动起来了。诶……其实简单getter/setter都可以通过元编程技巧动态生成出来,只不过这需要类型的动态性……你是要少写几行代码还是要打个点就能看到成员列表呢?恐怕大家都是两者都想要。难啊 :-(不过麻烦的事情还没结束。要是选择了strict mode,在IDE里用起来是舒服了,但在运行时的效率却没比不用strict mode好多少。也就是说束手束脚的“静态”类型不会带来显著的性能优势。这多少还是让人觉得伤心的,明明付出了代价……AS3里我最喜欢的语法是E4X的部分,处理XML超方便。别的主流编程语言里可能就VB9的XML字面量能与其媲美了。我们学校教务处的教服平台有一段改用Flex 2来做,在校园网里面等它加载都非常慢;而且那效果一看就是原封不动的Flex控件拖出来的,连那暗蓝色调都没改过 OTL 总之反响十分糟糕,很快又换回Ajax方案了(但是那些懒惰的人不知道用了什么库,有些页面不在IE核心上就用不了,可恶)

说的很到位,说到Actionscript 3.0,我最喜欢的地方是:命名空间、E4X、元数据、事件、数据的UI呈现等方式。
20 楼 WonLen 2009-06-03  
sprite 写道

感同身受啊,做flex也两年了。也说说一 市面上的中文书籍都是入门级,英文太花时间。二 Adobe提供的Flex控件,基本只能满足很简单的应用。很多控件都得自己扩展。这也是为什么网上那么多各式各样的控件,然而使用网上的控件往往会引入很多东西。三 没有成熟像样的社区,如们易,提高难。多人合作,没规范,puremvc canigor等框架都有点半调子(规模较大简直是恶梦),太多东西需要自己处理,开发效率并不高

是啊,基本上就是我在文章阐述的这几点了,所以我觉得对Flex不能盲目的崇拜、跟从,更应该看看外界对Flex的评价。
19 楼 RednaxelaFX 2009-06-03  
night_stalker 写道
同不爽 AS 的不伦不类语法,为什么大家都是 ECMA,但 javascript 就这么简洁有趣,AS 就这么奇怪复杂。get 和 set 就是败笔中的败笔。

因为原本的ECMAScript是包着C语法皮的LISP,而ActionScript 3/ECMAScript 4是kitchen sink——太贪心了。要是当时AS3不以ECMAScript兼容性为目标,而抛弃基于原型的对象模型,说不定就没那么复杂了。AS3的语法本来就不是要“比Java或C++有改进”,正好相反,从ActionScript的发展过程看,它正好是从一个类似JavaScript的小型脚本语言逐渐向Java的方向发展过去的。说来,AS1和AS2现在都已经过时,新学的人恐怕都接触的是AS3,在这方面应该不会有多少混乱?

AS3的思路,类型系统是动是静看用户自己的需要:要想类型动态起来,就别开strict mode,这样就选择了类型的动态性而放弃了IDE里相对准确的自动完成;要想在IDE里获得比较好的自动完成就得乖乖的打开strict mode,那类型就不好动起来了。诶……其实简单getter/setter都可以通过元编程技巧动态生成出来,只不过这需要类型的动态性……你是要少写几行代码还是要打个点就能看到成员列表呢?恐怕大家都是两者都想要。难啊 :-(

不过麻烦的事情还没结束。要是选择了strict mode,在IDE里用起来是舒服了,但在运行时的效率却没比不用strict mode好多少。也就是说束手束脚的“静态”类型不会带来显著的性能优势。这多少还是让人觉得伤心的,明明付出了代价……

AS3里我最喜欢的语法是E4X的部分,处理XML超方便。别的主流编程语言里可能就VB9的XML字面量能与其媲美了。

我们学校教务处的教服平台有一段改用Flex 2来做,在校园网里面等它加载都非常慢;而且那效果一看就是原封不动的Flex控件拖出来的,连那暗蓝色调都没改过 OTL 总之反响十分糟糕,很快又换回Ajax方案了(但是那些懒惰的人不知道用了什么库,有些页面不在IE核心上就用不了,可恶)
18 楼 night_stalker 2009-06-03  
同不爽 AS 的不伦不类语法,为什么大家都是 ECMA,但 javascript 就这么简洁有趣,AS 就这么奇怪复杂。get 和 set 就是败笔中的败笔。
17 楼 ningzai 2009-06-03  
量产型人型自走炮 写道

嘛...其实我觉得AS语法上很多败笔。学什么不好学java....一个getter setter就浪费好多时间。类型不动不静,泛型支持很挫又不是完全的动态类型....

你的观点我同意!
16 楼 sprite 2009-06-02  
感同身受啊,做flex也两年了。也说说一 市面上的中文书籍都是入门级,英文太花时间。二 Adobe提供的Flex控件,基本只能满足很简单的应用。很多控件都得自己扩展。这也是为什么网上那么多各式各样的控件,然而使用网上的控件往往会引入很多东西。三 没有成熟像样的社区,如们易,提高难。多人合作,没规范,puremvc cairngorm等框架都有点半调子(规模较大简直是恶梦),太多东西需要自己处理,开发效率并不高

15 楼 sprite 2009-06-02  
感同身受啊,做flex也两年了。也说说
一 市面上的中文书籍都是入门级,英文太花时间。
二 Adobe提供的Flex控件,基本只能满足很简单的应用。很多控件都得自己扩展。这也是
为什么网上那么多各式各样的控件,然而使用网上的控件往往会引入很多东西。
三 没有成熟像样的社区,如们易,提高难。多人合作,没规范,puremvc canigor等框架都有点半调子(规模较大简直是恶梦),太多东西需要自己处理,开发效率并不高
14 楼 WonLen 2009-06-02  
superdandy 写道

我也是《Flex第一步》的读者。 感觉现在还有一个重要原因就是国内的网速。  这让人很头疼的。  如果是一个地处多个地区的大型企业,互相之间的网络带宽不一定就够用。 随随便便一个小应用都要几M的,实在让人受不了啊

的确有这样的情况,不过可以利用RSL、改成module的方式来减小size,但是flex Framework 的确是太大了。。。
13 楼 superdandy 2009-06-02  
我也是《Flex第一步》的读者。 感觉现在还有一个重要原因就是国内的网速。  这让人很头疼的。  如果是一个地处多个地区的大型企业,互相之间的网络带宽不一定就够用。 随随便便一个小应用都要几M的,实在让人受不了啊
12 楼 量产型人型自走炮 2009-06-02  
缺了后半句..
*而前面我所提到的getter setter以及类型的不动不静却确实给开发带来了很大不便
11 楼 量产型人型自走炮 2009-06-02  
TonyLian 写道

AS的绑定、事件监听、异步,初接触确实很混乱,但时间长会喜欢上的。
但是,不支持重载,构造函数只能Public就让人烦了。

最大的问题还是实现其号称的“丰富用户体验感”的开发代价太大了,单纯的开发人员很难,必须大量的美工参与。这一点就不如MS了,而且在企业应用上,不同于做个花式的网站,MS的“用户体验感”更加优秀,更加贴近用户。

我当初接触Flex是因为,Java和.Net中间隔着MS霸主这座山。但当我借助开凿工具,挖出了一条隧道之后,我又转回了MS的怀抱。毕竟现在的企业应用的客户端“跨平台”并没有什么特别的卖点,终端用户谁的桌面上不是Windows? 只要后台是跨平台的Java就足够了。


异步和事件是好东西我承认,但是还没有好到让我放弃多线程。这种实现方式确实在很大程度上降低异步处理的复杂度,但是在某些特殊情况下(与直接支持线程的语言相比)会相当束手束脚。而前面我所提到的getter setter以及类型的不动不静(我想起一句经典的吐槽:
Strong typing  is for people with weak minds

偶是最近才接触AS的,其实我是挺喜欢AS的,与QT相比(可能不适合比较,但是我学AIR就是用来替代QT的),它提供更多的傻瓜特效,更多图形矢量操作并且不用每个平台下个SDK编译一次。
但是缺点也非常明显
1.不客气的说我认为AS的语法跟java与C++比甚至没有任何实质上的改进,某种程度上还不如前两者
2.性能问题不可避免要提一下,开个窗口就10多M(甚至20多M)内存稍微控件特效多一点逻辑复杂一点CPU就飚上40%50%就这一点上要跟QT叫板还早了100年

好吧,我承认是我要求过高,各位大大可能认为我在找碴。其实,嘛,如果不是对air/flex有所期待我才懒得回这篇帖子。

最后引用fins大大一句话
“AIR,我看好你,可别让我失望哦!”
10 楼 TonyLian 2009-06-02  
AS的绑定、事件监听、异步,初接触确实很混乱,但时间长会喜欢上的。
但是,不支持重载,构造函数只能Public就让人烦了。

最大的问题还是实现其号称的“丰富用户体验感”的开发代价太大了,单纯的开发人员很难,必须大量的美工参与。这一点就不如MS了,而且在企业应用上,不同于做个花式的网站,MS的“用户体验感”更加优秀,更加贴近用户。

我当初接触Flex是因为,Java和.Net中间隔着MS霸主这座山。但当我借助开凿工具,挖出了一条隧道之后,我又转回了MS的怀抱。毕竟现在的企业应用的客户端“跨平台”并没有什么特别的卖点,终端用户谁的桌面上不是Windows? 只要后台是跨平台的Java就足够了。
9 楼 WonLen 2009-06-01  
量产型人型自走炮 写道

嘛...其实我觉得AS语法上很多败笔。学什么不好学java....一个getter setter就浪费好多时间。类型不动不静,泛型支持很挫又不是完全的动态类型....

很有意思的回复,不过的确是这样的,说实话,当我学了python、ruby后,再看ActionScript 3.0是挺头疼的了...

相关推荐

Global site tag (gtag.js) - Google Analytics