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

我增加了一个关于国内Flex从业者的调查问卷,大家有时间可以填写一下:
原文请看:
http://www.k-zone.cn/zblog/post/why-not-use-flex.html

以下是全文:
关于这个题目不止一个人问过我,而这些问过我的人们大概分成:各种初创公司的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
e、Action Script

请问各位初学者有谁可以分清楚上述名称的区别、版本直接的联系?估计就算是老手也不一定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#的开发人员,现在偶尔也玩玩JQuery、Ext、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,那么会给公司带来多少、多少的利润:)

标签: Flex
posted @ 2009-05-28 13:19 Kenshin.L 阅读(4064) 评论(39) 编辑 收藏

 回复 引用   
#1楼 2009-05-28 13:59 keji[未注册用户]
Flex成本很高
 回复 引用 查看   
#2楼[楼主] 2009-05-28 14:03 Kenshin.L      
@keji
如果不使用Flex Builder,而只是使用Flex SDK的话,它的成本就没有那么高了。当然Flex Application的size过大的问题的确也很头痛。而后台如果不使用LCDS的话,也是没有问题的。

 回复 引用 查看   
#3楼 2009-05-28 14:41 金色海洋(jyk)      
Flex Builder 是不是相当于 VS2008这个级别的呀?

Flex 和我们看到的flash动画 有哪些区别呢?

Flash(MX2004)里面不是可以使用Action Script来写程序吗?

Flash(CS3、CS4)是什么?新版本吗?我还是停留在 MX2004这个版本的认识程度呢。

 回复 引用 查看   
#4楼 2009-05-28 15:04 温景良(Jason)      
说得有道理,我现在都快蒙了
Flex 至少在近几年成不了大事.
 回复 引用 查看   
#6楼 2009-05-28 16:15 henry      
Flex Builder的MXML设计,CSS设计功能的确是要比VS2008先进一个级别的
 回复 引用 查看   
#7楼 2009-05-28 16:50 指针为空      
lz就是那本书的作者啊?
去年看着你的书,做了一点点flex的东西,说真的,flex感觉还是不太好用.

我感觉,要是项目用到flex,一般就是程序员来做RIA的时候.flex虽然说是代码的flash,但是很多时候比起flash让人感觉有点累.

flex里提供了几个简单mxml的动画效果设计,实现起来很简单,感觉可以靠事件控制这些.
但是,真要把一连串的动画做到一起的时候,就很麻烦,尤其是需要动画之间无缝联动的时候.靠事件就不行了,头一个事件还没结束,后一个事件该相应而没响应.
在网上搜了半天,这些东西要用as3来写.还是很麻烦.

而,最后我们之所以停止在使用flex的一个最主要原因,美工设计人员学不会代码,会代码的程序员在实现美工设计的时候,总是达不到美工的设计要求.而一些出色一点的美工设计人员完全可以使用flash制作出想要的效果.

flex没有数据库引擎,数据只能去读取其他语言提供的xml,还需要使用像web Service这样的东西.虽然更多时候人们更希望使用web Service,但是在简单应用的时候,就复杂了.


整个flex给人的感觉就是这样,有点不伦不类,既不适合设计人员使用因为完全要靠代码做东西.也不适合程序人员使用,因为他又是实现RIA的一个工具.

最终,flex给我的感觉就是,Adobe理想的想制造一种东西,以应对ms的silverlight,于是就把flash改了改.仅此而已...

 回复 引用 查看   
#8楼 2009-05-28 16:55 henry      
@指针为空
FLEX已经是几年前的东西了,那个时候WPF都没有更不要说silverlight...

 回复 引用 查看   
#9楼 2009-05-28 16:59 指针为空      
@henry
嗯,接触比较晚,确实flex靠前,不过,始终没明白Adobe这个产品的定位如何.

 回复 引用 查看   
#10楼[楼主] 2009-05-28 17:15 Kenshin.L      
@指针为空
Flex的定位是针对于RIA产品,其实我认为,Adobe真正的目的在于AIR,而Flex → AIR,如果你的程序很简单的话,那么只需要2~3个步骤就可以将Flex变成AIR,因此就可以在桌面上面运行了!
PS:以下是我去年在一次关于AIR的演讲内容。
http://www.k-zone.cn/zblog/post/log-2008-1-29-diarys.html

 回复 引用 查看   
#11楼 2009-05-28 17:26 无常      
Flex和actionscript是设计人员玩的东东
 回复 引用 查看   
#12楼 2009-05-28 17:47 指针为空      
@Kenshin.L
AIR需要安装AIR player,AIR做的不多,不过我确实用flex做的桌面软件,就是做的有点像多媒体教学光盘那样的.

swf文件的安全沙箱问题让我头疼很久了.而且,说来也可笑,当时有一个bug,是在全屏显示之后,使用控件的一些特效上,记得在flash player 9下没问题,到10下面就崩了.....最后为了应付客户,直接用flash player 9封装成exe...

 回复 引用 查看   
#13楼[楼主] 2009-05-28 17:48 Kenshin.L      
@无常
你说错了,看来你还不是很了解Flex、ActionScript 3.0。
如果要说给设计人员玩的是东西,那只能是Adobe CS里面的PS、FW、Flash IDE了。而包括ActionScript 3.0是面向对象的编程语言,在等级上与Java、C#等都是一样的,而Flex也是类XML的标签式语言。而BlazeDS、LCDS、FMS等:同样无须质疑的是,这些产品都是面向服务器端的产品,就更不可能是设计人员玩的东西了。
PS:我不是Adobe的崇拜者:)

 回复 引用 查看   
#14楼 2009-05-28 17:49 指针为空      
@无常
想让设计人员搞懂flex的代码还有as,真的很难...怎么说as3也是oo的,对于一个艺术院校毕业的设计人员,让他们做这些,真的有点过了...
不如flash,直接往时间轴上贴,在配合一点点as脚本,就这一点点as脚本,就已经让设计人员头大了

 回复 引用 查看   
#15楼[楼主] 2009-05-28 19:49 Kenshin.L      
@指针为空
你说的AIR Player,其实就是AIR,关于这个地方,其实还蛮头疼的,因为Adobe对这些产品的命名实在是太差了。
PS:如果要在浏览器上面运行Silverlight,也是需要安装它的runtime,这点与Flash其实是一样的。而AIR也是一样的道理,AIR的开发者只能奢望Adobe把它的runtime做的小点、小点、再小点!

 回复 引用 查看   
#16楼[楼主] 2009-05-28 20:07 Kenshin.L      
@指针为空
也不能完全这么说,其实如果使用Flash Catalyst可以让设计人员与开发人员之间的配合变得更“默契”一些!

 回复 引用 查看   
#17楼 2009-05-28 20:14 郑明      
ActionScript 3.0实际脚本吧?
 回复 引用 查看   
#18楼[楼主] 2009-05-28 20:51 Kenshin.L      
@郑明
请问你问的是什么意思?ActionScript 3.0是一个OO思想的编程语言。ActionScript 2.0(包括以前版本)是属于脚本范畴的。

 回复 引用 查看   
#19楼 2009-05-28 20:52 kiler      
我觉得主要原因还是因为Flex的适用范围比较窄,仅仅就是客户端吧。
 回复 引用 查看   
#20楼[楼主] 2009-05-28 21:04 Kenshin.L      
@kiler
其实我倒是觉得主要原因是Adobe推广的问题,还有就是目前Flex从业者比较少。因此一旦发生了“意外”,则很难在很短时间找到合适的人。这点,我深有体会!

 回复 引用 查看   
#21楼 2009-05-28 21:09 無尽海      
话说Flex Builder不是正式改名Flash Builder
AMF通讯协议Adobe好像是去年开源的,马上就蹦出了好多服务器实现,我看很有前景,特别现在在webgame上应用很多。
用flex 取代winform,
再加上FluoinerFX这类AMF网关多安逸

 回复 引用 查看   
#22楼 2009-05-28 21:40 Teddy's Knowledge Base      
EF(英孚教育)上海招flex developer,有意者请给我留言:
http://www.cnblogs.com/teddyma/contact.aspx?id=1

 回复 引用 查看   
#23楼[楼主] 2009-05-28 21:41 Kenshin.L      
@無尽海
是的,的确是这样的情况,web game的话,据我所知,《热血三国》是用Flex开发的,不过通讯方面,据说是使用了amf通讯的机制,不过另外一款flex制作的web game而采用的自己的开发的socket通讯方式。
不过,我个人认为flex做web game,似乎不是最好的解决方案!

 回复 引用 查看   
#24楼 2009-05-28 22:04 無尽海      
@Kenshin.L
楼主可以试试fluoinerFx这个开源项目,绝对比webserver要用起来舒服,
flex+fluoinerfx vs winform+webserver,前者开发效率、页面效果、性能,我看都会胜过后者,

webgame的话,如果有成熟的socket方式的游戏服务端,当然用现成的,稳定的服务端不是一两天弄得出的吧,如果没有呢?
使用基于http的amf通讯稳定,开发效率也更高,对开发者的要求更低,性能问题?热血三国不好好的运行着。

当然socket方式最好,可惜自认为自己现在水平是没可能用socket写个稳定的服务端的....先用好amf再说




 回复 引用 查看   
#25楼[楼主] 2009-05-28 22:08 Kenshin.L      
@無尽海
是的,如果不选择socket的话,要所速度来说肯定是要使用remote方式,即你说的amf方式。
fluoinerFx,我使用过的,不过没用应用于商业性的项目。
目前我在使用的商业项目中,通讯是使用LCDS里面的message方式,效率方面也还可以的。

 回复 引用 查看   
#26楼 2009-05-28 22:50 無尽海      
@Kenshin.L
LCDS?java上类似fluoinerfx的实现?
我怎么记得java上有个BlazeDS已经很有名了。。。搞不懂这么多
还是就关心.net上的算了

 回复 引用 查看   
#27楼 2009-05-28 23:57 flyingchen      
学过java,半天时间就能搞定as3的语法,确实很OO.
从.net程序员角度看flash开发工具,肯定不能和vs比,但如果写过ruby等脚本,我的
感觉是cs4已经够好用了。

 回复 引用 查看   
#28楼[楼主] 2009-05-29 08:16 Kenshin.L      
@無尽海
BlazeDS是LCDS的简化、免费的版本,其实针对于中小型的项目,如果后台是java的话,那么我建议他们使用BlazeDS,反之的话,我还是建议使用LCDS:)
毕竟Adobe是拿他卖钱的东西。
如果你想找BlazeDS与LCDS的区别的话,可以去搜索引擎找找,肯定有很多的:)

 回复 引用 查看   
#29楼[楼主] 2009-05-29 08:19 Kenshin.L      
@flyingchen
我也用过.net IDE,并且用了大概2年的时间,虽然时间不长:)
而Flex Builder(其实应该叫做Flash Builder)是基于Eclipse,因此在Adobe那边有一个关于Eclipse for Flex Builder plug-in的插件包,安装完毕后,就可以在Eclipse上面使用编写Flex了,也就是说Eclipse就是Flex的IDE(当然同样也包括MyEclipse),所以我觉得在IDE上面,不会比.net差的:)

 回复 引用 查看   
#30楼 2009-05-29 09:05 flyingchen      
@Kenshin.L
忘记说了,我是flash新手,我指的flash的ide是Adobe Flash CS4 profession,不是指flex的。

 回复 引用 查看   
#31楼 2009-05-29 10:42 风海迷沙      
因为现在国内占着技术经理的位子的人用的全是2000年以前的技术,不懂新技术又不学也不敢让新人用,整天在公司吃软饭呗,你要考虑国情。
 回复 引用 查看   
#32楼[楼主] 2009-05-29 10:44 Kenshin.L      
@风海迷沙
呵呵,很深刻啊,的确是这样的...不过我觉得一些有“朝气”的公司在这点上做的还可以。

 回复 引用 查看   
#33楼[楼主] 2009-05-29 10:47 Kenshin.L      
@风海迷沙
呵呵,其实Adobe Flash CS4 profession与VS是不能比较的,一个是针对于设计,而一个是针对于开发。
不过非得要比的话,就应该拿Microsoft Expression来比较的:)
关于这两者的好坏我就不在这里说了:)

 回复 引用 查看   
#34楼 2009-05-29 11:37 风海迷沙      
Adobe Flash CS4?
我在大一时就会用了flash5,六年后工作时发现公司美工用的还只是flash5,对老板来说,只要能做出“好看”的东西就行了。另外,中等公司一般不会大规模使用最新的商业软件如DW,PS,RAR等,我们也收到过警告,一夜间公司里所有人全卸载了。

 回复 引用 查看   
#35楼[楼主] 2009-05-29 12:58 Kenshin.L      
@风海迷沙
还有公司在使用Flash 5?另外一点就是Flex是针对于开发者而言的,而不是设计人员。

 回复 引用 查看   
#36楼 2009-05-29 15:20 黑羽飘舞      
--引用--------------------------------------------------
Kenshin.L: @無尽海
是的,的确是这样的情况,web game的话,据我所知,《热血三国》是用Flex开发的,不过通讯方面,据说是使用了amf通讯的机制,不过另外一款flex制作的web game而采用的自己的开发的socket通讯方式。
不过,我个人认为flex做web game,似乎不是最好的解决方案!
--------------------------------------------------------


那以博主看来,做webgame的最佳方案是什么?

 回复 引用 查看   
#37楼[楼主] 2009-05-29 16:48 Kenshin.L      
@黑羽飘舞
我之所以不建议使用Flex做web game的原因有两个:
1、flex 生成的application的size比较大,虽然这点可以使用RSL的方式避免,但是我觉得这个方式也是换汤不换药的方式。
2、flex里面已经基本上剔除了flash里面time line的概念,现在来说flex只有两帧,第一帧就是我们大家看到的loading画面,等loading结束后就会跳转到主程序,而主程序也就是第二帧了。
我个人认为比较好的解决方案是是用flash、或者干脆直接使用as 3.0来直接写web game。
PS:我一直从事的是Flex business solution的,对web game的架构不是很熟悉,只不过从flex本身的一些特质来说说而已。不过目前我已知的使用Flex做web game的游戏已经有两款了。

 回复 引用 查看   
#38楼 2009-06-01 16:09 Clingingboy      
@Kenshin.L
开源就是这样,每个人都想来搞框架.大家光意识到了开源,却忽略了学习和重复的成本.与微软的策略完全不同.微软silverlight框架也是微软出品,可能第一个版本不好,但会越来越好.对于flex,如果flex本身sdk做的不好,别人不用的话就等于失败了.用开源的风险太高.
对于web game确实是flex体积太大,基本上不是为web game准备的,还是商业驱动来主导.

 回复 引用 查看   
#39楼[楼主] 2009-06-01 16:17 Kenshin.L      
@Clingingboy
其实本质上来说Flex SDK未全部开源的,其实开源与闭源都是各有优缺点的,谁也没有把谁怎么样,我所说的Flex Framework,指的是第三方的Framework,而这点的本质上的原因是,很多的Flex开发者并不是真正意义上的程序员,因此他们就必须要使用Framework来约束自己的编程行为,因而造成的问题。