今天看到一个消息Facebook放弃的用HTML5开发客户端应用的方案,转用ios6的API开发苹果的客户端。链接在这
一个公司选择放弃了一个技术方案,这种事情天天都在发生,没什么好奇怪的。但是这件事恰恰发生在Facebook和HTML5两者身上,就变的比较有看头了,因为一个是当前比较热门的技术标准,一个是走在技术前沿的热门大公司。
作为一个浏览器开发者,一直在关注HTML5,也在我们的浏览器上做过HTML5标准的支持开发工作。想谈一谈对HTML5的一点看法。
1、HTML5吸引力
有人说,勤快人当不了好程序员,一个好的程序员总是想尽办法写出高效的、通用的、易维护的程序。同一套业务逻辑,用C++写一遍,再用java写一遍,再用Object C写一遍,这对怕麻烦程序员来说是不可接受的,即便有方便的工具转,程序员们也更愿意把时间省下来干点他们认为有意义的事。统一的平台,统一的语言,统一的字符集…这些好比国家统一,在大牛、大公司们的利益和价值观面前,只是吊丝程序员的一厢情愿罢了。java,C#这些号称跨平台的玩意儿逐渐也都变成了平台之一。HTML5的出现给这个事带来了希望,因为它是一个标准,是标准大家就都应该遵守。不管你的服务器是Apache还是IIS,不管你的浏览器是IE还是Chrome都要通过HTTP协议通信。而且多年以来,HTML标准还是维护的比较单纯。在本来就统一的标准上做扩展,就成了建立统一平台的可行方案。这样程序员们只要开发一套代码,就可以在不同硬件、不同系统、不同浏览器上运行。
另外,作为Web的开发标准还有一条天然的优势,那就是部署在服务端,这样非常方便维护,升级迭代的效率会非常高。如果开发过客户端软件的升级模块,就能体会到这一点有多美好!
有了以上两点,HTML5就成了技术界的美人胚子,尽管还没发育完整,但是含苞未放的小萝莉以让我等技术宅男们垂涎三尺。原来的HTML之所以被限定在开发传统网站上,是因为脚本能力被死死的限定住了,只能控制很少的东西。就像非要把身材热火的女郎捆在十分保守的棉袄棉裤里。好了,现在HTML5的核心思想就是要解放脚本的能力,撕碎女郎上的破棉袄,让她穿上比基尼。让她可以控制本地存储,控制图形绘制,控制媒体播放,控制摄像头…最好是能把Native代码干的事全干了(当然这是不可能的)。还有现在牛逼哄哄的硬件配上牛逼哄哄的JS引擎,效率问题似乎也不需要像原来那样关注了。
我们可以畅想一下以后的程序员,大多数人只会JS脚本就可以了,留下少数精于底层的“老顽固”维护基础设施。大量的精力被从平台相关的工作中解放出来,只去关注业务、算法、创新。这一切多么美好!
2、目前HTML5的局限性
这次Facebook做出这个“艰难的决定”我想是经过深思熟虑的,起初对HTML5投入的热情也不得不暂时收回。
1> 信任
Web应用于本地软件有一个最本质的区别,那就是信任程度。通过网络下载到的脚本,保守的来看是不应该被信任的。因为他不同于软件,用户在安装软件的时候就相当于给了这份软件授权,让他可以在自己的操作系统上做事,我们可以认为这个过程是比较慎重的,即便它是在做坏事。而Web服务不同,用户只需要轻轻一点,甚至不用点就可以跳转到一个网页。这种加载运行脚本的频率要远远高于用户安装本地软件的频率。所以,无论浏览器如何明显地提醒用户注意安全,都会“习以为常”得忽略掉。这样,开放更大的权限给配置在服务端的脚本就变成了双刃剑。当然,那些制定标准的大牛们很注重安全性,在读那些标准文档的时候,你就会深切感受到这一点。例如,为了防止缓冲区溢出导致的不安全,在WebGL的白皮书中重点说明了对定点缓冲区的索引要进行检查,虽然这样做会影响渲染效率。在Geolocation的标准中,多次强调标准的实现者(浏览器),在为脚本提供用户的地理位置前,一定要明显的提示用户让用户授权。在FileSystem中,要求做到不同Origin的文件系统要隔离,要将虚拟化,等等等等。
这一切的防御措施都源自一点,那就是Web脚本的不被信任性。惹火女郎的性感被解放出来,但是也要保证护住关键位置,一不小心露点了那就变成了有伤风化。
2> 统一
HTML5的标准是由权威的W3C和WHATWG共同维护的,但是实际上的编辑都是Mozilla、Apple、Google、Microsoft这些大公司的牛人,大家的终极目标是一致的,但是具体实施起来恐怕就不是那么回事了。中国有句古话叫文人相轻,其实,不光是文人,码农也是一样的。只要人混到了一定的层次,自信建立起来之后,多多少少都会排斥别人的想法。无论外表表现的多么谦逊,内心都会有一种高傲的东西在撩拨那帮牛人的理智。再加上为不同公司的商业利益考虑,标准的制定者不可能铁板一块。而且这已经得到了印证WHATWG已经宣布与W3C分家,各自维护自己的标准。而且从各大浏览器生产商公开的讨论和邮件来看,争论一直没有停止过,连共同维护Webkit内核的Apple和Google也在不停的扯皮。还有由于标准的制定战线拉的太长,从2004年提出这个想法以来,已经8年的时间了。有很多前瞻性的尝试也被那些喜欢尝鲜的程序员被广泛应用。例如Webkit中带Webkit前缀的API已经被用滥了,当Webkit想去掉的时候发现已经无能为力了,一旦去掉新版的Webkit将有很多网站和应用出现异常,尤其是移动平台。可以看到统一大业真的不那么容易,除了要征服敌人,最重要的还要克服自己。
总结总是要积极向上的:
不管怎么样,HTML5还是一项很伟大的事业,它代表了码农界最先进生产力的发展要求,代表了码农先进文化的前进方向,代表了最广大码农的根本利益。历史的车轮是不会停滞不前的,Facebook这事只是革命浪潮的一朵小浪花。