我本人对于Flash和HTML5两个技术领域的观点判断大致如下:
Flash已经走入软件生命周期的末期,是的,万物皆有始终,更何况Flash。1994年4月10日到今日,Flash已经有21岁。21岁对于一个人而言,正属风华绝代之年,但是在软件领域里,存活21年实在算的上是一个老家伙了。说到衰落,必然要提崛起。21年的过程中,Flash经历了三次成功高峰,分别是1999年的网络动画时代,2005年的Flash Video时代与2008年的Web Game时代。这三次互联网领域的高峰,全部都被Flash赶上(不得不说命好运也好),并且这三次成功,引领了Flash在生命周期中的一次又一次产品形态上的变化。
Flash Animation的流行引领了Flash的第一次成功,1999年,借着第一波互联网.com的热潮,由于当时HTML技术功能上的羸弱,大量被人所称道的Banner,动画,MTV都是借助Flash创作而来,这些充满神奇的交互效果充斥了每个网站,Flash在网页动画创作领域开始快速崛起。我当时的雇主美国Macromedia公司旗下的Flash,Dreamweaver和Fireworks被国人亲切的叫做网页三剑客,当时我主要泡闪客帝国(前身是边城浪子的回声资讯)和蓝色理想这两个Flash开发者聚集的论坛。2004年,借助着前几年Flash所取得的成绩,Macromedia公司被Adobe公司以34亿美金收购。2005年,Flash有史以来最重要的版本之一Flash 8(codename:8 ball)登场,这一版本里集成了2个最重要的功能,其中一个功能引领了后来YouTube和优酷土豆视频网站的成功,就是Flash Player里集成了Sorenson Spark H.263(VP6)的视频解码功能,而另一个功能为以后Flash可以创作更精彩的Web Game埋下伏笔,就是Bitmap和Bitmapdata位图操作的实现。2008年,Flash又“幸运”的赶上了社交游戏的浪潮,随着Zynga和Facebook的大获成功,Flash在社交游戏的技术领域独领风骚,之后的Stage3D技术又让Flash彻底统治PC网页游戏领域。在Flash最为巅峰的这么多年内,任何其他类似的技术都没有在与Flash竞争上胜出,期间也出现过若干“Flash Killer”,包括Silverlight,JavaFX,Lazslo和Unity Player。作为胜出者Flash自然有他的缘由,就是独一无二高度统一的Flash Player,强大的内容设计开发工作流,多年积累而成的强大的社区生态。
水满则溢,月盈而亏。Flash开始走下坡路业界都认为是从苹果乔布斯的那篇檄文而起。没错,那篇檄文是Flash开始走下坡路的开始,后续的一系列对Flash的不利消息又接踵而来,都给Flash造成了沉重的打击。我这里给各位总结一下Flash由盛转衰的几个重要事件。它们分别是:
可以说是一系列的坏消息,如果合在一起看,那简直是坏的不能再坏的消息了,其中很多的决策来自于Adobe自己,这有充分的理由让我们相信,Flash这个平台型的技术已经进入了最后的生命周期。但Flash给Web进化带来了很多有价值的推动。
首先,在Flash最为鼎盛的时期,来自Adobe的官方统计,全球有将近200万的Flash开发者,这个群体不同于其他语言的开发者,可以说他们是一个独特的开发者群体,我们可以理解他们才是真正的“Full Stack”工程师,会开发游戏,会制作动画,会创作富媒体应用,甚至很多人还兼修美术,烹饪和刺绣。从2010年Flash开始走下坡路,这些Flash开发者陆续转型,他们成为了后来众多应用和游戏公司的中坚力量,目前市场上大量的Unity,Cocos的手游开发者,Egret Engine社区里近一半的HTML5开发者,甚至是大量的AngularJS和JQueryMobile的开发者,都来自于原来的Flash社区。
其次,Flash开发生态为HTML5标准的进化带来了大量有借鉴价值的范本模型。Adobe通过Flash Professional工具开放了JSFL扩展;支持了JQuery Mobile和WebGL的输出,甚至于矢量绘图的动画都支持CreateJS的导出;Adobe将全球最流行的骨骼动画项目之一DragonBones转给了Egret继续原生和HTML5版本的开发工作;Flex项目的主程成为了Google AngularJS的作者;曾经流行的Flash游戏框架Flixel的作者后来又参与创作了HTML5游戏框架Phaser;被Adobe捐助给Mozilla组织的AVM2虚拟机的源码间接驱动了IonMonkey,SpiderMonkey项目中GC的更新换代和Flash转换HTML5项目Shumway的流行;Adobe的ActionScript3.0的语法方式被Egret Engine团队在HTML5的引擎产品设计上所借鉴;Stage3D项目后续促成了Away3D和Minko等原Flash3D项目完美转型HTML5技术领域。还有很多HTML5相关的视频和音频项目在过去几年的发展中大量的融合了Flash相关的媒体库来提供更多的功能支持,当今大量的HTML5 Video Player都是从原来的Flash领域变换而来。这一切都是Flash技术带给当今HTML5领域的财富。现实是很多人并未看到这些,看到的是当Apple宣布iOS不支持Flash技术开始,有些所谓的“专家”和“专业媒体”将Flash营造成HTML5的头号死敌的话题博取业界的更多眼球,其实他们并不关心Flash和HTML5为Web领域真正带来了什么,也不关心谁赢谁输,他们唯一关心的就是自己的知名度和访问量。
接下来说说第二个观点,Flash从未真正赢得过移动领域。在开始这段之前,推荐各位在知乎看看我回答的这篇帖子“iOS不支持Flash的真实原因是什么?”iOS 不支持 Flash 的真实原因是什么? - 知乎用户的回答。下面则是更多事实可以证明Flash一路走来,赢得了PC,丢掉了移动市场:
1.在2004年,Flash跟中国移动对接动画标准一事,当时Flash Lite进入中移动动画标准评测流程之前,已经有两家利用Flash Player 6 SDK泄露的源码而做了山寨Flash播放器的公司在跟中移动对接了,一家韩国公司,一家中国公司,而且接触中移动的时间已经不短。Macromedia虽然是Flash官方,但是最后一个进场,而且当时中移动已经初定一家山寨Flash的产品成为标准,称之为MFlash。虽然中移动知道Macromedia是Flash的官方,技术更强,也乐意重新在中移动定制的功能机上使用Flash Lite标准,但是由于Macromedia坚持要求中移动承诺植入FL的设备总数,并按照单台1美金收取授权费。因为中移动是大公司,多少人挤破头想和中移动合作,但是Macromedia这家美国公司偏偏坚持成为标准,每台设备要收1美金。结果可想而知,Flash第一次错过了中国最大的移动运营商,很不幸的是,主导Flash播放器收取设备授权费的这个美国人跟着Macromedia一同进了Adobe,还被提升成为全球业务的高级总监,不幸的事情再次发生就自然而然了。
2.Nokia当年太有钱了,这家公司带头支持了内置Flash Lite,也带头支付给Adobe了Flash的设备授权费用。这一行径使得Adobe坚持认为Flash在移动设备上能收取费用且必须收取费用,不论是任何厂商,都不例外。一刀切的收费策略也自然引发了当年很多大大小小手机厂商的不满,当然,这个Adobe CEO可能不知道,只有我们这些处在一线的员工才了解。但是这条线的决策当时由上面说到的那个美国人来负责时,KPI自然也是以能为公司贡献多少利润来衡量团队业绩的唯一标准。所以,只看眼前利益,不花大力气培养移动生态成了Flash错过移动市场的另一个主因。
3.当年Adobe对于Flash播放器的源码访问已经到了无比严苛的地步,只有在美国注册且有实体研发的公司才能通过clean room的方式获取Flash Player的源代码进行移动设备的定制,其他硬件公司都必须通过引入Adobe授权的第三方Porting Partner的机制来获取定制后的Binary Build。这个流程简单描述就是,如果我是一家中国的手机公司,有植入Flash播放器的需求,而且愿意付费,那我要跟Adobe授权的一家Porting公司签协议,这家Porting公司注册在美国,研发在印度......印度,你懂的,然后印度人来中国找我,了解我的设备(这里还有一个大问题,就是即使签署保密协议,但这家Porting Flash的公司必然知道我将来要发布到市场的新手机的所有硬件规格,妈蛋啊,我新手机保密还未上市就都让别人全知道了,有可能这家知道我的手机规格的公司还在为我的竞争对手做porting!虽然有了保密协议,好吧,就当是完全保密吧。),然后评估是否可以移植Flash,然后回印度在clean room里访问Flash源代码,进行移植。移植完成后,要把装有定制Flash Player Build的样机送回给美国Adobe进行认证和备案,符合一切QA认证流程后,告知我可以出货了。好吧,这个蛋疼的流程虽然我不知道当初是谁制定的,但是结果就是,我有款新上市的手机有植入Flash的计划,我要先把我的硬件信息全部公开给第三方进行评估,而且手机将来能否出货,要先等几个月的Porting和Certify的流程,还要先付给Adobe一笔预付款,最后可能手机上市日期因为种种原因流产了。。。这么死板不人性化的流程成为Flash错过移动市场的第三个主要原因。
4.就是众所周知的苹果在iOS上屏蔽Flash的事件,虽然当年Adobe用了“We Love Flash, We Love Apple”极富煽情的公关方式来应对,但是然并卵,Flash错过了移动市场上的第一个大腿iOS。
5.Adobe然后开始决定不再移动设备上花费大量的人力物力来维护和开发Flash播放器,所以接着又官方宣布了不再更新安卓版本的Flash Player的决定。转而鼓励开发者使用Adobe AIR的打包技术来将Flash内容打包为原生的解决方案,这个方案几乎成功的实现了Flash进入移动市场的目标,因为全球当时已经有数十万个iOS的app是通过Adobe AIR打包而成。但是突然,又发现了巨大的问题,那就是AIR SDK打包原生,要依赖Apple官方提供的原生系统扩展API,比如支付,GameCenter,文件访问等等。而Adobe AIR的ANE(Adobe Native Extension)则是一个黑盒,那就变成苹果只要升级系统或调整API,ANE如果不及时更新,所有AIR打包的原生app都被卡住,需要等待Adobe升级更新ANE包才可以继续保证app的正常运转。这一个无法逾越的深坑让大量的用AIR打包原生app的Flash开发者大倒苦水,对ANE的海量吐槽直接飞向Adobe总部。如果Adobe ANE团队及时关注产品反馈并及时更新,这一个跟XCode打包几乎一致的GCC/LLVM打包方案完全可以茁壮成长下去,可惜,Adobe又一次做了一个碉堡了的决策,将ANE美国研发团队裁撤,将工作转到印度班加罗尔做维护,又是印度,你又懂了。终于,Flash又一次错过机会。
6.虽然黑莓当时内置了AIR,QNX的车载导航几乎都是Flash和AIR技术,但是市场太小了,一个倔强的浪头完全无法逆转整个形势了。
所以我们可以认定Flash即使在PC上有过三次辉煌,但是它并未真正的赢得过移动市场,用一首诗来形容它的移动之路就是“待到秋来九月八,我花开后百花杀。冲天香阵透长安,满城尽带黄金甲”。在移动设备如日中天的今天,Flash本有机会开启并引领富媒体Web在移动设备上的革命,但它并非赢家。
再来看第三个观点,HTML5已经重回轨道,未来取胜的关键则在移动领域。为什么这么讲。PC发展落后于移动已经是事实。今天,人手至少一台智能手机,移动流量超越了PC流量。技术为业务服务,业务由市场导向。HTML5狭义上是超文本链接标记语言第5版,单从名字上并无神奇之处,但广义而言,HTML5代表了新一代的HTML,CSS和Javascript技术的总和,它可以跨平台,这在屏幕尺寸和分辨率林林总总的移动设备上简直就是天生的优势(天生就是东宫太子),响应式设计,跨操作系统,而且随着硬件计算能力的飞速进化,浏览器内核或者VM对于脚本型技术的性能瓶颈也在被逐渐抹平,在不是特别关注性能的应用开发上这个缺点渐渐被忽略不计。网络资源加载的尴尬也随着移动网络的速度飙升和使用成本的大幅降低而不再成为关键性的制约因素。HTML5虽然经历了2012-2013年的重大技术低潮,一大波HTML5的技术先锋在这两年沉沙折戟,但是不妨碍它的跨平台,标准开放的技术本质,2014年后再次卷土重来。
任何人都需要通过移动设备连接世界,获取信息。这个基于Touch的市场机遇远大于使用键盘鼠标的PC领域,每天若干的创新都在这里出现,内容层出不穷,且这个领域的内容呈现需要高度的跨平台,跨设备的适配性,HTML5这种开放性的Web技术成为这些创新的主要技术方案顺理成章,因为HTML的发展史就是一部互联网的发展史。
PC浏览网络信息,仍然靠浏览器。但是移动设备浏览网络信息,app就是介质。微信,微博,手机助手,新闻客户端,所有Webview支持的app就可以很完美的采用HTML5技术。HTML5技术在移动设备上的用户场景原则上可以无限大,任何我们现在接触的app,都有使用HTML5进行制作开发的可能。突破浏览器对于HTML5的束缚是HTML5在移动设备上走向顶峰的必经之路。我经常跟人争论的一个话题就是,谁规定HTML5的标准化的执行和实现就一定要依赖于浏览器?用HTML5技术开发的内容,但是不用浏览器形态的方式去浏览,算不算是HTML5所涵盖的领域?
另外,PC某些垂直领域在几年内仍然无法摒弃插件体系,尤其是页游市场。国内目前的页游市场是几百亿人民币的规模,而这个领域使用Flash Stage3D技术已经根深蒂固,从游戏创作的技术工作流程和性能要求上,HTML5的能力目前还无法达到那个高度,光从Flash Stage3D可以在PC调用DirectX和OpenGL,而HTML5只能调用WebGL这点来看就被完爆。而且Adobe Flash播放器已经在PC领域渗透超过10亿台终端,这个市场占有率还不能短时间内被取代,在Flash与HTML5的更新交替年代,与其等待PC市场漫长的自然更迭,HTML5为何不能从没有Flash的移动市场强势介入,成为跨平台富媒体内容的开发首选?
最后一个观点是建立在第三个观点之上的,HTML5最广泛的被接纳与普及前,还要先解决以下几个关键问题。
1.HTML5的标准化的能力推进需要更多参与制定厂商的通力协作,不要把商业的博弈及目标凌驾在标准化的普及之上,公心要大于私心,通力协作,才可能尽快实现更多具有前瞻创新技术标准草案的落地。HTML5规范虽然在2014年底终于定稿,但是这其中经历了太多的曲折,推进的过程中充满了各大浏览器厂商借助标准扩大行业话语权的暗战,目前,仍然有大量的创新标准无法在日新月异的移动领域市场快速被定案与普及。太多事实,给各位列举几个。CSS3的标准落地异常复杂,甚至于出现在开发者创建和声明CSS3新属性时,针对不同浏览器,一个属性要设定针对浏览器的众多前缀才能保证浏览器对它的支持,这么蛋疼的编写设定虽然是过渡方案,但是不得不说标准化落地过程中产生的各种额外代价都无形的转嫁给了开发者。另一个例子是关于WebGL,来源于http://webglstats.com的数据统计,移动设备对于WebGL的支持率已经上升到有史以来的最高,超过8成支持WebGL内容的访问,这无疑是可喜的状况。但是从另一方面的比较则看出WebGL的进化仍面临巨大挑战。首先是,WebGL1.0从2011年起到现在已经近4年多几乎没有过任何能力上的进化,这几年全部都是标准规范草案定义能力的推进普及,变革速度相比起微软的DX12和Kronos组织全新一代的Vulkan技术的进化速度相比,简直惨不忍睹。当未来PC和主机游戏,甚至手机原生游戏都更多的可以从下一代的DX和Vulkan技术中全面获益,获得飞一样的提升时,我们HTML5的开发者们仍旧在为越来越多的设备终于支持WebGL而沉浸其中。好比有钱人又买别墅了,我还在为今年终于工资涨了几百而欢欣雀跃一样讽刺。如果HTML5技术想大成,不仅标准化的普及要快,功能性的创新也同样要快。
2.HTML5相关开源项目(包括DOM,Javascript/TypeScript,CSS)在github上无疑是总数世界第一。但是另外一方面,HTML5仍然需要更为强大,更有工作效率的工作流。我们需要在HTML5领域内有能跟其他领域一样世界级的工作流方案,强大的引擎,高度可视化的创意工具,云与端的计算完美结合,这些都能更有效的保证我们的工作成果和工作过程越来越专业。各行各业最顶级的创意开发工具,目前来看,没有一个是专门为HTML5技术而生的。例如Visual Studio虽然也可以支持HTML5和JS开发,但是相比C++,C#在VS中的集成工作流,待遇显然就是一个不招待见的“干儿子”。我们Web前端开发已经习惯用各种script editor,配合浏览器的developer tools,再配以各种node上的testing,build和publish工具,最后再通过Phonegap或者Cordova类似的打包来完成工作,这就是我们HTML5开发者的工作流,且我们认为已经很好了。但是这是我们被习惯被教育后采用的工作方式,是因为业界本就没有针对HTML5更高效专业的工作流。我天天弯着腰犁田,换个牛车替我就感觉很满足了,殊不知世界上有插秧机这种更高效的工具一样。正在使用的不代表就是最好的,因为更好的我们没见过。HTML5技术领域的创新绝对不能忽略更高度更自动化的工作流,这是一个高度繁荣市场的终极需求,不是某个通过terminal和command就能搞定一台机器的极客需求。
虽然HTML5看似已经成了移动市场上实现网络富媒体交互技术的好选择,但是HTML5的技术未来并不是想象中的那么乐观,前路依然任重而道远。
如图 在一段时间内会是共存的关系。