精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

跨平臺(tái)移動(dòng)開發(fā)工具:PhoneGap與Titanium全方位比拼

譯文
移動(dòng)開發(fā)
本文為Appcelerator開發(fā)者Kevin Whinnery對(duì)PhoneGap和Appcelerator Titanium進(jìn)行的全方位的比較。希望本文能對(duì)正在選擇使用跨平臺(tái)移動(dòng)開發(fā)工具的朋友有所幫助。

【51CTO譯文】PhoneGap和Appcelerator Titanium,對(duì)于封裝和配置移動(dòng)應(yīng)用程序而言,二者都是非常受歡迎的開源JavaScript框架。本文為Appcelerator開發(fā)者Kevin Whinnery對(duì)PhoneGap和Appcelerator Titanium進(jìn)行的全方位的比較。

以下為全部譯文:

我在面向開發(fā)者的各項(xiàng)活動(dòng)和大會(huì)上經(jīng)常被問及一個(gè)問題:Titanium與PhoneGap相比到底怎樣。我想,看來(lái)有必要抽點(diǎn)時(shí)間,從宏觀層面解釋每一項(xiàng)技術(shù)是如何工作的,并且評(píng)估這兩項(xiàng)技術(shù)彼此相比怎樣。

Appcelerator Titanium

從宏觀層面來(lái)看,PhoneGap和Titanium似乎很相似。它們都提供了跨平臺(tái)移動(dòng)開發(fā)工具。兩者還在一定程度上都需要使用JavaScript和Web技術(shù)。Titanium和PhoneGap都是采用寬松許可證的開源軟件(Titanium Mobile SDK是采用Apache 2.0許可證發(fā)布的;PhoneGap采用了類似的許可方式,PhoneGap又被稱為是Apache軟件基金會(huì)管理的項(xiàng)目“Cordova”的一個(gè)“發(fā)行版”)。

但是兩者的相似之處其實(shí)僅限于此。雖然這兩項(xiàng)技術(shù)的目的都是能夠?qū)崿F(xiàn)跨平臺(tái)的移動(dòng)開發(fā),但是解決這個(gè)問題的一套理念和方法卻沒有多少共同之處。此外,從贊助公司的角度來(lái)看——PhoneGap的贊助公司是Adobe,Titanium的贊助公司是Appcelerator,每個(gè)項(xiàng)目背后的商業(yè)目的大不一樣。我將從自己的視角,在下文盡量詳細(xì)地描述技術(shù)、理念和商業(yè)模式方面的這些差異。

另外,要是你之前還沒有了解,我要聲明一下:本人長(zhǎng)期以來(lái)是Appcelerator的代碼捐獻(xiàn)者和雇員。話雖如此,我還是盡量立足于客觀的技術(shù)事實(shí),從技術(shù)和理論層面對(duì)這兩項(xiàng)技術(shù)作一番評(píng)述。如果你覺得我闡述的觀點(diǎn)哪里與事實(shí)不符或者誤人子弟,請(qǐng)留言告訴我,我會(huì)酌情更新這篇博文。

我會(huì)先從宏觀層面描述這兩項(xiàng)技術(shù)是如何工作的,還會(huì)描述這兩項(xiàng)技術(shù)如何用額外的原生功能來(lái)擴(kuò)展。就每項(xiàng)技術(shù)而言,我還會(huì)總結(jié)它們所選擇的跨平臺(tái)開發(fā)方法存在的主要優(yōu)缺點(diǎn)。技術(shù)上的差異很快就會(huì)一目了然,但是我做了這些概述和比較后,還會(huì)描述這兩個(gè)平臺(tái)在理念上和戰(zhàn)略上有什么差異、它們將何去何從。

不妨先來(lái)介紹一下PhoneGap及其是如何工作的。#p#

PhoneGap想實(shí)現(xiàn)什么樣的目的?

PhoneGap的目的是,讓基于HTML的Web應(yīng)用程序可以作為原生應(yīng)用程序來(lái)部署和安裝。PhoneGap Web應(yīng)用程序由原生應(yīng)用程序外殼來(lái)加以包裝,可以通過面向多個(gè)平臺(tái)的原生應(yīng)用程序商店來(lái)加以安裝。此外,PhoneGap力求提供Web應(yīng)用程序通常無(wú)法使用的常用的原生API(應(yīng)用編程接口)集,比如之前在瀏覽器中還沒有提供的基本攝像頭訪問、設(shè)備中的聯(lián)系人資料和傳感器。

從更宏觀的層面來(lái)看,PhoneGap可以看作是新興的萬(wàn)維網(wǎng)聯(lián)盟(W3C)設(shè)備API標(biāo)準(zhǔn)的開路先鋒,因?yàn)樗鼈冊(cè)噲D現(xiàn)在就讓W(xué)eb開發(fā)者感受和領(lǐng)略未來(lái)。如今,沒有哪個(gè)平臺(tái)將Web應(yīng)用程序視作一等公民,不過Mozilla大有希望的Boot To Gecko平臺(tái)有機(jī)會(huì)改變這種情況。在優(yōu)先通過API訪問Web應(yīng)用程序方面,微軟的Windows 8也正在取得進(jìn)展,值得關(guān)注。但是PhoneGap的目的是,現(xiàn)在就為Web應(yīng)用程序獲得一小部分的此類權(quán)利。

PhoneGap的最終用戶工作流、工具和接口

想開發(fā)PhoneGap應(yīng)用程序,開發(fā)者就要在本地目錄中創(chuàng)建HTML、CSS和JavaScript文件,其方式酷似開發(fā)靜態(tài)網(wǎng)站。實(shí)際上,一些PhoneGap開發(fā)者提到了這款工具的額外好處:自己大多數(shù)時(shí)候可以在桌面Web瀏覽器中進(jìn)行開發(fā),根本不需要原生工具鏈(toolchain)。

想在原生仿真器/模擬器上運(yùn)行PhoneGap應(yīng)用程序,開發(fā)者就得為自己想要支持的每一個(gè)原生平臺(tái)創(chuàng)建一個(gè)項(xiàng)目,并且使用Xcode、Eclipse或所需的任何原生工具鏈,配置該項(xiàng)目的“web root”目錄,然后使用該工具來(lái)運(yùn)行項(xiàng)目。具體步驟在每個(gè)平臺(tái)各自的入門指南中均有概述。符號(hào)鏈接常常用來(lái)跨多個(gè)原生項(xiàng)目,把“www”文件夾傳送到一個(gè)共同的目錄位置。

把原生包裝的PhoneGap應(yīng)用程序安裝到設(shè)備上需要相似的工作流。不過,為了補(bǔ)充這個(gè)過程,并且緩解本地安裝原生軟件開發(fā)工具包(SDK)的需要,最近被Adobe收購(gòu)的Nitobi建立了一項(xiàng)名為PhoneGap Build的服務(wù),該服務(wù)可以在云端創(chuàng)建易于安裝的應(yīng)用程序。支持PhoneGap編譯部署的功能最近已集成到了Adobe的Dreamweaver工具中。

與PhoneGap結(jié)合使用的工具是標(biāo)準(zhǔn)的Web開發(fā)工具,比如Firebug、Web Inspector和你所選擇的文本編輯器。還出現(xiàn)了一種用于遠(yuǎn)程調(diào)試的新興工具,名為Weinre;這款工具如今得到了更廣泛的應(yīng)用。總的來(lái)說(shuō),你開發(fā)原生應(yīng)用程序這個(gè)事實(shí)在開發(fā)過程中基本上是抽象的。#p#

PhoneGap是如何工作的?

正如我們之前提到的那樣,PhoneGap應(yīng)用程序是一種“原生包裝”的Web應(yīng)用程序。不妨探討一下Web應(yīng)用程序是如何加以“包裝”的。

許多原生移動(dòng)開發(fā)SDK提供了Web瀏覽器窗口組件(“Web視圖”),作為用戶界面框架(比如iOS和Android)的一部分。在純?cè)鷳?yīng)用程序中,Web視圖控件用來(lái)顯示來(lái)自遠(yuǎn)程服務(wù)器的HTML內(nèi)容,或者顯示以某種方式與原生應(yīng)用程序一起封裝的本地HTML內(nèi)容。由PhoneGap創(chuàng)建的原生“包裝器”(wrapper)應(yīng)用程序把前后端開發(fā)者的HTML頁(yè)面裝入到這其中一個(gè)Web視圖控件,并且在應(yīng)用程序啟動(dòng)后,將隨后出現(xiàn)的HTML作為用戶界面來(lái)顯示。

如果JavaScript文件包括在Web視圖裝入的頁(yè)面中,該代碼就在頁(yè)面上以正常方式來(lái)評(píng)估。不過,創(chuàng)建Web視圖的原生應(yīng)用程序能夠以不同的方式(取決于具體平臺(tái)),與Web視圖里面運(yùn)行的JavaScript代碼進(jìn)行異步通信。這項(xiàng)技術(shù)在PhoneGap架構(gòu)中通常被稱為“橋接”(bridge)技術(shù)——在Titanium中,“橋接”又有著稍有不同的含義,本文后面會(huì)有介紹。

PhoneGap充分利用該技術(shù)在Web視圖里面創(chuàng)建JavaScriptAPI,能夠以異步方式將消息發(fā)送到包裝器應(yīng)用程序中的原生代碼,以及接收來(lái)自包裝器應(yīng)用程序中原生代碼的消息。每個(gè)平臺(tái)實(shí)現(xiàn)橋接層的方式各有不同;但在iOS平臺(tái)上,當(dāng)你需要聯(lián)系人列表時(shí),你的原生方法調(diào)用就會(huì)進(jìn)入到通過橋接發(fā)送的請(qǐng)求隊(duì)列。隨后,PhoneGap會(huì)創(chuàng)建iframe,iframe會(huì)裝入統(tǒng)一資源標(biāo)識(shí)符方案(“gap://”),原生應(yīng)用程序經(jīng)配置后處理該統(tǒng)一資源標(biāo)識(shí)符方案;這時(shí)候所有的隊(duì)列命令將被執(zhí)行。通過在Web視圖的環(huán)境下評(píng)估JavaScript串,就能回過頭來(lái)從原生代碼聯(lián)系到Web視圖。

PhoneGap的工作方式絕不止這些,但是通過實(shí)現(xiàn)橋接技術(shù)完成從Web視圖到原生代碼的消息傳遞卻是這項(xiàng)技術(shù)的核心部分,這讓本地Web應(yīng)用程序得以調(diào)用原生代碼。

擴(kuò)展PhoneGap

為PhoneGap編寫原生擴(kuò)展需要你:

  1. 為擴(kuò)展編寫JavaScript接口,它將使用PhoneGap的API,將發(fā)送到原生代碼的消息排成隊(duì)列。 
  2. 以某種方式將你的擴(kuò)展登記到原生項(xiàng)目——在iOS上,這一步在Cordova.plist文件中完成。
  3. 編寫原生代碼,PhoneGap將從Web視圖發(fā)送請(qǐng)求至原生代碼,并實(shí)現(xiàn)所需的任何原生代碼。

大致上來(lái)說(shuō),開發(fā)者可以參與到驅(qū)動(dòng)核心PhoneGap原生API的同一個(gè)異步消息傳遞系統(tǒng).#p#

PhoneGap方法的優(yōu)點(diǎn)

據(jù)本人估計(jì),PhoneGap架構(gòu)方面的主要優(yōu)點(diǎn)是,它非常小巧、簡(jiǎn)單。它只做自己擅長(zhǎng)的工作。PhoneGap團(tuán)隊(duì)有意為基于Web瀏覽器的應(yīng)用程序只實(shí)現(xiàn)最基本的原生API。由于原生API集非常小,因而把PhoneGap移植到許多不同的環(huán)境來(lái)得比較容易。基本上來(lái)說(shuō),支持Web視圖或Web運(yùn)行時(shí)環(huán)境的任何原生平臺(tái)都可以是一種PhoneGap平臺(tái)。

PhoneGap中的非可視原生擴(kuò)展也非常簡(jiǎn)單。說(shuō)到登記原生代碼、接收來(lái)自Web視圖的消息,這方面的要求也非常低。因而可以迅速開發(fā)出簡(jiǎn)單的原生擴(kuò)展。在我看來(lái),這種插入式架構(gòu)還得到了很好地落實(shí)。

另外還有這個(gè)優(yōu)點(diǎn):原生API和原生應(yīng)用程序開發(fā)對(duì)前后端開發(fā)者來(lái)說(shuō)幾乎完全是抽象的。凡是能編寫HTML、CSS、甚至一小段JavaScript代碼的人都能用原生應(yīng)用程序來(lái)包裝網(wǎng)頁(yè),并將其作為原生應(yīng)用程序來(lái)分發(fā)。使用PhoneGap把網(wǎng)頁(yè)包裝成原生應(yīng)用程序方面的準(zhǔn)入門檻極低。

PhoneGap方法的缺點(diǎn)

PhoneGap應(yīng)用程序中用戶界面的質(zhì)量會(huì)不一樣,取決于Web視圖和平臺(tái)上渲染引擎的質(zhì)量。iOS平臺(tái)上基于Webkit的渲染引擎很強(qiáng)大,并且提供了最佳性能。AndroidWeb視圖可以用,但是存在一些明顯的局限性。在其他平臺(tái)上,Web視圖的性能可能成問題,這要看操作系統(tǒng)的版本。

還有Web開發(fā)者始終不得不處理的常見的跨瀏覽器問題。用戶界面需要采用漸進(jìn)式增強(qiáng)、媒體查詢和種種辦法,才能在多個(gè)平臺(tái)上依然可以使用。現(xiàn)在許多移動(dòng)平臺(tái)采用Webkit,這有所幫助;但是即便在基于Webkit的環(huán)境中,仍存在很大的差異。

移動(dòng)瀏覽器一直在變得越來(lái)越好,這將有助于緩解那些問題。但著手處理瀏覽器中原生用戶界面質(zhì)量的用戶界面性能絕非易事——Sencha雇用了一大批的Web編程專家,讓這些專職人員專門解決這個(gè)問題。即使如此,在大多數(shù)平臺(tái)上,在如今的大多數(shù)瀏覽器中,根本不可能達(dá)到原生用戶界面質(zhì)量的用戶界面性能和響應(yīng)能力,哪怕使用像Sencha Touch這么高級(jí)的框架。不過,瀏覽器是不是已經(jīng)“足夠好”?這取決于你的需求和感受,但是毫無(wú)疑問它不如原生用戶界面來(lái)得好。有時(shí)候要差得多,這取決于實(shí)際的瀏覽器。

PhoneGap還無(wú)法用原生用戶界面來(lái)加以擴(kuò)展。前后端開發(fā)者的應(yīng)用程序本身駐留在Web視圖里面,用戶界面由HTML加以渲染。你可以把消息傳遞到原生代碼,并創(chuàng)建在Web視圖之上或鄰近Web視圖的原生用戶界面,但是很難或不可能把動(dòng)態(tài)的、基于文檔對(duì)象模型(DOM)的HTML用戶界面與原生用戶界面組件集成起來(lái)。Appcelerator會(huì)想出辦法——我們?cè)噲D及早把原生用戶界面與DOM元素聯(lián)系起來(lái),但由于結(jié)果無(wú)法預(yù)測(cè),而且質(zhì)量不夠好,因而需要放棄這方面的工作。

力求“最基本”是把雙刃劍,它還有另一面。默認(rèn)情況下,提供給PhoneGap應(yīng)用程序的原生API非常少,這使得平臺(tái)集成很有限。現(xiàn)在有各種各樣的插件,它們用來(lái)堵住其中一些漏洞;但是在我看來(lái),它們的質(zhì)量和維護(hù)水平參差不一。不過,這方面的情況很可能會(huì)繼續(xù)得到改進(jìn)——PhoneGap有一個(gè)強(qiáng)大的社區(qū)。

   我們不久會(huì)更深入地探討PhoneGap的理念方面,但是先來(lái)探討一下Titanium的同樣這些技術(shù)方面。#p#

Titanium想實(shí)現(xiàn)什么樣的目的?

Titanium Mobile的目的是,為移動(dòng)開發(fā)提供一種高級(jí)的、跨平臺(tái)的JavaScript運(yùn)行時(shí)環(huán)境和API(今天,我們支持iOS、Android和瀏覽器,很快會(huì)支持黑莓10,最終會(huì)支持Windows Phone。)Titanium與MacRuby/Hot Cocoa、PHP或node.js的共同之處實(shí)際上多于它與PhoneGap、Adobe AIR、Corona或Rhomobile的共同之處。Titanium基于移動(dòng)開發(fā)方面的兩個(gè)現(xiàn)實(shí):

•有一套核心的移動(dòng)開發(fā)API,它們可以跨平臺(tái)進(jìn)行規(guī)范。這些方面的重點(diǎn)應(yīng)放在代碼重用上。 

•有針對(duì)特定平臺(tái)的API、用戶界面公約以及功能特性,開發(fā)者在針對(duì)該特定平臺(tái)從事開發(fā)時(shí)應(yīng)該采用。應(yīng)該有針對(duì)特定平臺(tái)的代碼,以便這些用例提供最佳的用戶體驗(yàn)。

由于這些原因,Titanium并不是想“編寫一次、到處運(yùn)行”。我們認(rèn)為,開發(fā)者應(yīng)該使用面向多個(gè)平臺(tái)的優(yōu)秀的、用戶體驗(yàn)增強(qiáng)特性。我們認(rèn)為,必要時(shí),原生應(yīng)用程序應(yīng)充分利用熟悉的、高性能的原生用戶界面窗口組件。不過我們認(rèn)為,原生應(yīng)用程序開發(fā)者沒必要為了繪制長(zhǎng)方形或提出HTTP請(qǐng)求而要學(xué)會(huì)針對(duì)特定平臺(tái)的API。

Titanium試圖借助統(tǒng)一的JavaScript API、針對(duì)特定平臺(tái)的功能特性以及原生性能,實(shí)現(xiàn)代碼重用,從而滿足用戶的預(yù)期要求。你在編寫Titanium應(yīng)用程序時(shí),其實(shí)是用JavaScript來(lái)編寫原生應(yīng)用程序。Titanium應(yīng)該被視作是一種用來(lái)編寫原生應(yīng)用程序的框架,而不是對(duì)你針對(duì)的實(shí)際平臺(tái)予以抽象化。

Titanium的最終用戶工作流、工具和接口

想用Titanium來(lái)開發(fā)原生應(yīng)用程序,開發(fā)者就需要安裝面向iOS和Android的原生工具鏈。不過,這些工具安裝完畢后,開發(fā)者通常只能與TitaniumSDK的腳本接口(如今基于Python)進(jìn)行交互。這一步可以直接通過命令行來(lái)完成,也可以通過我們基于Eclipse的集成開發(fā)環(huán)境(IDE):Titanium Studio來(lái)完成,后一種方式比較常見。

使用Titanium工具集,你可以創(chuàng)建含有配置文件和本地化文件的應(yīng)用程序項(xiàng)目目錄,以及含有圖像、資產(chǎn)和為了運(yùn)行應(yīng)用程序而編寫的JavaScript源代碼的目錄。在默認(rèn)情況下,你不用編輯HTML和CSS文件,除非你想創(chuàng)建同時(shí)含有原生用戶界面和基于HTML的用戶界面的混合型應(yīng)用程序。Titanium應(yīng)用程序可以、而且常常的確采用“混合型”(原生和Web)用戶界面,比如Facebook的原生應(yīng)用程序。這樣一來(lái),開發(fā)者實(shí)際上可以實(shí)現(xiàn)PhoneGap和Titanium,但是這不在本文的討論范圍之內(nèi)。

借助該工具鏈,你的應(yīng)用程序使用面向目標(biāo)平臺(tái)的實(shí)際仿真器/模擬器來(lái)運(yùn)行。TitaniumStudio還提供了逐步調(diào)試、代碼完成及其他IDE級(jí)別的特性。

安裝到設(shè)備上進(jìn)行測(cè)試也通常使用我們的編譯系統(tǒng)來(lái)完成。在Studio中,我們提供了一個(gè)向?qū)Ы缑妫耘渲萌魏未a簽名依賴關(guān)系,然后處理將應(yīng)用程序部署到連接設(shè)備上的任務(wù)。還可以使用原生工具鏈來(lái)部署或包裝你的應(yīng)用程序,如果你喜歡這么做的話。

等到將你的應(yīng)用程序發(fā)布到應(yīng)用程序商店時(shí),我們的編譯系統(tǒng)將為你處理創(chuàng)建最終應(yīng)用程序包的任務(wù)。借助原生工具鏈,這一步在開發(fā)者的機(jī)器上本地完成。上傳過程對(duì)純?cè)鷳?yīng)用程序開發(fā)者來(lái)說(shuō)一樣。

開發(fā)Titanium應(yīng)用程序時(shí),底層的工具鏈大多數(shù)是抽象的。它們是開發(fā)所必不可少的,但是很少要求前后端開發(fā)者直接使用它們。不過,開發(fā)原生應(yīng)用程序這并不抽象。用戶界面是用跨平臺(tái)組件和針對(duì)特定平臺(tái)的組件共同開發(fā)而成的,你的應(yīng)用程序應(yīng)該處理這些事務(wù):后臺(tái)服務(wù)、本地通知、應(yīng)用程序標(biāo)記、配置、活動(dòng)/目的(在Android平臺(tái)上)……所有這些都通過Titanium JavaScript API來(lái)提供。#p#

Titanium是如何工作的?

Titanium應(yīng)用程序后臺(tái)發(fā)生的事情相當(dāng)復(fù)雜。但大致上來(lái)說(shuō),在運(yùn)行時(shí),你的應(yīng)用程序包括三個(gè)主要組件:JavaScript源代碼(內(nèi)嵌在Java或Objective-C文件中,作為編碼字符串來(lái)編譯);用原生編程語(yǔ)言針對(duì)特定平臺(tái)實(shí)現(xiàn)的TitaniumAPI;以及用來(lái)在運(yùn)行時(shí)評(píng)估代碼的JavaScript解釋器(默認(rèn)解釋器是V8,或面向Android的Rhino解釋器,或面向iOS的JavaScriptCore解釋器)。當(dāng)然在瀏覽器中除外,這時(shí)將使用內(nèi)置的JavaScript引擎。
   你的應(yīng)用程序啟動(dòng)后,JavaScript執(zhí)行環(huán)境由原生代碼來(lái)創(chuàng)建,你的應(yīng)用程序源代碼進(jìn)行評(píng)估。被插入到你應(yīng)用程序JavaScript運(yùn)行時(shí)環(huán)境的是我們所說(shuō)的“代理”對(duì)象——這基本上是在原生代碼中有配對(duì)對(duì)象的JavaScript對(duì)象。我們常常俗稱為Titanium應(yīng)用程序中的“JavaScript地帶”(JavaScript land)和“原生地帶”(native land),因?yàn)樗鼈冊(cè)谀撤N程度上彼此并行。代理對(duì)象在JavaScript地帶和原生地帶中同時(shí)存在,充當(dāng)兩者之間的“橋梁”。

在你的JavaScript代碼中,當(dāng)你針對(duì)全局Titanium或Ti對(duì)象調(diào)用函數(shù)時(shí),比如var b = Ti.UI.createButton({title:'Poke Me'});,這將調(diào)用一種會(huì)創(chuàng)建原生用戶界面對(duì)象的原生方法,并創(chuàng)建一個(gè)“代理”對(duì)象(b),向JavaScript提供關(guān)于底層原生用戶界面對(duì)象的屬性和方法。

用戶界面組件(視圖代理)可以在層次體系上加以安排,以創(chuàng)建復(fù)雜的用戶界面。為非可視API(比如文件系統(tǒng)輸入/輸出或數(shù)據(jù)庫(kù)訪問)呈現(xiàn)界面的代理對(duì)象用原生代碼軟來(lái)執(zhí)行,并以同步方式將結(jié)果返回給JavaScript;如果是網(wǎng)絡(luò)訪問等API,則以異步方式返回結(jié)果。

但愿這有助于直接消除Titanium方面的兩個(gè)常見的誤解——第一個(gè)誤解是,Titanium從來(lái)不需要使用Web視圖組件。開發(fā)者可以把Web視圖創(chuàng)建成原生用戶界面窗口組件,但是Web視圖并不用來(lái)評(píng)估Titanium源代碼。第二個(gè)誤解是,JavaScript代碼在Titanium中并不交叉編譯成Objective-C或Java。你的JavaScript源代碼在運(yùn)行時(shí)加以評(píng)估。

擴(kuò)展Titanium

Titanium可以用原生代碼,由非可視功能和用戶界面功能來(lái)擴(kuò)展。通過用原生代碼來(lái)實(shí)現(xiàn)代理接口及/或視圖代理接口,開發(fā)者就能為由JavaScript提供的Titanium應(yīng)用程序創(chuàng)建新的原生功能。我們?yōu)槭褂胕OS和Android平臺(tái)的模塊開發(fā)者提供了用來(lái)創(chuàng)建Titanium自有內(nèi)部接口的同一接口。#p#

Titanium方法的優(yōu)點(diǎn)

由于Titanium的目的是為跨平臺(tái)的原生移動(dòng)開發(fā)提供一種更高級(jí)的API,所以你可以直接訪問一系列廣泛的原生特性和功能,從用戶界面組件、插座接口到通知系統(tǒng)集成。Titanium的目的是,將Titanium應(yīng)用程序和純?cè)鷳?yīng)用程序之間在功能方面的差異縮小到幾乎為零。我們可能從來(lái)不直接支持整個(gè)平臺(tái)的API,但是我們希望能涵蓋90%最常見的用例,并且提供一個(gè)平臺(tái),以便有需要的人可以添加剩余10%的用例。

由于Titanium可以用插入到與應(yīng)用程序其余部分一樣的視圖層次體系的可視組件來(lái)擴(kuò)展,你最終能夠在底層原生平臺(tái)上實(shí)現(xiàn)任何可能的用戶界面。需要使用特殊的原生代碼,讓表格視圖(TableView)以60fps的速度滾動(dòng)?你能做到這一點(diǎn)。想無(wú)縫地集成游戲的OpenGL繪制曲面,同時(shí)用JavaScript保留運(yùn)行循環(huán)的邏輯?你能做到這一點(diǎn)。你可以把這些用戶界面擴(kuò)展直接集成到用核心Titanium API編寫的應(yīng)用程序中。

使用常用的用戶界面窗口組件時(shí),Titanium應(yīng)用程序的外觀和感覺也是這種平臺(tái)的一個(gè)優(yōu)點(diǎn)。不用進(jìn)行可視仿真(或通過應(yīng)用CSS,或者使用OpenGL或Flash渲染用戶界面窗口組件)。當(dāng)你創(chuàng)建NavigationGroup時(shí),它得到iOS上的實(shí)際UINavigationController的支持。動(dòng)畫和行為與原生應(yīng)用程序用戶預(yù)期的相一致,因?yàn)槟闶褂猛瑯拥挠脩艚缑婵丶?/p>

由于Titanium通過JavaScript提供了一種高級(jí)的原生編程API,為用過基于ECMAScript的語(yǔ)言(這門語(yǔ)言擁有眾多開發(fā)者)的任何人大大降低了原生編程方面的準(zhǔn)入門檻。正由于Titanium,阿特伍德定律(Atwood’s Law)依然適用。該定律是指:凡是可以用JavaScript編寫的應(yīng)用程序,最終都會(huì)用JavaScript來(lái)編寫(詳見)。

Titanium方法的缺點(diǎn)

Titanium API的范圍使得添加新平臺(tái)有難度——在一種新的原生平臺(tái)上實(shí)現(xiàn)Titanium API是項(xiàng)艱巨任務(wù)。正由于如此,Titanium平臺(tái)只出現(xiàn)在目前被認(rèn)為最重要的移動(dòng)平臺(tái)上:iOS、Android和Web。

我們的移動(dòng)Web瀏覽器支持還沒有達(dá)到可以投放市場(chǎng)的質(zhì)量——我們?cè)诶^續(xù)致力于改進(jìn)我們的用戶界面窗口組件集的性能和感覺上,同時(shí)完善核心Titanium API的實(shí)現(xiàn)。

由于Titanium提供的抽象層很龐大,我們自己的內(nèi)部框架仍存在API實(shí)現(xiàn)未達(dá)到最佳標(biāo)準(zhǔn)的問題。在一些情況下,一些用戶界面組件還無(wú)法做到性能與原生用戶界面組件一樣好,比如布局高度定制化的非常龐大的表格視圖。優(yōu)化核心的用戶界面組件對(duì)我們團(tuán)隊(duì)來(lái)說(shuō)仍是首要的技術(shù)任務(wù)。由于我們?nèi)諠u克服缺陷、硬件日臻完善,我們看到這不再是個(gè)問題。我們還發(fā)現(xiàn),許多情況下需要運(yùn)用信息架構(gòu),對(duì)龐大數(shù)據(jù)集而言更是如此。

另外由于Titanium平臺(tái)的宏偉目標(biāo),擴(kuò)展Titanium并非易事。想有效地集成一種新的原生控件或API,深入了解Titanium的架構(gòu)和環(huán)境必不可少。開發(fā)者體驗(yàn)、API文檔和面向模塊開發(fā)者的總體指南。因我們最新的2.0版本而有了大幅改進(jìn),但仍是我們關(guān)注的一個(gè)方面。#p#

理念方面的差異

至此,我希望PhoneGap和Titanium技術(shù)方面的差異已很明了。但是除了那些差異外,每個(gè)項(xiàng)目的目的和方向也不同。PhoneGap的既定目標(biāo)是最終不復(fù)存在。如前所述,PhoneGap旨在成為實(shí)現(xiàn)設(shè)備方面新興瀏覽器標(biāo)準(zhǔn)的主要手段。從理論上來(lái)說(shuō),一旦瀏覽器廠商實(shí)現(xiàn)了PhoneGap的特性,這個(gè)平臺(tái)將再也沒有必要。PhoneGap本身不想成為一種平臺(tái)——它是把類似原生應(yīng)用程序的功能添加到Web應(yīng)用程序的一種插件(shim)。Web旨在成為這樣的平臺(tái)。

PhoneGap新的贊助公司Adobe對(duì)于Web作為一種平臺(tái)日臻完善也有著非常濃厚的興趣。近幾個(gè)月來(lái),Adobe一直在不遺余力地生產(chǎn)能夠開發(fā)HTML 5/CSS 3 Web應(yīng)用程序的工具。在我及其他許多人看來(lái),由于標(biāo)準(zhǔn)Web技術(shù)不斷發(fā)展,Adobe顯然認(rèn)為Flash的角色日漸式微。

就本質(zhì)而言,Adobe是一家主攻工具的公司。平臺(tái)其實(shí)是Adobe可用來(lái)銷售工具的一個(gè)渠道。這個(gè)平臺(tái)一度是Flash。而現(xiàn)在,除了Flash外,這個(gè)平臺(tái)主要還是Web瀏覽器。我不知道PhoneGap在Adobe的產(chǎn)品路線圖中到底扮演怎樣的角色,但是從許多方面來(lái)看,它起到了與Flash相似的用途。PhoneGap試圖建立一種抽象的運(yùn)行時(shí)環(huán)境,能夠?qū)崿F(xiàn)跨平臺(tái)部署。

如果Adobe能銷售為Web進(jìn)行開發(fā)的工具,Web又可以用來(lái)開發(fā)更多種類的應(yīng)用程序,那么這對(duì)Adobe來(lái)說(shuō)顯然是一大勝利。順便說(shuō)一下,這很好——銷售工具沒什么不對(duì)。

不過值得一提的是,Adobe并不是Cordova項(xiàng)目的管理機(jī)構(gòu),如今PhoneGap基于該項(xiàng)目。這個(gè)項(xiàng)目歸Apache軟件基金會(huì)擁有和管理。這兩個(gè)項(xiàng)目之間會(huì)產(chǎn)生怎樣的相互影響仍需拭目以待;但是我的直覺認(rèn)為,它們不會(huì)出現(xiàn)很大的分歧。我認(rèn)為,這兩個(gè)項(xiàng)目的目的在理念上仍會(huì)保持一致。

Appcelerator也對(duì)Web作為一種平臺(tái)日臻完善抱有興趣,并給予了支持。當(dāng)Web作為一種應(yīng)用程序平臺(tái)變得更強(qiáng)大,大家都是贏家。區(qū)別在于,我們認(rèn)為Web是其中一種出色的平臺(tái),具有獨(dú)有的特性和一系列優(yōu)缺點(diǎn)。我們并未指望Web成為唯一的移動(dòng)應(yīng)用程序平臺(tái)。我們認(rèn)為,iOS、Android、黑莓和WindowsPhone之類的平臺(tái)繼續(xù)頗具影響力,為用戶們提供出色的體驗(yàn)。這種選擇和競(jìng)爭(zhēng)對(duì)消費(fèi)者來(lái)說(shuō)將是件好事,但是對(duì)開發(fā)者來(lái)說(shuō)仍是個(gè)問題。

我們期望通過Titanium為開發(fā)者提供的是這樣一種方式:借助單一代碼庫(kù),同時(shí)涵蓋Web平臺(tái)和原生平臺(tái),同時(shí)保留該平臺(tái)的用戶所期望的特性、性能以及緊密的平臺(tái)集成。我們期望為移動(dòng)客戶端開發(fā)建立一種持久不衰的平臺(tái),而服務(wù)和工具可以加快這個(gè)過程。我們不是一家主攻工具的公司——我們是一家平臺(tái)公司,我們的成功將與使用我們平臺(tái)的開發(fā)者的成功息息相關(guān)。隨著時(shí)間的推移,我們希望打造一家開源平臺(tái)公司,本著紅帽及該領(lǐng)域其他巨頭的精神。

哪種工具或方法適合你?就像軟件開發(fā)領(lǐng)域的所有方面一樣,這得看情況。沒有什么萬(wàn)能的技術(shù)。不過但愿這番描述和比較會(huì)幫助你做出適合自己情形的選擇。

原文地址:

http://developer.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap.html

 

【51CTO譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請(qǐng)注明原文出處、作者及51CTO譯者!】

 

責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2012-02-09 16:45:41

2010-03-17 09:22:06

FlashSilverlight

2010-10-09 15:01:27

PhoneGapiPhoneAndroid

2012-06-14 09:42:20

跨平臺(tái)工具AppceleratoTitanium

2011-12-03 19:59:11

HTML 5Titanium

2016-05-16 09:32:04

移動(dòng)開發(fā)工具技術(shù)

2017-03-10 06:49:00

原生跨平臺(tái)PhoneGap

2012-07-06 13:50:44

跨平臺(tái)工具Adobe Phone

2013-09-10 10:44:39

移動(dòng)開發(fā)工具游戲引擎

2011-10-31 13:13:48

PhoneGapAppMobi

2011-03-28 10:01:59

Windows AzuVMware vFab

2015-01-23 01:06:16

英巴卡迪諾跨平臺(tái)開發(fā)RAD Studio

2010-07-14 13:38:51

Perl開發(fā)工具

2012-06-27 17:25:52

VisionMobil跨平臺(tái)開發(fā)工具

2016-06-06 17:26:22

平臺(tái)開發(fā)

2012-03-07 16:15:22

GWTPhoneGap

2012-02-01 09:59:05

TitaniumPhoneGapiOS

2011-12-23 09:53:24

PhoneGap

2014-03-12 10:00:26

移動(dòng)開發(fā)跨平臺(tái)

2017-10-25 08:53:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲自拍在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 韩国日本在线视频| 91社区在线观看| 激情六月婷婷久久| 久久久久久久久爱| 亚洲一区 欧美| 综合激情久久| 欧美系列日韩一区| 97av中文字幕| 国产片在线观看| 国产美女精品人人做人人爽| 91大神在线播放精品| 国产传媒视频在线| 精品女人视频| 欧美精品在线一区二区三区| 天天夜碰日日摸日日澡性色av| 国产二区视频在线观看| 成人污视频在线观看| 国产精品美女在线| 欧美成人精品欧美一级乱黄| 国产精品久久久久久久久妇女| 日韩av在线播放资源| 亚洲高清视频免费| 国产成人精品一区二三区在线观看 | 亚洲婷婷综合色高清在线| 精品一区二区三区自拍图片区| 亚洲天堂久久久久| 免费中文字幕日韩欧美| 欧美大片免费看| 亚洲色偷偷综合亚洲av伊人| blacked蜜桃精品一区| 亚洲成av人片在线观看香蕉| www.亚洲自拍| 日韩毛片网站| 欧美日韩国产影片| 999精品视频在线| 在线最新版中文在线| 亚洲一区二三区| 欧美性受黑人性爽| 午夜视频成人| 国产精品色在线观看| 人禽交欧美网站免费| 色婷婷av一区二区三区之红樱桃 | 91色在线看| 亚洲精品免费视频| 潘金莲一级淫片aaaaa免费看| 成年网站在线| 国产欧美精品一区| 日韩精品久久一区| 韩国福利在线| 久久久国产精品午夜一区ai换脸| 麻豆成人在线播放| 女人偷人在线视频| 久久精品日韩一区二区三区| 欧美在线3区| 国产区视频在线播放| 日本一区二区三区久久久久久久久不 | 青青视频在线观| 2017欧美狠狠色| 欧美精品二区三区四区免费看视频 | 在线免费观看高清视频| 麻豆成人综合网| 香蕉久久aⅴ一区二区三区| 国产综合成人久久大片91| 国产欧美精品日韩精品| 在线播放国产一区| 极品美女销魂一区二区三区免费 | 中文字幕av久久爽| 日本vs亚洲vs韩国一区三区二区| 国产精品爽黄69天堂a| 97精品久久人人爽人人爽| 国产综合色在线| 国产成人精品福利一区二区三区 | 久久久久9999亚洲精品| 日产精品一线二线三线芒果| 欧美一区二区三区在线观看免费| 日韩美女久久久| 欧美中日韩在线| 亚洲男人av| 欧美日韩视频第一区| 五月六月丁香婷婷| 成人另类视频| 在线观看日韩欧美| 欧美三级小视频| 国产亚洲永久域名| 国产日韩欧美日韩| xxxwww在线观看| 久久久国产综合精品女国产盗摄| japanese在线视频| 日韩伦理福利| 4438亚洲最大| 波多野结衣福利| 婷婷综合伊人| 91干在线观看| 国产乱码精品一区二区| 99精品国产热久久91蜜凸| 亚洲电影免费| 国产在线美女| 9191精品国产综合久久久久久| 中文字幕视频观看| 欧美日韩中字| 97在线看福利| 国产免费无遮挡| 久久久精品免费免费| 欧美另类videosbestsex日本| 中文字幕在线视频久| 91精品国产综合久久国产大片| 国产一级二级在线观看| 午夜精品视频| 国产精品美女www| 桃花色综合影院| 亚洲精品成人悠悠色影视| 国产视频一区二区三区在线播放| 18国产精品| 中文字幕亚洲欧美日韩在线不卡| 日本熟妇毛耸耸xxxxxx| 国产一区二区视频在线播放| 日本一区二区精品| 欧亚av在线| 亚洲精品在线三区| 久久久久久久麻豆| 免费看精品久久片| 欧美日韩天天操| а√天堂资源官网在线资源| 日韩一区二区电影在线| 免费成人深夜蜜桃视频| 久久中文在线| 美女黄毛**国产精品啪啪| 国产蜜臀一区二区打屁股调教| 91精品一区二区三区在线观看| 中文字幕在线观看免费高清| 国产农村妇女精品一二区| 国产精品自拍首页| 中文字幕伦理免费在线视频 | 国产久一一精品| 天堂在线一二区| 午夜亚洲福利老司机| 2018国产精品| 欧美激情精品久久久六区热门| 91精品国产自产在线| 成人不用播放器| 欧美系列亚洲系列| 亚洲色图欧美色| 日本sm残虐另类| 亚洲成人第一| 欧美天堂一区二区| 日韩在线观看免费全| 一卡二卡三卡在线| 最新热久久免费视频| 国产美女视频免费看| 国产韩日影视精品| 91色p视频在线| 成年人黄视频在线观看| 日韩视频一区二区三区| 国产一二三四在线| 成人毛片老司机大片| 无码中文字幕色专区| 羞羞色国产精品网站| 日韩免费观看av| 999在线视频| 日韩一区二区三区高清免费看看 | 欧美日韩a区| 好吊色欧美一区二区三区四区| av男人的天堂在线观看| 日韩激情视频在线| 国产日韩久久久| 国产精品第13页| 美女又黄又免费的视频| 精品99视频| 久久国产精品精品国产色婷婷| 欧美电影免费看| 视频直播国产精品| av中文字幕免费| 五月综合激情日本mⅴ| 国产精品20p| 韩国一区二区三区| 国产真人做爰毛片视频直播 | 亚洲色图第一页| 中文字幕av影视| 一区二区三区小说| 日本高清www| 国产一区视频导航| 波多野结衣家庭教师在线| 国产影视精品一区二区三区| 成人免费黄色网| 在线天堂资源www在线污| 搡老女人一区二区三区视频tv| 北条麻妃一二三区| 91福利精品视频| 免费网站看av| 国产女主播视频一区二区| 一卡二卡三卡四卡五卡| 久久99伊人| 一二三四中文字幕| 欧美精品一区二区三区精品| 亚洲一区二区三区久久 | 亚洲黄色视屏| 亚洲精品自在在线观看| 豆花视频一区二区| 国产精品视频导航| 岛国av在线播放| 久久精品国产一区二区三区| 神马亚洲视频| 日韩精品一区二区三区四区视频| 日韩综合在线观看| 一区二区三区高清在线| youjizz亚洲女人| 99re亚洲国产精品| 黑人无套内谢中国美女| 美女视频一区在线观看| 男人日女人bb视频| 国产综合网站| 香蕉视频在线网址| 精品国产91乱码一区二区三区四区 | 永久免费黄色片| 日韩vs国产vs欧美| 午夜免费福利小电影| 欧美a级在线| 在线成人性视频| 色琪琪久久se色| 日本免费高清不卡| 日韩高清影视在线观看| 99精品99久久久久久宅男| 性欧美video另类hd尤物| 国产激情视频一区| 神马久久午夜| 97视频在线观看网址| 高清电影在线免费观看| 欧美精品日韩三级| 国产精品一区二区三区视频网站| 在线亚洲午夜片av大片| 日本不卡视频一区二区| 亚洲精品电影网站| 天堂中文在线看| 亚洲第一视频网站| 黄色片网站免费在线观看| 日韩一区二区麻豆国产| 99国产成人精品| 91精品国产综合久久久久久久久久 | 日韩激情视频| 俺要去色综合狠狠| 香蕉久久夜色| 日韩理论片av| 中文字幕一区二区三区5566| 欧美gay男男猛男无套| 色视频一区二区三区| 成人精品亚洲| 黄色www在线观看| 亚洲h色精品| 91精品国产吴梦梦| 欧美日韩99| 国产免费观看高清视频| 羞羞答答国产精品www一本| 97成人在线观看视频| 美女尤物久久精品| 日韩免费高清在线| 蜜臀精品一区二区三区在线观看 | 国产乱码精品一区二三区蜜臂| 911精品国产一区二区在线| 国产乱色精品成人免费视频| 欧美一区二区不卡视频| 亚洲免费一级片| 亚洲精品美女久久| 国产视频二区在线观看| www亚洲精品| 欧美人与牲禽动交com| 91sa在线看| 成人交换视频| 亚洲free嫩bbb| 日韩激情啪啪| 一本色道久久99精品综合| 欧美区日韩区| 日韩av在线综合| 国内外成人在线视频| 娇妻高潮浓精白浆xxⅹ| 久久影院午夜片一区| 中文乱码字幕高清一区二区| 亚洲一区在线观看免费| 欧美精品一二三四区| 欧美精品粉嫩高潮一区二区| 日韩一级在线播放| 一本久久综合亚洲鲁鲁| 任你弄在线视频免费观看| 亲爱的老师9免费观看全集电视剧| 91精品美女| 不卡日韩av| 欧美在线观看视频一区| 国产午夜精品视频一区二区三区| 国产精品日本欧美一区二区三区| 亚洲色图久久久| 99久久伊人久久99| 三级黄色免费观看| 精品久久久久久| 国产麻豆免费观看| 亚洲男人第一网站| 色呦呦在线看| 国产精品视频久| 欧美a大片欧美片| 老司机午夜网站| 美女尤物久久精品| 亚洲av无码专区在线播放中文| 国产蜜臀97一区二区三区| 国产一级一片免费播放| 欧美日韩成人综合天天影院 | 国产激情在线观看视频| 国v精品久久久网| 国产成人在线网址| 欧美午夜精品久久久久久浪潮| 国产精品一级视频| 亚洲午夜性刺激影院| 91九色在线播放| 亚洲最大福利视频网| 成人羞羞动漫| 日韩欧美在线播放视频| 成人一区二区视频| 国产精品老熟女一区二区| 欧美日韩精品一区二区三区 | 国产成人福利av| 黄色网址在线免费看| 日本欧洲一区二区| 人妻少妇一区二区| 亚洲.国产.中文慕字在线| a级片在线视频| 日韩三级影视基地| 秋霞国产精品| 日韩理论片在线观看| 国产精品嫩草99av在线| 亚洲男女在线观看| 亚洲成人自拍网| 国产 日韩 欧美 综合| 欧美人与物videos| 国产麻豆精品| 今天免费高清在线观看国语| 美女视频黄免费的久久| 手机毛片在线观看| 色94色欧美sute亚洲13| 九色在线视频蝌蚪| 日本道色综合久久影院| 婷婷激情久久| 国产综合免费视频| 久久久久久久久久久99999| 国产日产精品一区二区三区| 日韩av在线不卡| 一区二区三区短视频| 精品一区国产| 久久亚洲风情| 老头老太做爰xxx视频| 精品视频在线免费看| 日本免费视频在线观看| 91精品久久久久久久久久久| 欧美aaaa视频| 性折磨bdsm欧美激情另类| 亚洲一区在线观看网站| 午夜福利一区二区三区| 日本乱人伦a精品| 日韩欧美一区二区三区在线视频| 91看片就是不一样| 国产精品美女一区二区在线观看| 艳妇乳肉豪妇荡乳av| 欧美巨乳美女视频| 免费萌白酱国产一区二区三区| 久久9精品区-无套内射无码| 国产午夜亚洲精品午夜鲁丝片| 国产第一页在线观看| 最近日韩中文字幕中文| 粉嫩av国产一区二区三区| 男人的天堂avav| 久久精品亚洲乱码伦伦中文 | 一区精品在线| 国产激情一区二区三区四区| 中文字幕一区二区三区手机版 | 麻豆av免费在线观看| 99久久精品免费看国产一区二区三区 | 美日韩精品视频免费看| 亚洲精品观看| 无码人妻丰满熟妇区毛片18| 国产精品久久久一本精品| 精品国产亚洲一区二区麻豆| 97avcom| 99免费精品| 国产精品无码在线| 欧美一a一片一级一片| 18网站在线观看| 欧美高清视频一区| 国产乱国产乱300精品| 久久久久久久久久久久久久av| 综合欧美国产视频二区| jizz18欧美18| 手机看片一级片| 午夜精品久久一牛影视| 最新国产在线观看| 精品久久久久久亚洲| 狠狠网亚洲精品| 探花视频在线观看| 欧美人与物videos| 日韩av久操| 亚洲狠狠婷婷综合久久久久图片| 欧美高清一级片在线| 波多野结衣久久精品|