PhoneGap VS. Titanium

PhoneGap VS. Titanium

上周末珠三角沙龙如期举行,参加沙龙前特意又简单对比了一下PhoneGap和Titanium的特性,打算到现场跟黎展波交流一下,后因私事不能成行实在可惜。

第一次听说PhoneGap是去年某周末TaskAnt的孙总介绍(sunfang@twiiter)推荐的,传说当时他们计划做TaskAnt的Mobile客户端,至于最终是否选择了PhoneGap我倒不知道,但现在还没有客户端现在还是没有出来。广告一下:TaskAnt的确是一个非常有爱的小型团队计划任务平台,虽然我现在已经没有在用了,总有一天我会回来。

在比较前,首先有一观点我认为是一致的:如果希望用PhoneGap、Titanium等框架来实现一个流畅的高端游戏或者需要CPU计算能力的应用,在当前的硬件条件、开发成本上的可能性几近为零。走错路了,还是去用原生平台代码去实现吧。正如月光博客上说的一样:“兼容性越强的技术,成本越低,性能越差;兼容性越差的技术,成本越高,性能越好”。

在跨平台这个特性上,无可置疑地是PhoneGap胜出。这跟两家公司的策略和框架实现有关,PhoneGap更注重支持多个平台,而Titanium更注重提供原生的UI而只支持iOS+Android。这也体现在API上,PhoneGap没有提供UI部分的JS接口库,而Titanium则提供。

最大的争议,我想在于是否”native”这一点上,众所周知PhoneGap的跨平台就是因为它是运行在WebView上的HTML+JS的实现,并且提供兼容性的JS库(当然,这里有一个跟本地设备桥接的实现,Titanium亦然)。而Titanium的实现类似,但争议在于官网上无处不在关于“native”的声明实在令人有点迷惘,过去我也一直以为这个native就是如文档说的一样:“Every single JS instruction you write is converted in pure ObjectiveC.”,包括上一次在沙龙上我也是这样说的(这里)。但现在更多的人在说它不是,最终也只是一个WebView的实现,所谓的native只是指”native” UI。的确,从build出来的包里也确实没找到ObjectiveC的代码。但有一点是肯定的,PhoneGap是运行在WebView上的HTML+CSS+JS,而Titanium只是用了JavaScript来写你的Mobile应用。前者包含了DOM特性,后者没有,前者可以用jQuery等第三方库,后者不允许或者说没必要。

文档可读性上,Titanium的文档在过去我是觉得还是非常欠缺的,但在Github上的例子代码都可以解决了我大部分问题。而现在Titanium比我当时接触时好太多了,而且最近还开放了wiki,还有一个Q&A平台,我相信会越来越完善。PhoneGap同样提供wiki文档,但由于没有深入开发之中,还不知道文档是否能真正解决问题。

可扩展性方面,前天我还跟@老甘 说,我知道Titanium可以通过模块的扩展来实现一些官方API没有提供的功能,比如Paint 。今天再特意看看PhoneGap,其实也有类似的实现。原理应该都是一样的,基于框架的要求使用ObjectiveC来编写针对特殊场境的模块实现,当然也要同时考虑在不同的移动平台上的实现了,也是说兼容性将由开发者来保障。

以前是综合参考资料中各文章汇总出来的简单比较,我并没有去比较各自API中的实现优劣势,我想这个还是留待大家去探索吧。而以上这些资料,已经足以让我们判断如何去选择一个框架:

  • 如果想快速开发一个iOS or/and Android原生UI的程序,选择Titanium或许更适合
  • 如果想实现一个跨平台的基于HTML的移动应用,PhoneGap或许更适合

最后还是一点,开源协议上PhoneGap是基于“New” BSD or MIT license 的,这比Titanium的Apache 2.0 license 更加开放。而参考资料中有提到Titanium发布到AppStore需要付费,我想这可能过去的license或是误读,因为我还没有发布过属于自己的应用,也没有找到这一条付费内容,望知道出处的朋友告知。

anyway,最近不碰Titanium了,直接学ObjectiveC了,哈哈……

参考资料:

http://stackoverflow.com/questions/1482586/comparison-between-corona-phonegap-titaniumhttp://translate.google.com.hk/translate?hl=zh-CN&ie=UTF-8&sl=ja&tl=zh-CN&u=http://d.hatena.ne.jp/r_kurain/20101121/1290347346&prev=_thttp://great-way.appspot.com/2010/09/2/Mobile-Apps-cross-platform-development-challenge:-PhoneGap-vs.-Titanium-vs.-Rhod.html

–EOF–

最后还是有话要说:如果只是想写iOS软件而不想学习ObjectiveC,我觉得Titanium才是你的选择。-20110501

如果想开发跨平台的桌面程序,你应该看看Titanium,这跟PhoneGap在Mobile上的实现原理应该是一样的,将HTML5+CSS+JS实现的应用程序包裹在一个WebView容器里实现跨平台。当然,你可能会说AIR更好。-20110503

相关推荐