智能终端跨平台应用开发技术研究*
2012-02-19朱培军李慧云文锦军
陆 钢,朱培军,李慧云,文锦军
(1.中国电信股份有限公司广东研究院 广州510630;2.中国电信股份有限公司广东分公司 广州510081)
1 前言
据权威机构预测,全球已经进入了移动互联网发展周期的早期阶段,未来几年内,通过移动装置接入互联网的用户很有可能超过通过桌面个人电脑接入互联网的用户,移动互联网的发展速度将快于传统互联网,其创造的利益也会远远超过传统互联网。面对这一巨大市场,各大产业巨头纷纷构建了移动互联网生态链,以苹果为代表的AppStore成功创造了移动互联网应用商业模式,激发了广大开发者的智能终端应用创作热情。
智能终端应用形态主要分为Web应用和本地应用两类,Web应用是指运行在浏览器上的应用形态,本地应用是指直接运行在操作系统之上的应用形态。Web应用采用网页语言开发,具有开发简单、跨平台适配等优点,而本地应用一般采用Java、C等语言开发,具有开发能力强、交互性好、效率高等优点。同时这两种应用形态也不断融合,从而出现了Widget此类应用形态,可采用网页语言开发,同时具备本地应用的使用形式,并且可以跨平台运行。现阶段智能终端应用形态以本地应用为主,但是Web应用和Widget应用随着HTML5语言的出现以及智能终端多平台的发展也展现出良好的发展势头。
智能终端应用开发技术作为移动互联网产业链上的关键环节,其关键技术的突破对于整个产业链健康快速发展具有重要意义。目前,智能终端应用开发技术基本都是针对具体操作系统平台提供针对性的开发语言和工具进行开发,开发者开发完成一款终端应用后,需要花费大量的时间和精力进行跨平台的移植工作,导致应用开发周期长、开发门槛高的问题。因此有必要提供一种可以跨平台的开发技术,能够保证开发者基于某种开发语言或开发工具,一次性编写代码即可生成可以运行在多种类型终端平台上的应用程序,尽量减少针对不同的终端平台进行的二次开发和适配工作。
2 主流跨平台开发技术现状
目前主流的跨终端平台开发技术按照其实现方式大致可以分为跨平台运行引擎和跨平台应用编译两种方式:跨平台运行引擎技术一般需要在目标设备上安装一个引擎,用于屏蔽终端底层操作系统差异,开发者开发应用部署或编译打包后,用户下载到目标设备上由引擎解释执行;跨平台应用编译通常采用一种标准开发语言开发应用,应用开发完成后由代码编译器针对不同目标终端平台分别进行编译,生成有针对性的可执行程序。
从支持的开发语言来看,可以分为应用开发语言和网页开发语言:开发者可以采用应用开发语言 (如Java、Delphi等)开发应用,应用可以运行在引擎或操作系统上;或者开发者可以采用网页开发语言 (如HTML、CSS、JavaScript)开发应用,应用可以运行在Widget引擎或操作系统上。这两类语言的代表如下。
(1)应用开发语言
此类开发方式最常见的是Java,基于Java虚拟机(Java virtual machine,JVM)实现跨平台开发。JVM是一个虚构出来的终端中间件环境,是通过在实际的终端中间件环境上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
目前还有一些开发工具采用传统编程语言如Delphi进行开发,代码编译生成多平台下的可执行程序,这种开发方式保留了传统编程语言的语言能力,同时也保证了可执行程序的运行效率,为开发者提供了一种较优的跨平台开发选择。
(2)网页开发语言
开发者可以采用HTML、CSS和JavaScript语言开发Web应用,由浏览器实现跨平台的适配性。由于浏览器调用终端系统API能力较弱,因此出现了Widget引擎的跨平台实现方式,利用JavaScript语言封装终端系统API能力,向开发者提供统一接口。但是Web应用和Widget应用都受制于网页开发语言的限制,因此在展现效果和调用能力上都存在一定的缺陷,目前下一代网页开发语言HTML5有希望弥补这一缺陷,缩小Web应用/Widget应用和本地应用的差距。
跨平台应用编译目前常见的实现方式是各类Web应用开发工具,开发者采用Web语言编写代码,由Web应用开发工具为不同智能手机操作系统平台分别编译生成针对具体平台的应用程序,比如目前常见的PhoneGap、Titanium开发平台。具体到PhoneGap来看,PhoneGap是一个基于HTML、CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发工具。其采用W3C标准,使用JavaScript语言封装终端系统API,使开发者能够调用主流智能手机的核心功能,包括地理定位、加速器、联系人、声音和振动等。这类开发方式无需依赖终端侧引擎,编译后的应用程序直接运行在终端操作系统上,与本地应用在形式和使用方式上没有任何区别,但是其开发能力同样受制于网页开发语言的限制,目前PhoneGap也已经支持HTML5标准。
比较以上两类开发语言,网页开发语言存在能力受限(大代码量、复杂图形和动画支持)、解释执行效率较低的问题,应用开发语言存在支持的平台数量少、适配性差的问题。随着HTML5标准的出现,网页开发语言在多媒体、3D图形、终端能力调用等方面的能力大大提升,并且其开发门槛低,越来越受到移动互联网开发者的青睐,因此以下将主要围绕网页开发语言构想下一代跨平台开发工具。
3 下一代跨平台开发构想
分析目前业界的跨平台应用开发现状,其实现方式多样,各有优缺点,无法完全满足开发者多样化跨平台开发需求。考虑到终端应用形态的多样性,希望构想一种网页开发语言的融合多态的跨平台开发工具,既可以支持跨平台运行引擎也可以支持跨平台编译的方式,具体来说,下一代跨平台开发工具有以下特点。
(1)统一的跨平台开发语言
开发者希望能够通过统一的标准开发语言(HTML、CSS、JavaScript)来进行不同平台下的应用开发,从而减少代码的重复编写,免去不同语言的学习熟悉过程。
(2)统一的跨平台系统API编程接口
不同智能操作系统的API封装形式不同,传统开发者在跨平台移植过程必须重新学习新平台的API编程指南,重写API相关程序代码,增加了跨平台应用移植的时间。因此跨平台开发的开发者希望能够使用通用标准API(JavaScript封装)开发应用,无需重新适配不同平台API。
(3)统一的跨平台开发环境
跨平台开发者希望能够基于一个自己熟悉的开发环境进行开发,无需针对不同平台重新下载、安装全新的开发环境,无需重新学习不同开发环境的使用方式和操作流程。
(4)丰富的代码框架和工具库
跨平台开发者希望可以参考或直接使用已经在多平台下验证过的代码框架和工具库,增加界面的标准性和美观性,减少重复的开发量,缩短应用开发的时间。
(5)自动化的跨平台测试和仿真环境
跨平台开发者希望能够采用编写测试脚本,针对已经完成调试的应用程序进行跨平台的自动化测试,输出测试结果,验证应用在跨平台终端上运行的功能完备性、界面适配性和系统可靠性,可以仿真不同平台的终端环境,便捷地调试应用程序,减少应用调试的时间和成本。
(6)跨平台的打包编译工具
开发者利用网页开发语言开发的代码可以本地/远程打包生成引擎解释执行的应用包,也可以本地/远程编译生成多平台下的安装包。
(7)支持不同终端生态环境
可以支持Android、iOS、Windows Phone、浏览器、Widget运行引擎等主流操作系统、运行环境和分辨率,开发者一次开发可以运行在以上生态环境中。
4 下一代跨平台开发环境实现方案
依据以上跨平台开发构想搭建一套融合多态的跨平台开发环境,可以融合目前跨平台运行引擎和跨平台应用编译的优点,由开发者选择合适的开发工具基于Web语言开发。考虑到以上需求,设计集成开发环境可以包括远程开发环境和本地开发环境两部分,功能架构如图1所示。
本地开发环境包括以下功能模块。
(1)基础开发构件
开发者安装和配置好开发环境后,可直接在集成的基础开发构件中编写应用代码,至少应包括以下几个区。
·工程显示区:显示所有打开的工程、工程目录和工程中的文件。
·代码编辑区:支持多个代码文档的编辑。
·调试信息显示区。
·代码文档大纲/概要显示区。
(2)可视化代码框架
为开发者提供UI设计工具,提供常用的页面控件,如列表、文本输入框、静态文本、单选框、复选框、组合框、翻页按钮、按钮等,并可以将UI控件与控件对应的背景色、图片、风格关联起来。例如,新生成一个Widget应用时,SCE提供应用启动时的事件、应用获取焦点时的事件、应用退出时的事件等代码框架。对一个按钮对象,提供按钮按下时的事件等。
(3)API插件库
离线开发环境为开发者提供ECMA Script、Ajax、Dom、Widget API以及多平台的插件参考库,开发者可随时查询API和调用方法。同时,在编辑代码时,代码编辑器可根据用户输入实时提示用户可调用的API方法,如用户输入类名时,代码编辑器可提示用户下一步可输入openUrl、setPreferenceForKey、onFocus等。
(4)调试工具
对代码中的语法错误进行及时提示,以显著颜色或提示符告知用户。开发者可在代码中设置断点,对代码进行单步调测,以精确定位代码错误位置和错误原因。
(5)离线测试工具
为开发者提供离线效果查看功能,可借助模拟器查看应用的运行效果。
(6)编译打包工具
完成应用开发后,开发者可根据需要通过离线开发环境提供的工具打包生成Widget应用(采用跨平台引擎运行方式),或者编译生成本地应用(采用跨平台编译方式)。
(7)终端模板库
包括智能终端类型,如智能手机、平板电脑等;终端型号;屏幕分辨率,如240×400等。终端设备的选择决定了应用可调用的本地设备能力集、使用方式(键盘操作还是触摸屏)、可显示的区域(屏幕大小)。
远程开发环境包括以下功能模块。
(1)基础开发构件管理
对开发者下载的基础开发构件进行管理,维护其下载、升级操作。
(2)插件/框架
对开发者下载的插件和框架进行管理,维护其下载、升级操作。
(3)在线开发工具
为开发者提供一种基于浏览器的开发方式,开发者通过简单拖拽可以生成内容类应用。
(4)在线打包编译工具
为开发者提供一种远程在线打包编译的方式,开发者在应用开发时可以无需关心设备类型和型号,完成开发后将代码工程上传到远程开发环境后,选择相应设备类型和型号再进行编译打包。
(5)真机测试环境
为开发者搭建的一套可以分时复用的真机池,开发者可以远程选择相应型号的设备进行真机测试。
(6)终端模板库管理
对平台可以支持的终端模板进行管理和更新。
5 发展展望
回顾传统PC、服务器操作系统的发展历程,跨平台开发是开发者追求的终极目标,跨平台开发技术作为产业链发展过程中的关键一环,始终是开发技术研究的热点和难点。同样随着智能终端平台的发展,目前已经基本形成了几个主要阵营,旧操作系统版本更新和新操作系统进入是智能终端平台不变的主题,智能终端跨平台开发技术还处于起步阶段,对其进行深入研究符合产业发展要求,也是国内软件业可能占据的一个技术高点。
本文中提到的基于Web语言的下一代跨平台开发工具虽然在图形适配、运行效率、在线编译等方面还存在一些技术难点,需要业界力量进一步研究,但是其构想是一种有益的探索。在跨平台开发技术上降低开发者门槛和开发能力及效率是互相制约的两个方面,需要在其中找一个平衡点,保证跨平台开发技术能够接近操作系统原生态开发能力并减少对开发者的要求。
在当前移动互联网产业结构下,人人都是开发者,都可以基于其奇思妙想构建应用,应用开发技术不应该成为广大草根开发者进入这一领域的障碍,为此类人群提供以上构想的跨平台开发工具,将成为移动互联网应用开发的助推器。随着软件技术的发展,特别在HTML5技术出现后,网页类应用语言能力逐步提升,将成为跨平台应用开发的主力,广大开发人群青睐的网页类应用开发工具将成为移动互联网应用开发产业链中不可或缺的一个环节,拥有良好的发展前景。