移动互联网应用跨平台开发研究
随着移动互联网产业持续快速的发展,以及智能手机、平板、智能电视等智能终端设备的普及,移动互联网应用获得了爆炸式增长。面对未来的广阔市场,运营商、互联网、设备生产商等产业巨头纷纷构建了移动互联网生态链,其中苹果App Store成功创造了移动互联网应用商业模式,激发出了广大开发者进行移动互联网应用创作的极大热情。
移动互联网应用形态主要分为原生应用和移动Web应用两大类。这两种形态的移动互联网应用,我们暂且可以理解为PC平台上的C/S架构应用和B/S架构应用,它们有着各自的优缺点。
目前,运行在移动终端上的应用大多都是原生应用,它通过终端操作系统支持的程序语言(如苹果iOS系统支持使用Objective-C语言,谷歌Android系统支持使用Java语言,微软Windows Phone系统支持使用C#语言)编写,软件直接运行在操作系统之上。
原生应用可以完全利用终端操作系统的API和平台特性,具有开发能力强、交互性好、效率高等优点。由于原生应用通常需要依靠厂商提供的特定开发语言和开发工具进行软件开发,因而一款移动互联网应用若要覆盖多种移动终端平台,开发者需要花费大量的时间和精力进行跨平台的开发移植工作,导致应用开发周期长、开发门槛高等问题。
移动Web应用,简单理解就是针对移动终端优化过的Web网站,采用网页语言(HTML、JavaScript、CSS)开发,运行于终端浏览器之上,具有开发简单、跨平台适配等优点。缺点是应用基于浏览器,无法调用系统API(如手机的重力感器、摄像头等API)来实现一些高级功能,也不适合高性能要求的场合。
为了满足开发者进行跨平台移动互联网应用开发的需要,尽量减少针对不同的终端平台进行的二次开发和适配工作,出现了两类主要的跨平台开发技术:基于HTML5的移动Web应用开发与混合应用(Hybird App)开发。
2.1 基于HTML5的移动Web应用开发
基于HTML5的移动Web应用开发,继承了前述移动Web应用的开发简单、跨平台适配的优点,并通过HTML5支持的Geolocation、Vibration、Battery Status等跨平台API,实现对终端硬件的调用,从而可以实现部分原来只能通过原生应用才能实现的复杂功能。
移动Web应用部署于Web服务器,移动终端通过浏览器访问应用时,服务器以HTML5、CSS3和JavaScript形式的数据响应浏览器的请求。应用的UI展现及其动态切换效果,是通过Webkit内核对HTML5、CSS3和JavaScript的解析实现的,应用对终端硬件的跨平台调用是通过浏览器提供的JavaScript扩展API实现的。
移动互联网应用开发通常需要充分调用终端的硬件能力,但由于HTML5标准还未完成制定,因而各种移动终端浏览器对HTML5支持程度还有很大差别,无法保证良好的跨平台硬件能力调用。
鉴于上述原因,为了充分发挥Web应用开发的跨平台特性和原生应用开发自由调用系统API的特性,出现了结合两者优点的混合应用开发技术。
2.2 混合应用开发
混合应用开发弥补了原生应用开发和移动Web应用开发模式各自的缺陷,继承了双方各自的优势。首先,它让开发者通过一次性的Web应用代码编写,即可编译成多种类型终端平台上的应用程序,大大提高了多平台开发的效率。其次,它可让为数众多的Web开发人员以几乎零成本转型为移动应用开发者。另外,相对于移动Web应用,混合应用开发者可以自行进行系统API封装,调用任何期望的系统能力,这可以在很大程度上克服目前HTML5跨平台API匮乏的缺陷。
混合应用开发与基于HTML5的移动Web应用开发的区别主要在于,应用对终端硬件的跨平台调用是通过JavaScript调用自行封装或者由第三方插件封装的系统API实现的。另外,混合应用程序,包括HTML、CSS、JavaScript和系统API封装等都是部署于终端侧的,应用的UI展现及其动态切换效果,同样是通过Webkit内核的解析实现,构建出类似Web应用的移动应用UI。而Web服务器主要部署Web Service接口,终端程序通过Ajax与其进行数据交互。
随着智能终端的迅速普及推广,进行高效率、低成本的跨平台移动互联网应用开发的需要日益迫切,因而出现了众多跨平台框架。这些框架主要分为两类:移动Web开发框架和跨平台开发框架。通过这两类开发框架的组合运用,可以实现更加快捷高效的跨平台混合应用开发。
3.1 移动Web开发框架
移动Web开发框架主要用于构建运行于移动终端Web浏览器中的跨平台界面(HTML、JavaScript、CSS)。移动Web开发框架众多,包括jQuery Mobile、Sencha Touch、iWebKit、Safire、WebApp.Net、Dojo Toolkit等,常用的移动Web开发框架包括jQuery Mobile和Sencha Touch,两者均支持HTML5。
jQuery Mobile建立在jQuery和jQuery UI框架之上,为移动设备上的移动互联网应用开发提供jQuery核心库和jQuery移动UI框架。它继承了jQuery支持多浏览器的特性,支持iOS、Android、BlackBerry、Palm WebOS、Symbian、Windows Phone、bada、MeeGo等主流移动平台。Sencha Touch由基于JavaScript编写的Ajax框架ExtJS,整合JQTouch、Rapha?l库而来。它继承了ExtJS的优点,提供针对触摸屏的丰富的UI布局解决方案,支持复杂交互,目前支持iOS、Android、BlackBerry、Windows Phone平台。
与Sencha Touch相对比,jQuery Mobile属于轻量级框架,支持的UI复杂度较低,但它开发门槛低,支持更多移动平台。因而,jQuery Mobile更适合交互较为简单的移动互联网应用的开发,而Sencha Touch更适合面向特定行业的有丰富交互需求的产品化应用的开发,如企业办公系统和移动信息化应用。
3.2 跨平台开发框架
跨平台开发框架主要用于提供跨平台API,让开发者不必关心各终端平台的系统API和原生开发语言,通过Web开发就可以完成跨平台混合应用的开发。国内常用的跨平台开发框架包括phoneGap、AppCan、WAC Widget。
PhoneGap是一个让开发者通过普通的Web技术编程,快速创建跨平台移动应用程序的混合应用开发平台。它支持iOS、Android、BlackBerry、Palm WebOS、Symbian、Windows Phone、bada等主流移动平台,支持的硬件API包括重力感应、摄像头、通讯录、文档、地理定位、声音和振动等。此外,它还拥有丰富的第三方插件,功能可以无限扩展,并且采用开源MIT许可证。
AppCan是国产的混合应用开发平台,它着重解决了基于HTML5的移动应用不流畅和体验差的问题,使得基于AppCan开发的HTML5移动应用的用户体验基本接近原生应用的体验。它支持iOS、Android、Windows Phone等主流移动平台。
WAC Widget是一种可运行在移动设备上的Widget开发框架,它支持标准Web技术开发,支持iOS、Android、Symbian、Windows Phone等主流移动平台,通过它定义的一套完整的API可以访问移动终端系统和网络侧平台,例如语音呼叫、通信录、文件操作、系统软硬件信息、拍照、重力感应、位置服务等。它是由W3C着手制定的一套Widget系列规范,获得了全球众多运营商、厂商的广泛支持。
3.3 跨平台混合应用开发
移动Web开发框架可以显著提高移动Web应用的开发效率,而PhoneGap等跨平台开发框架可以减少甚至避免混合应用开发中的原生开发的工作。在移动互联网应用开发中,跨平台开发比原生开发拥有更高的开发效率;而基于移动Web开发框架和跨平台开发框架的跨平台混合应用开发,可以进一步提高应用开发效率,显著降低开发成本。
跨平台混合应用开发主要分为移动Web开发和原生开发两部分工作,移动Web开发主要用于构建混合应用的界面和业务逻辑等,而原生开发主要是针对不同终端系统平台进行跨平台API的封装,为基于Web技术开发的移动应用提供统一的JavaScript接口。
基于HTML5的移动Web开发和跨平台混合应用开发两类跨平台开发技术,两者的共同基础是Web开发,不同点是前者通过HTML5标准支持跨平台API,后者通过终端原生开发支持跨平台API。
随着移动互联网的飞速发展、智能终端的迅速普及,移动互联网应用低成本运营的需求日益强烈,这就催生了基于HTML5的移动Web应用和混合应用两类跨平台开发技术。而移动Web开发框架和跨平台开发框架的出现,进一步推动了移动互联网应用跨平台开发技术的发展。
相信在不远的将来,随着移动终端浏览器对HTML5标准支持度和运行效率的迅速提高,移动互联网应用跨平台开发技术将会获得迅猛发展,完全有可能替代原生应用开发技术,成为移动互联网应用开发的首要技术。
[1]Sarah Allen, Vidal Graupera, Lee Lundrigan. 智能手机跨平台开发高级教程[M]. 北京: 清华大学出版社, 2011.
[2]陈桦,杜启宏,程刚. 移动智能终端Web应用平台开发技术研究[J]. 移动通信, 2013(5): 23-26.
[3]杨晓华,程宝平,朱春梅. Mobile Widget——新一代移动互联网应用技术[J]. 电信技术, 2011(2): 30-34.
[4]刘春华. 基于HTML5的移动互联网应用发展趋势[J]. 移动通信, 2013(9): 64-68.
[5]胡世良. 移动互联网软硬一体化商业模式探析[J]. 移动通信, 2013(9): 56-59.