移动Web应用开发的现状与未来
Web前端的起源
Web应用诞生:随着GMail、Google Map等优秀Web应用出现,Ajax在2004年之后一度成为热门话题。经过几年的发展,一批以Prototype、Dojo、Ext为首的Ajax+UI的浏览器兼容框架不断出现。UI和Web中间新增了一层以Javascript为核心,专门处理数据传输、Web交互等内容的开发层,Web前端。Web前端伴随Web应用而诞生,并逐步走来。
Web宿主之争:随着RESTful Web Service潮流的发展,后台服务也迅速实现了数据云端化,接口API化。但受IE垄断和发展缓慢的影响,Web前端始终走不出浏览器能力不足和兼容性问题突出的困局。开发维护浏览器插件、Flash控件等更是无奈的选择。Web前端往往因为需要兼容IE6、IE7、FF、有无插件、有无Flash等情况付出巨大开发代价。2006年,John Resig的jQuery框架从某个意义上解决了这个问题。我认为最大的突破在于让老旧浏览器适配新的Web标准,满足了开发者开发高效而兼容老旧浏览器的需要。
Web标准化之路:Google在2008年推出了Webkit核心的浏览器Chrome(后来也发布了ChromeOS)。随着FireFox,Chrome,Safari,Opera等浏览器开始对HTML5和CSS3的深入支持以及性能的不断优化,IE市场占有率的持续下滑。Web标准化终于等到了一个发展机遇。2010年,HTML5和CSS3被Webkit核心的Chrome、Safari绚丽地实现后,IE9也表示全面支持HTML5后。Web标准进入一个高速发展阶段。随后,浏览器GPU加速也浏览器厂商们所接受。在Web标准化、离线化、硬件化的浪潮中,Web应用逐渐具备了替代桌面应用条件和能力。Web前端开发也在逐步取代桌面应用客户端开发。
移动Web应用背景
非智能机时代:Java和WAP是取代短信SP后的第一种移动互联网实现方式。这个年代虽然荒蛮,但很纯真。
前智能机时代:HP把一台WinPPC的PAD增加电话功能,做成第一台智能手机时。Windows Mobile和S60是这个时代的主角。基于手机系统的客户端应用就是移动互联网应用的最好形式。但是随着系统版本的不断升级,设备的差异不断增大。手机客户端应用开发同样面临着与Web前端开发一样的兼容性开发效率和维护成本问题。
后智能机时代:随着iPhone和Android(HTC、摩托罗拉、三星等)手机等的热卖,两个电子市场生态链逐步形成。再加上最近诺基亚和微软和合作,电子市场生态链之争拉开帷幕。客户端应用成为了电子市场生态链的主角。不过随着三方系统的竞争升级,也伴随浏览器的不断优化。先不论WP7,iPhone和Android阵营的浏览器都是webkit核心的,差异只在于硬件加速能力和设备资源的差异。这恰好也是移动Web应用的发展机遇。
移动Web应用开发
需求:
互联网是个产品线丰富的产业,但不可能对所有产品都投入巨大开发成本。WAP能满足基本使用需求,而客户端应用满足主线产品的高端需求。还有一大片中高端需求无法很好满足。遗憾的是,限于开发成本,用户没有与其高端设备相匹配的非主线产品客户端可用。
开发成本无法避免,但可以择优。我们可以通过移动Web应用的方式来次优替代非主线产品客户端。这也是廉价的移动应用实现方式。
现状:
目前iOS和Android系统的浏览器都是webkit核心的,我们可以开发移动Web应用来满足这块需求。iOS支持硬件加速,Android系统也能满足基本Webkit的API功能,适宜通过区分iOS来提供差异化服务。iOS的Mobile Safari有足够能力提供webkitTransForm(图形变换,3D变换支持硬件加速)、webkitTransition(CSS3动画)、SQLite、LocalStorage(离线存储)、 WebSocket(iOS 4.2+)服务。至于Android,因为需要兼容参差的低端设备,还是不建议使用复杂图形变换和CSS3动画,其它能力可以通过判断能否支持来选择使用。另外多点触摸、重力感应、地理位置还是根据能否支持和需要来使用,主要用于优化用户体验,不影响基本交互方式。
未来:
移动Web应用的起点比PC Web应用的高,但适用范围较窄。但移动Web应用将成为Web应用的一种延伸,从开发角度来看,应该是殊途同归的。
小结