原生對跨平臺:PhoneGap、Titanium、Xamarin三大應用開發(fā)方案優(yōu)劣匯總
譯文【51CTO.com快譯】時至今日,企業(yè)在個人乃至內(nèi)部團隊開發(fā)者的支持與合作之下不斷推出大量新型移動應用。面對如此龐大的應用生態(tài)圈,認真規(guī)劃并調(diào)整戰(zhàn)略性技術(shù)決策無疑有助于確保應用的成功發(fā)布并獲得良好的市場反響。而在實際構(gòu)建相關(guān)平臺之前用戶界面(簡稱UI)、用戶體驗(簡稱UX)以及必要功能自然是首先需要明確的要素。而后,則應考慮如何采取適當舉措以推動開發(fā)流程。
事實上,單純是原生抑或跨平臺這一決策已經(jīng)能夠帶來諸多后續(xù)影響。應用開發(fā)所選擇的首要平臺及編程語言在產(chǎn)品對用戶的直觀性以及受眾類型方面發(fā)揮著巨大作用。例如,您的應用是否只能在Android或者iOS中的一類設備上使用?原生抑或跨平臺這一決策最終取決于您的實際業(yè)務目標,且其各自都有著自己的優(yōu)勢與缺點。
原生應用
原生應用采用面向特定平臺的編程語言構(gòu)建。在Android方面,其為Java; 在Windows上則為C#、VB .NET或者C/C++; iOS平臺則為Objective-C或Swift。這些應用需要從零開始進行構(gòu)建,且僅能夠在指定平臺上運行。
優(yōu)勢
- 用戶界面 (UI) – 應用的外觀以及整體使用方式能夠決定其最終成功與否。由于原生應用能夠與其創(chuàng)建平臺無縫對接,因此用戶能夠使用其更為熟悉的界面。這有助于帶來更為積極的用戶體驗,并鼓勵用戶長期使用。
- 性能(UX) – 原生應用開發(fā)中往往涉及大量媒體(例如圖像、視頻或動畫)資源,因此需要進行大量交互與數(shù)據(jù)處理操作。在這方面,原生應用表現(xiàn)更好,因為其原生代碼能夠直接調(diào)用操作系統(tǒng)的獨特硬件與軟件功能,且?guī)缀醪淮嬖谌魏螠蟋F(xiàn)象。另外,使用本機代碼開發(fā)復雜應用能夠最大程度降低應用卡頓或者崩潰風險。
- 更佳排位–原生應用通常在用戶中口碑更佳,且能夠在應用商店中得到大力推薦。另外,原生應用也能夠憑借著出色的性能與用戶友好型界面得到受眾的高度認同。
- 平臺集成–原生應用往往能夠在指定平臺上順暢運行,這意味著其功能可以根據(jù)用戶偏好進行自定義,并讓用戶擁有將其作為自身移動設備之上固有組成部分的感覺。
缺點
- 耗時– 面向多種平臺開發(fā)原生應用往往更為耗時,因為同樣的代碼無法直接運行在其它平臺之上,這意味著開發(fā)者需要耗費額外時間進行代碼轉(zhuǎn)換甚至重寫。
- 對開發(fā)技能要求更高–欲面向多種平臺開發(fā)原生應用,企業(yè)需要擁有更多技能水平更高的開發(fā)者。取決于您所選定的平臺類型,跨平臺原生應用開發(fā)至少需要兩名開發(fā)者——其一負責進行Android版本開發(fā),其二負責iOS版本開發(fā)。
- 高成本 – 開發(fā)者數(shù)量的增加意味著開發(fā)成本也將快速提升。再加上更為漫長的項目開發(fā)流程,企業(yè)可能需要將整體預算翻倍甚至再次翻倍。
跨平臺
跨平臺應用所使用的代碼可根據(jù)具體操作系統(tǒng)進行定制,而后再行發(fā)布。這種多合一式解決方案能夠讓單一應用運行在多種平臺之上,因此受到廣大關(guān)注時間與成本的企業(yè)與開發(fā)者的熱烈歡迎。
優(yōu)勢
- 節(jié)約時間–與原生應用不同,跨平臺應用開發(fā)可采用單一代碼庫面向多種系統(tǒng)平臺,從而幫助企業(yè)節(jié)約由代碼重寫及平臺定制所帶來的時間消耗。
- 成本低廉–企業(yè)能夠有效削減開發(fā)項目的人員數(shù)量與成本水平。這種“一次編寫,隨處運行”的代碼能夠顯著提升開發(fā)效率并加快部署速度。
- 利潤最大化–除了節(jié)約成本外,跨平臺應用還能夠同時在多種平臺及用戶市場上取得影響力,最終實現(xiàn)利潤最大化。
- 螝于啟動及更新–企業(yè)可以首先啟動應用,并隨后根據(jù)需要面向多套平臺同步推出更新。
缺點
- 性能延遲 - 跨平臺應用往往無法像原生應用那樣與運行平臺無縫對接。因此,此類應用通常會因代碼不能同設備硬件或軟件功能順暢協(xié)作而引發(fā)卡頓或者延遲。
- 以特性換通用 – 由于共享同一套代碼庫,因此跨平臺應用無法完美與當前平臺相集成,這意味著用戶往往不能充分利用平臺內(nèi)的某些功能,例如預設手勢、攝像頭甚至麥克風。
PhoneGap
PhoneGap,亦被稱為Apache Cordova,是一款高人氣開源平臺,可用于創(chuàng)建跨平臺/混合應用。其采用JS、HTML 5以及CSS 3編程語言。
優(yōu)勢
- 編程語言熟知度高 – 由于PhoneGap采用JS、HTML 5與CSS 3等高人氣語言,因此開發(fā)者能夠輕松上手并開始使用。這不僅能夠減少相關(guān)培訓需求,同時也使得企業(yè)能夠更快向市場推出應用開發(fā)成果。
- 易在應用商店中被發(fā)現(xiàn) – PhoneGap應用的安裝方式與原生應用類似,因此能夠在應用商店中獲得理想的曝光度。
- 插件架構(gòu)– PhoneGap采用一套靈活的插件架構(gòu),能夠以模塊化方式擴展原生設備API。
- 無許可成本– PhoneGap是一套開源項目且可免費使用,因此企業(yè)無需承擔任何許可成本。
- 提供大量庫–開發(fā)者能夠輕松訪問并尋求各類資源庫的幫助,從而增強自有應用功能。
缺點
- 性能 – PhoneGap應用的性能表現(xiàn)常常受到批評。一旦應用架構(gòu)中存在大量圖形或者復雜元素,則可能導致應用無響應甚至崩潰。
- 插件 – 在多數(shù)情況下,開發(fā)者必須使用特定插件以避免對其原生指定屬性產(chǎn)生干擾。PhoneGap擁有一套靈活的插件友好型架構(gòu),開發(fā)者能夠根據(jù)需要選擇必要插件或者自行開發(fā)插件。然而,如果開發(fā)者無法找到適用的插件或者無法輕松編寫自有插件,則開發(fā)過程將遭遇嚴重延后。
- 缺少說明文檔– PhoneGap的用戶指南含糊不清且與用戶界面有關(guān)的指導性文件缺少部分關(guān)鍵性信息。另外,其中尚不提供可用于強化跨平臺應用開發(fā)的最佳實踐信息。
- 內(nèi)存丟失 - 由于PhoneGap缺少緩存/內(nèi)存管理功能,因此經(jīng)常出現(xiàn)內(nèi)存丟失問題。
Titanium
Appcelerator Titanium是一套可用于開發(fā)桌面、原生移動以及跨平臺應用的開源開發(fā)平臺。目前市面上已經(jīng)有超過3萬5千款利用JS、HTML 5、jQuery以及CSS 3等語言在Titanium中開發(fā)完成。
優(yōu)勢
- 編程語言熟知度高 – Titanium采用JS、HTML 5與CSS 3等高人氣語言,因此開發(fā)者能夠輕松上手并開始使用。
- 可訪問各先進功能 – Titanium擁有獨立的API以訪問設備上的各項功能,包括攝像頭、麥克風、觸控屏幕以及GPS。這意味著用戶能夠?qū)itanium應用作為其設備中的固有組成部分并獲得良好的使用體驗。
- 即時反饋 – Titanium能夠縮短應用開發(fā)時間,允許開發(fā)者以更少代碼進行應用構(gòu)建。這意味著開發(fā)者能夠快速構(gòu)建應用原型設計,并根據(jù)即時反饋評估用戶與UI間的交互方式與效果。
- 龐大的技術(shù)社區(qū) – Titanium/Appcelerator社區(qū)擁有超過20萬名開發(fā)者,并開放對其Open Mobile Marketplace的訪問。開發(fā)者能夠在這里購買、出售及共享各類模塊、模板、設計元素以及面向Web服務的擴展。
缺點
- 復雜性更高– 應用復雜性的提升亦會引發(fā)成本增長。開發(fā)者在遭遇大量崩潰及bug等問題時往往需要投入更多時間與精力加以調(diào)試,這在無形中拉高了代碼組織與多平臺支持維護的成本。
- 靈活性有限 – 盡管Titanium的API對代碼行數(shù)要求更低,因此能夠幫助開發(fā)者節(jié)約時間,但這種限制亦會導致應用復雜性上升的問題。另外,其還有可能引發(fā)應用中的延遲及其它持續(xù)性問題。
- 功能不穩(wěn)定 – Appcelerator提供StoreKit模塊,旨在實現(xiàn)指向蘋果App Store的應用內(nèi)購機制。然而這一功能非常不穩(wěn)定,且有時無法正常起效。該模塊的部分功能極大影響了Titanium的免費增值定價策略。事實上,這款免費下載的軟件運行狀態(tài)極差,且根本無法實現(xiàn)有效的內(nèi)購效果。而這種不穩(wěn)定性甚至導致部分用戶徹底放棄相關(guān)應用。
- 工具包故障 – 可能很多開發(fā)者都有同感,即自從Titanium Studio(一套基于Eclipse的IDE)出現(xiàn)后,Titanium的學習成本開始大幅增加。Titanium Studio存在諸多問題,最嚴重的就是會在構(gòu)建過程中忽略部分變更。這迫使開發(fā)者必須在每次更改后進行項目清理,或者使用新項目進行完全重新啟動。
Xamarin
自2011年發(fā)布以來,這款知名框架就被廣泛應用于跨平臺應用開發(fā)。通過API,Xamarin應用能夠以原生方式同iOS、Android以及Windows等設備上的攝像頭、GPS等功能進行通信。
優(yōu)勢
- 一套代碼玩轉(zhuǎn)全部平臺 – Xamarin采用C#與.NET框架相結(jié)合的方式,確保應用能夠在多平臺上正常運行。這意味著開發(fā)者能夠復用大部分源代碼以加快開發(fā)流程。Xamarin還能夠與Visual Studio及Xamarin IDE協(xié)作,開發(fā)者無需在不同開發(fā)環(huán)境間往來切換。
- 模擬原生 – 由Xamarin開發(fā)而成的跨平臺應用在理論上可以被劃歸原生應用,因為其性能指標高度類似于針對單一平臺的原生應用。另外,Xamarin應用亦可在應用商店中享受到原生應用的待遇。
- 原生UX – Xamarin允許用戶面向各平臺定制其UI。通過使用Xamarin.Forms工具,開發(fā)者能夠構(gòu)建跨平臺應用并為其配備有針對性的UI組件。為了實現(xiàn)更理想的性能表現(xiàn),開發(fā)者還可以使用Xamarin.iOS或Xamarin.Android工具開發(fā)具備原生使用體驗的高速、可靠跨平臺應用。
- 功能 – 利用Xamarin,所有硬件兼容性問題都將不復存在。Xamarin允許開發(fā)者訪問多種平臺指定型API,并能夠接入原生庫以無縫實現(xiàn)多設備平臺跨越,且舉帶來任何功能或者性能問題。
- 無需昂貴的許可成本 – 在微軟于2016年年中收購Xamarin之前,Xamarin的許可費用高達每開發(fā)者、每平臺1000美元。這意味極小的開發(fā)者團隊即會給企業(yè)帶來高昂的許可成本。然而自收購之后,微軟開始免費將Xamarin提供給Visual Studio用戶,且目前亦在將其打造為真正的開源平臺。
缺點
- 社區(qū)規(guī)模較小 – Xamarin在過去幾年中的發(fā)展速度比較穩(wěn)定,且大多數(shù)追隨者來自微軟。由于社區(qū)規(guī)模較小,因此尋找有經(jīng)驗的Xamarin開發(fā)者可能并不輕松。
- 需要更為廣泛的技能儲備 – Xamarin廣泛使用.NET開源資源及其它開源技術(shù),因此希望使用Xamarin的朋友需要熟練掌握.NET,同時具備JS或者Objective-C等其它特定平臺的專業(yè)知識。
- 應用體積 – Xamarin需要大量操作性軟件以實現(xiàn).NET框架與平臺特定操作系統(tǒng)間的代碼與引用鏈接,這意味著其應用的體積相對更大。
原文標題:Native vs Cross-Platform App Development: Pros and Cons of PhoneGap, Titanium, and Xamarin
原文作者:Prem Khatri
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】