前一阵子使用了豌豆夹手机精灵,猛然间发现其安装文件中有webkit的dll。经过查证豌豆夹的确是使用HTML5做的界面,其他语言实现的底层功能。发现这个问题我一下子觉得很兴奋,因为我一直看好这种编程模型。

大二的时候用过一点点MFC,觉得非常难用。传统的编程语言,本质上都不是为开发界面而设计的。这些语言,一般都有一些辅助的模板技术来组织界面。如果没有IDE,无论是Nokia主打的QT、Java还是微软的C#,直接使用手写界面感觉都像是在hack,开发难度很高。但是HTML不同,这是一门天生就为生成界面而发明的语言。HTML足够简单易懂,很多初学计算机的人都都先学习HTML。得益于浏览器强大的解释能力,经过良好设计的Web界面对于缩放和不同分辨率的适应要比传统语言要容易的多。这一点是毋庸置疑的。 如果能够使用HTML开发界面,实用其他语言开发底层功能,也许能够提高开发的效率,并提高程序质量。

 

目前使用HTML作应用程序界面最著名的例子就是鼎鼎大名的Firefox。运行于Mozilla的XULRunner之上,使用特殊的XML和CSS描述界面,用Javascript作为胶合层和底层的引擎通信,整个Firefox的都是由Gecko渲染的。

使用HTML5+CSS作为应用程序界面的好处多之又多:1、Web是趋势,这样编写的程序可以方便向Web移植。2、简化界面的编写,软件换肤等成了异常简单的技术(还记得我们公司用C#编写程序,而且使用DevExpress (.net + DevExpress应该是传统语言中制作绚丽界面最高效的方式了吧),结果还是bug一堆,客户要求很多微调,都花费了非常多功夫。最悲剧的是最后还是没有满足客户的要求。)。3、跨平台Web跨平台是天然的。

不过这样也有缺点。缺点就是速度,界面的流畅程度可能不及远程应用程序。最典型的例子,Firefox和Chrome,启动速度和操作的反应速度都是天壤之别,可能也和Gecko引擎的速度也有关。(不过,从google推出Win32版Chrome之后推出Linux版本所化的时间,也可以看出使用各平台的原生API开发应用程序还是相当花工夫的)。

豌豆夹使用Webkit作为渲染界面的引擎,使用HTML5+CSS3作为界面是一个非常诱人的技术(不过不知道豌豆夹界面上HTML5界面的占了多少比例)。像豌豆夹这样的例子,还有Android上的QQ软件。早先Android的Market上有两个QQ程序,较早出现的一个就是将 miniQQ的HTML+CSS+Javascript保存在本地,然后用Android的API包了一个壳,就成了一个原生的QQ程序。虽然这个版本的 QQ因为用户体验和流量使用的原因输给了原生的QQ程序,但是腾讯在这种编程方式上的一个尝试也给我们指出了一个方向。向我们这种单打独斗的小开发者或者实力比较薄弱的小技术公司,如果不能对新技术有敏锐的眼光从而提前下手,在将来的竞争中将处于劣势。