笔者特别不喜欢挖坟,但是有3个原因看到这个问题不得不答:
1. 笔者曾经从事了15年的Flash和HTML相关工作,我经历过。这是鄙人的亲身经历,1999年开始接触Flash技术,2000年向Macromedia提交了Flash AS1的Math相关算法而成为beta tester,2003年是Macromedia Flash的dev volunteer, 2004年成为Macromedia在中国的第一个技术员工,2005年,Adobe并购Macromedia结束,进入Adobe做工程师,2008成为Flash Video与Flash Media Server的大客户技术经理,2009年成为Flash Platform Evangelist,2014年离开Adobe前,除了Flash,也参与了Adobe HTML5系列技术工具的相关工作。
2. 笔者现在是一家做HTML5技术公司白鹭引擎的技术合伙人,管理这家公司的研发团队,每天的工作都跟HTML5的Web技术相关。
3. 这个时间点回答这个问题貌似最好,因为一切答案正在浮出水面。
好了,回到答题本身。
笔者本人对于Flash和HTML5两个技术领域的观点判断大致如下:
Flash已经走入软件生命周期的末期,但它仍颇具价值。
Flash不论当初多么辉煌,在它的生命周期里从未真正赢得移动领域。
HTML5已经重回轨道,未来取胜的关键则在移动领域。
虽然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由盛转衰的几个重要事件。它们分别是:
苹果iOS不支持Flash Player.
MACOSX系统不提供面向Flash Player的视频硬件解码能力调用。
Adobe Flash Player所建立的Open Screen Project(OSP)计划的推进不佳被终止。
Adobe宣布裁撤Flex团队,终止Flash Builder开发计划,并将Flex项目捐给Apache,这间接促成了Google AngularJS的大获成功,因为AngularJS的作者就是Flex的核心科学家。
Adobe不再开发Android系统的Flash Player后续版本。
Adobe宣布终止开发了80%的ActionScript4.0和AVM3.0项目。
Adobe终止了Stage3D的后续开发工作。
Adobe终止AIR SDK的ANE(Adobe Native Extension)和内置Webkit的开发维护。
Adobe裁撤整个中国研发中心,其中有很多工程师原属于Flash团队,其中包括Flash Player,Stage3D,CrossBridge(原Alchemy),骨骼动画以及Platform Evangelism。(很有趣,其中一部分工程师后来加入了Egret团队)
FireFox曾默认关闭Flash内容显示。(修正:Firefox是因为Flash的一个0-day漏洞默认关闭了Flash内容,在修复后,又重新开启。(
Google Chrome停用NPAPI的支持,并关闭PPAPI Flash Player的硬件加速。
Google Chrome将Flash内容默认关闭。(修正:Google Chrome宣布将智能化选择性的关闭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的真实原因是什么?”
任何人都需要通过移动设备连接世界,获取信息。这个基于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的技术未来并不是想象中的那么乐观,前路依然任重而道远。
·END·