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