成也Titanium,敗也Titanium之pros
隨著Titanium不斷的發展,開發者們紛紛加入到這個隊伍中來。很多人在開始的時候都對這種混合應用開發還存在這一定的猶豫,我為什么選擇它?它是否能夠滿足我的需求,實現我的預期目標?我使用它是否能發揮出它自身的特長?等等
很多人喜歡把Titanium和PhoneGap擱在一起去比較,本文的目的不是這個,如果你想知道他們的區別,“百度一下你就知道”。
首先,Titanium是什么?Titanium是Appcelerator公司提供的一個開源的開發平臺,它允許我們使用WEB開發技術,如:Javascript、HTML、CSS等來創建原生移動應用。Titanium Mobile SDK是目前被25萬移動應用開發者、3萬5千應用所采納的領先跨平臺移動應用開發解決方案。(數據來自官方)
以下站在中立的立場,先從正面來評價一下Titanium,之后的文章會從反面來說明。(當然有些觀點基于本人自己的開發體驗)
1)免費的Titanium
Titanium是開源免費的(Apache License Version 2.0),Appcelerator公司通過Github公布了Titanium相關源碼:
Titanium Mobile Kitchen Sink Demo
Modules for Appcelerator's Titanium
Build scripts and config for Titanium
……
IDE開發工具Titanium Studio也是免費的。
http://www.appcelerator.com/products/titanium-studio/
2)快速的原型開發
Titanium真正意義上加速了應用的開發速度,因為它允許你采用一種靈活的方式來創建應用,相比通常的應用開發(Object-C的iOS引用,Java的Android應用)來說,它需要寫很少的代碼,花費更少的時間。
無論你是選擇原生開發或選擇跨平臺的工具包來開發應用,都可以使用Titanium來創建原型,通過UI來評估用戶的交互,因為其快速,便利的開發特性。
3)面向Web的設計
應用自身一般都是通過Web技術開發的,Titanium的重點也就是來幫助那些使用web服務的應用的開發。
它有很大的好處,不僅簡化了開發過程,而且還節省了通過遠程通信交換信息時候所花費的開銷。典型的一個例子就是通過JSON形式來做數據傳遞。
JSON(JavaScript Object Notation) 是一種基于JavaScript(JavaScript-like objects)的輕量級的數據交換格式,而Titanium提供純正的JavaScript API,所以你需要做的就是定義一個局部變量,然后從網絡接收的數據賦給這個變量即可,不需要對數據進行解析,提取和轉換(除非是一些不支持的JSON數據類型,比如date)。
4)使用JavaScript開發
這是一種很多開發者都熟悉的語言,它能使很多具有Web開發背景的開發者迅速的轉入到移動應用的開發中來。更重要的是,Titanium ***程度的實現了基于原型的腳本語言的本質特征:靈活及結構化的組織。
開發者可以利用JavaScript的語法來迅速的創建iPhone,iPad,Android等平臺的應用,不再需要具備Object-C和Java經驗。
而且像jQuery,YUI等一大批成熟的JS框架可以在Titanium中靈活應用。
5)支持跨平臺
只需要編寫維護一套代碼,Titanium會為你編譯出各個平臺的原生應用后在多平臺上運行,但是你還是要先重點開發其中一個平臺的代碼,然后進行必要的修正來讓他在第二個平臺也能正常運行。
好處是顯而易見的,你不必學習兩個獨立的語言(Object-C,Java),還可以實現很高水平的代碼重用性。
多平臺下代碼的實現可以通過多種方式實現,比如IF/ELSE,分離的jss文件,分離的js文件已經平臺特有的子文件夾。
當然他也不是那么***的,你不能說類似“write once, run on iOS and Android”這樣的話(套用一下Java的口號)。
6)迅速成長的社區
Appcelerator已經創建了一個社區,它具有25萬移動應用開發者,他們使用Titanium跨平臺開發工具開發了3萬5千應用,并且推出了Open Mobile Marketplace,開發者可以銷售,購買,共享自己的Module,Template,Design element以及擴展的web服務。
Appcelerator最近也獲得了重要的投資(其中C輪融資150萬),收購了Cocoafish來提供云服務,增強平臺的功能。
顯然,Appcelerator 正在創建一個很好的,正在快速成長的平臺,以后會越來越好。
7)使用原生UI控件
Titanium提供最接近原生應用的應用,所有的UI控件都使用了原生控件,應用具有原生應用的"look and feel"。
它提供了一些通用的API,同時也提供了一些平臺特有的API,只需要添加簡單的判斷即可實現。
8)豐富的API
目前***版本1.8.2中,提供了Modules: 36個,Objects: 119個,Methods: 5657個,Properties: 3180個,涵蓋了數據庫,文件系統,GPS地理信息,地圖,媒體,網絡,SNS,RESTful,SOAP,HTML5等各個領域。
9)可擴展性
當TitaniumSDK自身提供的API不能滿足你的需求,你可以擴展Titanium,編寫你自己的module(當然這樣的module是平臺特有的,使用Object-C做iOS的module,使用Java做Android的module),然后在JavaScript中調用自己的 module。由于是通過各自的開發語言來實現module,所以所有的平臺特性都能夠使用。
10)源碼安全
Titanium將源碼js文件在發布的應用中進行了編譯,無法查看,保證了應用源碼的安全性。
這里需要特別提醒的是,在開發Android應用完成后,制作APK文件時,一定要修改tiapp.xml的以下設置,如果ti.deploytype被設置為“development”,Titanium在構建時會將你的tiapp.xml和Resources下的所有東西原封不動的打包入 APK(assert),別人都不需要反編譯,簡單的解壓就能獲取你所有的源代碼。
11)內存管理
自動的內存管理處理,iOS應用中不再需要特別考慮Object-C所特有的內存管理。
12)……
這里需要大家來補充
在下一篇中我將繼續為大家重點為大家梳理Titanium反面,看看Titaniun還有那些不足之處。