成也Titanium败也Titanium-----之cons

上篇,我们来说说Titanium另外一面,看看他到底有什么样的不足。

1)收费的Titanium
   天下没有免费的午餐,免费的另一面就是收费!Titanium的营收模式分两种:增值收费和平台。基本部件免费,高级部件、Titanium Studio的附加功能和官方专业指导服务都需要付费。而且要想获得他们专业的1对1服务,更是相当的昂贵!

2)贫乏的开发文档
   API文档不完整,要么书写的过于简单,要么干脆就没有提到,要么就是版本已经升级没来得及更新,偶尔还有写错的。
   查看API是很多时候解决问题的最好方式,应该在最大程度上重视API的提供。
   提供的Guides内容也很有限,很多东西都没有提到,也就是能够得到一些基本的信息而已。
   Guides虽然是以WIKI的形式提供的,但也只能是他们自己的职员才能够编辑。
     ---> (2012/03/26)Titanium 提供可编辑的Community Wiki了
   同样在Github上的project里理应开发的wiki也没有开放。
   他们提供了很多的入门视频,出发点是好的,但是一些由于版本升级后已经过期的视频没有被拿下,无法分辨是否还能观看使用。

3)Q&A论坛不完善
   首先他们使用的Q&A论坛程序本身在技术和设计上就存在很多问题,比如你想查找个问题是很费劲的,它所给你显示的结果的排序非常混乱,不知道是否结合了回答数,点击数,发布时间等,但就是跟你想象的结果差的太远,你就得挨个看看每个问题是否跟自己的问题类似,当你将你的Q&A Profile的Notifications设置成Enabled的时候,你也很多时候收不到来自论坛的邮件。这样你就无法知道是否有人回答了你的问题,不得不每次都把问题挨个查看一遍。

   很多人希望得到他们开发人员的回答,但是他们很少在Q&A论坛中回答问题,偶尔一次就是很难得的了。你会发现很长时间都没有人理会问题,很多时候还是一些热心的开发者来提供回答。

4)构建问题太多
   这是大家普遍反应的问题,在环境构筑,应用构建时候会出现很多问题,比如找不到SDK,build时出错,不能启动模拟器等等
   应用构建花费时间太长,很多时候当你点击启动emulator后,很长时间才能把模拟器启动起来,而模拟器启动起来后,你又会发现,Titanium总是提示找不到模拟器,让你重新启动。你不得不一遍一遍的重复这启动这个操作,直到它好用。

5)性能太差
   问题最大的还是性能问题,在Android下尤为严重(1.8版后引入V8后稍有改善)。当你往页面上添加很多View的时候,页面显示就很吃力,当你的Tableview中有很多行时,滚动起来就很费劲等等。

6)无缘无故的crash
   最苦恼的就是这个问题了,因为它会让你抓狂。也不知道什么原因,莫名的系统就提示你发生错误,不能响应了。一个最严重的问题是,应用程序崩溃时没有任何明显的原因,而且错误报告太简单,很难帮助开发者解决问题。很严重的时候他会影响到开发者发布应用到Appstore或AndroidMarket上去。

7)无法做内存管理
   不用开发者考虑内存管理,是好事也是坏事。你将无法知道你的内存使用状况,发生内存溢出的话,你将无从下手。很多时候会让你陷入内存溢出的困境中,无法解决。

8)UI也存在问题
   目前提供的UI控件也存在着Bug,比如说,不能响应事件,无法滚动,不能显示等等。
UI是应用的“门脸”,如果这里出现了问题,将直接导致用户卸载应用。有时候导航不能正常工作,造成了一些导航控制不能实现,UI的设计被打破,如果这发生在一个真正的应用程序商店的产品身上的话,对开发者来说将是一个灾难。但是苦恼的是你怎么Review你的代码都发现它没有任何毛病。

9)Bug修复太慢
   成千上万的开发者在使用Titanium,每天都会发现很多问题,提交给了Appcelerator。但是你会发现很多bug很长时间都未能解决,间隔几年的都有。

10)IDE功能不全
   最开始Appcelerator提供的IDE是Titanium Developer,自从收购Aptana之后,开始提供Titanium Studio。Titanium Studio是一个基于Eclipse的Aptana自定义版的IDE开发工具,它允许你创建,管理,测试你的移动应用项目工程,而且将工程自动打包发布到模拟器或者真机上去。而Titanium Studio在一遇到问题是就不在往控制台输出信息,最为严重的是会偶尔在构建的时候忽略代码的修改。你不得不每次修改完代码后clean你的工程。

   没有官方的可视化开发工具,可视化开发对于应用的页面布局是很重要的,无论是Android还是iOS都提供了强大的GUI工具。Titanium却迟迟没有提供,这就意味着你必须手动书写你自己的代码来实现你的布局。

   调试代码很不方便,Titanium studio还需要加强代码的调试功能。

11)错误提示不准确
   对于开发者来说,调试程序相当重要的,而在程序出错的时候,查看出错的位置,异常的堆栈等信息是很必要的。但是在开发中Titanium的错误提示很难让你找到问题所在,很多时候你都会得到一个模糊的错误提示,它没有给出你具体的错误,你也很难判断错误。很多时候不得不先把一大部分代码删除了,一点点的网上添加来看看那里出了错误。

12)应用文件太大
   在构建应用时会生成大量的文件,一个很简单的应用动辄就5,6M大小。而如果用原生的话,估计也就几十K大小。

   当Titanium把你的代码转换成目标平台(iOS,Android)代码的时候,它产生了大量的类。比如我们查看Xcode工程的话,会发现它生成了大概450个类,而这些类中我们可能用到的也就是10来个左右。这虽然不是很大的问题,但是他堆积到你的应用中,增大了应用的大小,从而将会加大用户访问网络的流量。

   在Android上,如果你查看应用源码的话,你会发现它被写的特别的臃肿。

13)功能受限
   Javascript不是Objective-C也不是Java,所以相比Object-C和Java开发出来的原生应用,可实现功能的范围有所限制。正如前所述,使用JavaScript开发是简单快速的,但是也将失去了原生应用开发语言的一些特有的功能。

   而且从代码上来说,Object-C和Java的结构化严格规范,使得程序很容易维护,而JavaScript灵活宽松的语法也加大了维护的难度。

14)并非完全的开源
   说Appcelerator不是完全的开源,一点儿不过,他不接受众多开发者的贡献。他是能说是公开了源代码而已。

15)Appcelerator在监视你
   Appcelerator在监视你,你知道吗?为了分析app,Titanium默认开启了分析功能。还有你想使用Titanium Studio创建应用的前提是:从Appcelerator申请账户,这样一来,你创建了什么应用,支持什么平台等等,都会传回给Appcelerator。Appcelerator每次发布的移动应用趋势报告就来源于此。

16)API封装不足
  尽管Titanium同时支持iOS和Android,但是目前的API还是需要写很多基于iOS和Android平台的代码(尽管他已经为各个SDK简化了代码)。

  对于JSON对象的正确性也需要特别的注意,自带的parser很严格,最好得先使用eval一下。

   Titanium API的灵活性也带来了不足,虽然他能你用短短的几行代码实现原生代码很长代码才能实现的功能,但是另一面来说他也限制了功能。比如你想给window设置一个铺满的背景,在原生代码中是很普通很简单的功能,但是Titanium中需要很多代码才能实现。

17)代码的可维护性
   Titanium在一定程度上增加了代码的复杂度。何出此言,随着app的功能的增加,代码在不断增多,开发也变得更复杂,你也将会遇到更严重的技术问题,比如:随机崩溃,奇怪的行为,恼人的错误,等等。

   而代码的组织,代码的可读性,MVC层次的分割,multi-device的支持, multi-platform的支持等等,都是需要你考虑的问题。

18)其他
   不断的发布新的产品而不去修复既有产品、网站的问题。而且“新”产品总是在beta或者准备阶段发布。

   有开发者通过Titanium开发的应用未通过Apple的审查,原因是应用调用了Apple的私有API,但是Appcelerator不承认他们有这个问题。
http://developer.appcelerator.com/question/123785/app-has-bee-rejected-by-non-public-api

最后说一个网上最差的案例!有人花2万多美元通过Titanium开发了一个iPad应用,但是经常莫名的crash,内存溢出。应用作者开始寻找Titanium Professional support,这当然要付很昂贵的服务费。虽然应用作者很详细的说明问题,甚至把相关代码发给了他们,但在很长一段时间里都没能解决问题。应用作者就把问题反映给了Appcelerator的CTO(抄送CEO),很快就有了回复。承任Titanium存在Bug,并相应的提出ticket承诺在以后版本中修正但是不可能等那么长时间等他们版本升级,所以应用作者需要更加专业的企业级服务
得到的回复是,每小时375美元帮他排查代码的问题,而应用作者估计他们至少需要20到40个小时才能通读他的代码后给出建议,这将是一笔不小的花费啊!
http://labs.thesedays.com/blog/2010/02/04/review-of-appcelerator-titanium/

正如所有事情一样,每一个设计方法,在每一个决策,都有优点和缺点。对于简单,小的应用来说,Titanium应该是最好的选择,但如果你希望强化你的应用程序的话还是选择原生开发环境比较好。Titanium 作为开发原型来说是一个非常优秀的工具,你可以花费很少的时间,作成prototype展示给客户,进行可用性测试。但是不管是正反哪个方面,在每次项目中都应该去评估,因为它跟取决于项目自身。需要考虑的关键点是:效益,成本,预算,开发的复杂性,跨平台支持有多重要,项目的战略,性能的重要性等等。你必须权衡每个正反方面的观点,根据你的具体优先顺序,来确定它是否适合你的需求。但是从个人观点来说,当你启动一个新的项目时,应该考虑考虑Titanium,它是一个很棒的选择!

你可能感兴趣的:(mobile,Titanium,cons,appcelerator)