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