接下来,我们将对PhoneGap的相关技术进行简单介绍,包括PhoneGap在移动领域的主要竞争对手(如Titanium以及Adobe AIR等)。另外,我们还将介绍在一些PhoneGap应用中经常会用到的著名的JavaScript移动UI框架。
Titanium是Appcelerator公司旗下的跨平台开源框架。现在,iTunes应用商店中的五十多万个应用中,很多都是基于Titanium开发的。
Titanium可以用来创建富Web应用和桌面应用程序。不仅如此,现在它还允许你使用HTML、CSS、JavaScript、Ruby和Python等创建移动应用,并且创建的应用能运行在iPhone和Android平台上。Titanium独特的跨平台编译技术能将Web应用直接转换为各种平台中原生的应用程序。
这个框架最成功的案例是NBC Universal的iPad应用,这个应用可以让用户观看NBC节目、玩游戏等。应用的开发者这么称赞Titanium:“这个应用是由一个JavaScript开发者在三个月内写成的,而之前尝试用Objective-C开发这个应用时,花了四个人六个月时间,很贵,完全是一场灾难。”
Titanium的特性如下所示。
支持Linux、Mac OS、Windows、Android和iPhone平台。
支持Adobe Flash、Microsoft Silverlight或其他第三方的Ajax库。
支持Module API用于扩展核心的Titanium平台。
支持使用Ruby和Python编写应用程序的脚本。
支持C++、JavaScript、Ruby和Python之间的无缝操作。
Titanium的收费方式,主要是出售额外的扩充模块Titanium+Plus,里面包含了像BarCode的条码扫描功能、Apple的In-App Purchase服务、PayPal付费功能。
与之相比,PhoneGap也提供了丰富的插件来实现这些功能,其优势在于这些插件都是开源的。
这里是Adobe官方网站对于AIR的介绍:
Adobe AIR运行时使开发人员能使用HTML、JavaScript、Adobe Flash Professional软件和ActionScript构建Web应用程序,这些应用程序可以作为独立的客户端应用程序运行并且不受浏览器的约束。Adobe AIR作为Flash Platform的一个关键组件,为跨设备和平台交付应用程序提供了一个一致、灵活的开发环境,使设计人员和开发人员能完全释放自己的创意。现在提供Android、BlackBerry、Tablet OS和iOS移动操作系统及电视支持。
MixMatchMusic首席执行官兼共同创始人、MobBase移动应用程序服务开发人员Charles Feinn这样评价Adobe AIR:
借助Adobe AIR,我们将相同的代码用于桌面、平板电脑和智能手机,这不仅为我们节省了时间和资金,还提供了部署效率。随后,我们可以快速、有效地通过Adobe的应用程序分发服务Adobe InMarket分发这些应用程序。
Emantras公司的首席执行官Sesh Kumar也给Adobe AIR不错的评价:
使用Adobe AIR和Flash Platform创建应用程序的投资回报和资源节省真正扭转了形势。AIR是唯一可用的解决方案,它让你通过重用代码瞄准智能手机、平板电脑、台式机和电视。AIR通过多种设备提供电子教学内容的能力令几乎所有人都能学习。
目前,各个领域已经涌现出了许多优秀的使用Adobe AIR技术开发的客户端软件,例如著名的Twitter桌面客户端TweetDeck。
Adobe AIR诞生数年来,已经从1.0版本升级至如今的3.5版本,产品日趋成熟,其跨平台理念也从电脑桌面扩展到了移动平台。不过Adobe AIR目前支持的移动平台数量不是很多,仅支持Android、iOS和黑莓Playbook系统。
笔者认为,在复杂游戏和三维游戏方面,Adobe AIR是首选方案;不过若是仅仅开发不是很复杂的应用或者游戏,就不如PhoneGap方便了。
Corona是基于著名的游戏脚本语言Lua的SDK库,有了Corona SDK,Lua语言就可以运行在iOS和Android平台上了。下面简要介绍一下Corona的优缺点。
Corona SDK的优点如下所示。
稳定。
支持硬件加速、GPS、指南针及照相机等。
支持与Map、Facebook、OpenFient、GameCenter的集成。
内建的物理集成。
Lua语言比较容易学习。
不错的社区支持。
除了上面介绍的优点外,Corona SDK当然也有一些不太好的地方,具体如下所示。
只支持iOS和Android。
Lua语言不是面向对象的。
每年都要交授权费。
Android支持还有太多问题。
没法自己集成Corona SDK不支持的第三方SDK。
编译项目的时候需要把代码上传到Corona服务器上去编译,而不能在本地直接编译。
无法扩展Corona的功能,而官方的更新速度又太慢。
物理模块还有一些缺陷。
移动开发公司AppMobi推出了全新开发工具XDK,这个工具使得开发者可以使用HTML5构建网络和移动平台的应用程序。最终代码既可以用来进行HTML5应用程序开发,就如同现在在Chrome网络应用程序商店里看到的那些程序一样,也可以用于多平台应用程序开发,最终提交到苹果或Android的应用程序商店。XDK本身属于网络应用程序,可以在Chrome网络应用程序商店免费下载。
用户只要会HTML5、CSS3或JavaScript代码,而不需要学习Objective-C或下载其他的软件开发工具包,就可以使用XDK编写程序。XDK让用户可以使用行业标准来构建应用程序,同时提供了AppMobi自有的JavaScript库,其中包含类似转换滤镜和滚动条等内容。
此外,XDK还提供了调试工具,可以进行屏幕仿真调试、设备实际调试和遥控调试,但不包括ad-hoc模式和安全特性。程序可以在Mac和Windows上运行。
目前,这一开发工具还不太成熟,我们可以关注其将来的发展态势。
在移动Web开发的总体架构中,PhoneGap处于移动Web UI框架和移动设备操作系统(Android、iOS、BlackBerry、Symbian、webOS等)之间,因此它也可以称为移动应用中间件。
目前,最常用的移动Web UI框架大概有如下几种。
1. jQuery Mobile
jQuery Mobile是目前Web开发者用得最多的JavaScript框架,它是jQuery在手机上和平板设备上的版本。jQuery Mobile不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。
Adobe为jQuery Mobile的诞生贡献了很多力量,而且Dreamweaver也集成了该框架和PhoneGap,从而使这个组合成为前端开发人员最易入手的移动应用开发平台。
jQuery Mobile支持很多平台,包括iOS、Android、Windows Phone、BlackBerry和Symbian等。
2. Sencha Touch
前不久,基于JavaScript编写的Ajax框架Ext JS,将现有的Ext JS整合jQTouch和Raphal库,推出了适用于移动应用开发的Sencha Touch框架,该框架是世界上第一个基于HTML5的移动应用框架。同时,Ext JS更名为Sencha,jQTouch的创始人David Kaneda以及Raphal的创始人也已加盟Sencha团队。
Sencha Touch支持的平台相对不多,但是功能强大,可以简单看成Ext在移动设备上的移植版本,熟悉Ext框架的Web开发人员用起来会非常顺手。Sencha Touch具有丰富的组件支持和华丽的页面效果,但是在开发过程中需要考虑性能问题。
3. Dojo Mobile
Dojo Mobile框架是一套移动终端的Web应用开发框架,是Dojo的一个子项目,具有轻量级、模块化、速度快及封装性好的特点。Dojo Mobile主要面向手持设备上的Web富客服端应用开发,提供了iPhone和Android两套主题,使得基于iPhone或者Android的Web应用具有手机本地应用的外观和效果,而同时也给了开发者更多的主导权。
Dojo Mobile开发框架有这么几个特点:
轻量级。Dojo Mobile框架在压缩之后仅有100KB,在同类JavaScript框架中算是体积相当小的,十分合适移动设备。
大量使用HTML5和CSS3实现iPhone和Android本地程序的特效,动画效果流畅。
跨浏览器平台,Dojo Mobile同时也支持非WebKit内核的手机浏览器,使用Dojo自带的dojo.animateProperty与dojox.gfx模拟特效。
Dojo Mobile对于iOS和Android主题的封装性好,开发者只需使用统一的布局和CSS即可实现不同平台的本地效果。
相对于jQuery Mobile在互联网领域的风生水起,很多从事企业级应用开发的公司比较喜欢使用Dojo进行前端开发,比如IBM的很多企业级产品和SpringSource的WebFlow等。
4. XUI
XUI是类似于jQuery的一个JavaScript库,与Sencha Touch或者jQuery Mobile那样试图构建一个通用的解决方案不同,XUI是一个用于移动Web应用的轻量、极简、高度模块化的框架。
它非常轻量的原因是,它只支持移动浏览器,所有跨浏览器支持的代码都被剥离。它面向大多数主流移动Web浏览器,如WebKit、IE Mobile以及黑莓浏览器。
XUI是在2008年随PhoneGap产生的。
关于这些常用的JavaScript移动框架的用法,我们将在后面做出详细介绍。