这个问题的答案是不知道,至少我希望答案是否定的。
HTML5是目前的大热门,甚至已经有好几年了,刚出来的时候,一片赞扬,并且有不少声音,嘲讽Adobe,嘲讽Flash,我的朋友劝我说,不要学习Flash了,垃圾,必将灭亡,以后是HTML5的天下了,但是因为对我的用户有一份亏欠,我总觉得,我有必要学会这份“行将就木”的技术。
现在我来这里写这个技术八卦的时候,就是我学习了入门课的Falsh CS5的间歇。我不知道我能坚持多久学习这个技术,但是我至少希望答案是一直坚持到我能满足对我的用户的承诺。
HTML5到底发明了点什么东西,我根本不知道,以至于大家吹嘘了这么些年,我仍然不知道,其核心到底是什么。不像Java被发明出来,C#被发明出来时候,非常的明显,但是HTML5被发明出来,与之伴随的,除了一些概念,一些支离破碎的浏览器特性以外,我真的没摸清楚,到底有点什么。而且CSS3,和Google的V8引擎总是被拿来跟HTML5放在一起,好像就显得声势浩大了。
其实,这也就是我不怎么看好HTML5,同时也不认为Flash会死的原因。这两个东西,根本没法放在一起比较。
在我看来,HTML5是一种理念,一份标准,其最终推广和应用,首要的就是浏览器厂商的支持,然后就是开发者的支持,现在最为广泛的声音,都是看好HTML5的,我想,开发者的支持,它显然已经得到了,浏览器的厂商支持呢,很多主流浏览器都在支持了,我想这也似乎完备了,那么为什么我还是觉得它不靠谱呢,总是似乎少了点什么。
学完了Flash CS5的第一课,我就醒悟了。HTML5缺乏的是一个“Adobe”。不管Adobe做了多么龌龊的事情,也不能否认它是一个伟大的公司。就好像微软一样,我对微软的评价也是,它是一个伟大的公司。Adobe从Micromedia公司手中收购了三剑客后,不遗余力地将三者发扬光大,让光辉和耀眼,惠及整个互联网,能有这么伟大业绩的公司,在计算机出现的历史上,也是屈指可数的。
Flash是一种真正的技术,完备,成体系,系统,有与之配套的一切,95%以上覆盖的虚拟机平台,完备的教程体系,培训体系,强大无比的工具链,最最可贵是后面一群高智商的程序员,整天都在想办法完善它,加强它,改进它。我不知道相比之下,HTML5到底有点什么?一个松散的标准化组织?各怀鬼胎的浏览器厂商?一些希望驾着新技术之风腾飞的程序员?他们能搞好事情?至少我是不看好的。
我绝不否认HTML5的希望,有不少牛逼的程序员使用它做出来骇人听闻的Demo和让人目眩神驰的效果,但是那又怎么样?很多顶尖黑客使用Common Lisp,但是那又怎么样?对吧?牛逼的是黑客,那么Common Lisp呢?所以,一个技术如果要能够惠及最广大的人群和得到大力发展,一定有个要素是,必须有足够多的人,足够简单地运用这个技术,而不是成为一些牛人的玩具。
所以,我们看看Flash为什么暂时还死不了。
Flash这个词,内涵已经太多了。首先,一种画图工具,本身就叫Flash,它产生的文件,虽然是SWF扩展名,但是被人们称为Flash,然后就是大家没人提及的,ActionScript,编程语言,然后浏览器插件,也即虚拟机,大家也又爱又恨地称为Flash。
我看到,Flash里还有另一种东西,就是理念。它是一种领域驱动的语言,解决的是Web领域的动画制作,和动画交互问题。里面构建了一整套抽象方法和抽象逻辑。比如如何抽象对象,如何控制对象运动,如何完成与用户的交互。如何整合多媒体,如何处理矢量,其体系是如此完整而且超前,到了今天,也没有什么问题,是Flash解决不了而其他技术能解决的。
相比之下HTML5,难道想仅凭一个canvas就让Flash下岗?这太荒谬了。浏览器,就好像是CPU,HTML5就好像是汇编,现在CPU更牛了,执行速度更快了,但是靠着汇编你想让大家怎么玩?所以HTML5,需要领域解决方案,比如游戏领域怎么解决,移动端怎么解决,Web动画怎么解决,交互怎么解决,最后IDE怎么解决,培训教程怎么解决,这些问题都解决好之前,一个裸体CPU+汇编语言,不可能构造伟大系统。
Flash为什么会有这些,因为Flash有Adobe,所以HTML5缺少的是一个“Adobe”。