Web App框架发展趋势及现状分析
文 / 刘铁锋
摩尔定律作为指引PC发展最重要的定律,同样也在移动设备的发展上起着重要的作用。国内某款按照互联网思路开发手机的大佬曾宣称:手机CPU的发展速度可能会超过PC的发展速度。按照这个思路可以预见,手机的处理能力将会达到甚至超过PC的处理能力。与此同时,手机浏览器的处理能力将会和PC浏览器能力不相上下。
在硬件飞速发展的同时,操作系统和软件的更新也在快速演进。继iOS超强的硬件加速能力之后,在Android 4.0中,为系统默认引入硬件加速功能成为了最大卖点。这将会为Android系统带来更加流畅的界面体验,同时也会为浏览器带来更好的Canvas绘制性能以及CSS Animation的效果。不仅如此,在2012年2月,Chrome for Android的发布也进一步推动了手机浏览器的发展。Chrome for Android直接移植了桌面版Chrome 16.0的代码,同样延续了Chrome在启动速度、渲染速度、网页加载速度以及基于V8引擎的JavaScript执行速度这些可以秒杀同行的能力。
快速发展的硬件加上来自浏览器的革新,这些都成为推动Web App在移动设备上发展的利好消息。尽管如此,硬件和Chrome在移动设备上的发展仅是基础平台的发展。正如在PC+Windows时代一样有着各种功能强劲的框架一样,Web App的发展需要各种基础的开发平台、框架以及库的普及和推广。本文将集中探讨目前支持Web App的各种框架以及平台的发展状况和不足。
Web App所依赖的框架以及库
在Web App的发展中一直有两种观点:
Web App就应该延续Web一贯简单、灵活的风格,延续Web的开发模式和理念,哪怕在移动设备上也是如此。
Web App应该冲击和模拟Native App的行为,用Web的技术来开发出类比Native App的程序。
尽管这个问题已被讨论过很多遍, 并且大众认为它们各有长处,会占据各自擅长的开发领域很长一段时间。但我认为,Web相关的技术一直在侵蚀Native App的领地。尤其是在JavaScript的语言进化以及开发能力越来越强的今天,基于AJAX的应用越来越丰富,使得前端的开发能力越来越强,承载的功能也越来越多。因此,在Web App的发展过程中,各种类比Native App的框架和库会越来越多,这也使得Web App所能够具有的开发能力越来越倾向于Native App。
那么,在移动领域Web App的发展过程中,将会需要和出现怎样的框架和技术支持呢?
基础的调试工具。对于任何开发平台来说,这是最为基础的开发工具和需求。目前在PC浏览器中,Chrome、IE、Firefox都提供了强大的从资源文件浏览、CSS应用规则监控、网络请求监控以及JavaScript断点执行的调试工具。
UI层的组件/框架。对任何一种Native App的开发语言来说,这些都是基础的用来搭建大规模上层应用的原材料库,在这个基础之上才会演化出各种各样的编程模式。从VC++对应的MFC,到Delphi对应的VCL,到Java对应的AWT/Swing莫不如此。尽管因为Web的特殊性,基于HTML的页面元素标签构建异常简单,但对于复杂的混合交互控件,仍然需要UI的组件/框架的支持以作出绚丽的效果。
数据以及业务逻辑的组件/框架。从缓存到配置文件、数据处理、网络请求等各部分的组件/框架,会成为开发各种信息系统、具体业务相关企业信息化系统的主要需求。这些会成为简化企业信息化开发,各种行业应用最为直接和有效的有利工具。正如.NET中的ADO.NET以及Enterprise Library。
跨平台以及与移动设备硬件能力相关的框架。如果不涉及到具体移动设备的固有能力(比如打电话、发短信、调用联系人信息等涉及本地数据相关的能力),Web App天然就是跨平台的。然而,如果需要和移动的平台能力结合在一起,那么,就需要有相关的跨平台框架利用统一的数据接口,来帮助Web App获得Native App的能力。同时,伴随着浏览器能力进一步成熟,Web App会越来越不依赖于第三方的跨平台框架。例如现在可以看到的获得地理位置信息,以及通过Web GL直接访问GPU来获得3D的能力等。
当这些能力和框架开始完善时,Web App就会得到越来越多开发者的支持,基于这些技术和框架开发的Web App的功能也会越来越强大。
现有移动框架上的发展状况
框架的成熟会进一步催生应用的实现和普及。根据前面对框架能力的分析以及评估,我们可以一一对号入座,然后静观业界的发展。
基础的调试工具。在之前的移动设备上浏览器的功能比较单一,仅能实现基本的浏览功能。在2012年2月发布的Chrome for Android中,已经可以看到,这一块工具已经被Google率先补了起来。Chrome for Android提供了通过USB连接PC,可以利用Web来调试手机上页面。这对所有开发Mobile Web页面以及Web App的开发者来说都会是一个利好消息。
UI的组件以及框架。jQuery可以认为是最强的JavaScript Library之一。注意,是Library而不是Framework。他本质上是简化和JavaScript的开发工作,通过大量构建好的Library可以快速帮助开发者实现各种各样操作DOM以及CSS的效果。在移动设备商,由AppMobi推出的JQ.Mobi号称是重写了jQuery在移动设备上的实现,仅有3KB的大小完胜jQuery 35KB的体量。并且根据JSPerf Test的数据,它在Android上比jQuery快3倍,在iOS上要快2.2倍。这对所有做移动Web App开发的人来说是非常好的消息,速度和体验是一个非常关键的问题。可以预见的是jQuery和AppMobi会在这个领域角力,然后快速推动这一个领域的发展。
Sencha Web同样也是最知名的UI Library和Framework提供商。Sencha主打的Ext JS 4可以让开发者通过MVC的模式来开发Web App。Sencha Touch则定位于Mobile上的HTML 5 Web App开发框架。除此之外Sencha Touch Charts则解决了大量图片控件的问题。在这个领域,Sencha一直是先行者,可以认为是从0到1的转变。尽管有开发框架过重的问题,但只要性能跟得上,相信Sencha会成为开发者首选的框架之一。在MVC框架这个战场上,还有Yahoo! Cocktails、Sproutcore、Backbone JS这样的竞争对手。除此之外,还有Zepto、Ripple、LungoJS、Joshfire、Jo这些定位在移动HTML 5的框架。
在这个领域会是推动Web App发展最前卫也是最火热的领域,有理由相信各种开源的思路和组织,甚至是Google、Facebook、Microsoft、Adobe这样的大公司直接介入,会越来越快地推动这个领域的发展,并且会成为Web App发展的最重要的推动力量和基石。把握和跟踪好这些框架的变迁和大公司的最新动向,就会非常紧密地了解Web App的能力以及发展状态。
数据和业务逻辑框架。这部分最重要的在于和其具体领域直接相关,只有大型的平台公司才具备实力和技术推广能力将其脱离具体领域。因此,我预测会现有针对具体行业的一站式解决方案率先出现,比如电商或者垂直门户,然后再伴随Web App的兴起,逐渐往通用化发展。但最终可能还是会被IBM、Microsoft这些传统的专长于企业方案和开发框架的公司所占有。
跨平台的解决方案。在我看来,跨平台的解决方案实际上是各家企业试图进入到移动端最为关心的方案。任何企业进入移动领域都会面临移动设备分裂以及很难找到合适的多平台移动开发者的问题,也会陷入是选用完全本地的实现方案,还是采用Web App的两难境地。如果选用本地方案,人力成本会很高;而选用Web App的方案,则在调用本地能力上还不成熟,还未看到成功案例。在跨平台解决方案领域,主要是PhoneGap以及Titanium在这耕耘。以PhoneGap为首的公司跨平台服务提供商,本质上是希望能够达到非常完备的平台覆盖(目前PhoneGap覆盖到iOS、Android、Windows Phone、 BlackBerry、webOS、Symbian等平台),来让用户更加顺手地实现调用本地硬件的能力。由于PhoneGap已被Adobe收购,甚至成为Adobe下注移动互联网的重要一环,因此,PhoneGap可能会有更快的发展速度,从而拖垮竞争对手。除此之外,也会有非常多的采用类似于PhoneGap的衍生框架出现,它们或多或少会在某个专业领域有自己的优势,然后试图利用跨平台这个卖点,包装为半成品或产品来为企业用户提供服务。目前国内已经出现这样的公司在开拓市场。
总结
根据如上分析,相信读者对Web App在未来技术领域可能会出现的框架和技术会有了一定了解,也能找到合适的切入点来了解以及评估目前已有的技术,为自己的技术领域作出合适的选择。
我感觉Web App的普及和推广速度比想象中要快。我曾和朋友探讨过两个问题,在这里,以我对这两个问题的回答作为结尾。
Web App的发展和普及差什么?本文已对技术能力的差距做出了回答。那么,在这些技术能力中,哪一个方面会成为影响Web App发展的最至关重要的点?我认为,最重要的就是UI框架的发展。因为有了这一块的发展,能够低成本地快速构建出性能好、交互能力强的Web应用,以这些早起的开发者用强大的Show Case来带动和推动Web App的进一步发展。
如果Web App的这些框架都具备了,跨平台的方案如何选择?我认为,从开发成本上来说,毫无疑问Web App的成本低。业界期待的就是类似于当时.NET和J2EE技术比拼的PetShop的Show Case、样板产品以及成功案例。而对于PhoneGap这样的框架来说,从更长远的角度来看,这些都只是中间状态。未来HTML5的标准和浏览器的发展,会慢慢吞噬PhoneGap这类跨平台解决方案的市场。总之,这本质上会是Google、Microsoft、Apple等公司联手挤压Adobe的战争。
比尔·盖茨曾说:“人们总在短时间内高估技术对社会的影响,而在长时间中又低估重大技术对社会的影响。”Web App的框架可能就是这样一种快速发展的重大技术,就让时间来证明吧。
作者刘铁锋,百纳信息技术有限公司CTO,W3C标准化组织成员。
本文选自《程序员》杂志2012年03期,未经允许不得转载。如需转载请联系 [email protected]