該如何選擇適合你的移動開發路線?
譯文【51CTO譯文】毫無疑問的是:如今企業已經開始以嚴肅認真的態度看待移動商務類應用程序的開發及交付工作。然而無論企業的最終目標是借此傳播信息、推銷產品、與業務伙伴加深合作抑或是將移動應用本身作為產品加以市場推廣,移動平臺的更新與進化永遠是不變的趨勢,這就使得許多IT部門需要在選擇***系統版本方面下一番苦功——除此之外,使用哪些工具與執行方案才能讓自己的應用產品在正確的時間交付給正確的受眾也是一項大問題,而這些與設備本身毫無關系。
在這些新興企業應用當中,有一些項目的設計壽命周期較短,其中尤以旅游指南類應用為甚;而其它應用則往往能夠在未來的數年內持續發揮作用。而以增強現實類閱讀器為代表的一類應用則需要不斷收集實時信息、訪問手機的各項底層功能,例如用戶當前地理位置、攝像頭、陀螺儀及運動傳感器等等。另有一些應用則對移動設備的屏幕尺寸及用戶手勢操作方案提出更高的要求。盡管應用程序林林總總,但它們都具備一大共同點,即每家企業都希望以盡可能低廉的成本與最短的周期來進行應用開發,而且需要應用產品能夠運行于多種系統平臺之上——至少要支持Android、iOS以及Windows Phone。
顯而易見,這樣的需求催生了開發工具市場的一派繁榮景象。不過在浩如煙海的開發方案中做出選擇也絕非易事,目前還沒有任何一款工具能同時滿足周期短、成本低、功能豐富這三大應用程序開發需求。而且一旦在進行選擇時稍有不慎,大家就可能發現自己的開發方案無法順應時代潮流以及用戶的***訴求——就以Facebook為例,他們在全身心投入HTML5懷抱后才發現這套新機制與iOS應用很難協調一致,這可真是欲哭無淚的悲劇性結局。
要想做出正確決策,關鍵在于認真評估我們的應用程序產品在當前及未來所要面對的潛在需求,并在滿足用戶需求與縮短應用開發周期之間找出恰到好處的平衡點。千萬別在一棵樹上吊死,我們的應用程序絕不能只針對某一款特定系統平臺。積極接納多種開發平臺,滿足各類用戶群體的心理預期才是合理的發展方向。在下面的文章中,我將與大家系統展開討論,看看如何才能針對移動開發需求選擇正確的前進路線。
移動應用程序開發的三條陽關大道
移動應用開發方案分為三種不同類型,即Native、Web與Hybrid。要想明智地選擇開發方案,首先要對三者的優勢與缺點了然于胸。在搞清狀況之后,我們才能決定應用程序的復雜程度并選擇產品的目標運行設備。如果大家希望用戶早一點開始使用自己的應用產品,那么對功能及特性進行簡化是必不可少的手段——簡潔明了的特色一方面讓我們的程序擁有鮮明的市場定位,同時也能讓我們在選擇應用程序框架時少走彎路、縮短開發周期。
雖然最基本的跨平臺特性也需要支持至少三大主流系統,但這并不代表我們的應用程序開發成本也將隨之提高到三倍。然而如果我們在經過謹慎的市場調查后決定在特定的某一款移動操作系統上全力一搏,整個開發過程的時間及資金成本仍然會得到顯著削減。總而言之,跨平臺特性帶來的開銷并沒有想象中那么大,但也絕沒小到可以忽略不計,因此大家必須認真權衡成本、人力投入以及產品交付周期,看看跨平臺到底能不能為我們賺回票價。
純Native應用能夠提供最理想的設備契合度與用戶體驗,但卻對開發人員的技術水平有著嚴格要求,同時也需要投入大量時間。純Web類應用程序——包括那些利用WebKit偽裝成Native應用的類型——在部署效率方面效果拔群,但局限性也同樣明顯。除二者之外,Hybrid型應用程序開發也應時而生,它將Native預創建容器與動態Web代碼加以結合,試圖打造兼具二者優勢的新型開發方案。然而一旦采取這種方案,我們的整個開發流程就會被束縛在特定的某一家軟件服務商身上,由此帶來的局限性與問題同樣令人頭痛。
一旦選定了開發方案,我們接下來就要準備好采購對應的移動開發工具包。如果大家剛剛開始與移動應用開發工作打交道,希望能夠以測試為監控工具嚴格按照預期的時間及規劃進行產品研發,那么請務必重視自己這次小試牛刀的機會。作為***款應用產品,我們一方面要努力在預定周期內完成開發工作,另一方面則不妨降低對于功能性的預期,以樸實穩健的態度完成自己的試水。#p#
移動應用開發的***條陽關大道:Native應用開發方案
針對單一移動操作系統進行Native應用開發可以說是移動開發領域最為傳統的解決方案,但它的開發周期也是最長的。由于各家移動平臺供應商所提供的編程環境完全不同,加之各系統的用戶界面風格也大相徑庭,這就導致跨平臺成為開發人員心中永遠的噩夢。蘋果的iOS設備的Xcode IDE采用專門的Objective-C語言,而谷歌的Android編碼器則一般采用開源Eclipse IDE與Android的原生Android開發工具(簡稱ADT)Java編程插件組合。微軟公司則專門為Windows移動設備準備了Visual Studio Express以及Windows Phone SDK,在針對WP7設備的開發工作中程序員需要使用專門的C#及.Net語法進行編程。
雖然供應商提供的Native工具能夠確保訪問到設備的每一項功能,但開發工作同樣需要對計算機科學了如指掌的優秀軟件工程師。除了開發周期過長,Native開發方案所需要的資金投入也最為昂貴。雖然設備供應商會免費為我們提供開發工具(供應商樂于鼓勵針對其移動平臺的開發行為,這等于在無形之中壯大了其軟件支持陣營),但開發人員仍然需要經過系統學習來掌握這些各具特色的編程技能。另外移動開發與傳統開發工作一樣,編程難度會隨著應用程序自身的復雜性而呈指數級上升——經驗豐富的C語言程序員可能只需幾個小時的摸索就能搞定簡單的移動應用程序,但更為復雜的軟件產品則會輕易消耗掉整個開發團隊數百小時的工作時間,同時帶來數萬美元的人力成本。
但對于那些預定壽命周期較長或是對于性能競爭力要求較高的應用程序而言,Native開發是毫無疑問的***選擇。但如果大家希望自己的應用程序能夠快速上線,那么支付一大筆資金用于雇傭資深技術顧問或是組織嚴格的技能培訓(例如著名的Big Nerd Ranch課程)恐怕是不可避免的——可以說沒有雄厚的經濟實力作為支持,要想在預定時間內完成Native應用開發工作簡直是天方夜譚。#p#
移動應用開發的第二條陽關大道:基于Web的應用開發方案
第二類方案同樣受到熱烈的追捧,這就是以Web為基礎的開發模式。這類應用程序產品其實并不是嚴格意義上的應用,而是為特定網站量身訂制出的特殊軟件,能夠模擬出應用程序所應該具備的外觀與使用感受。時至今日,這仍然是最便捷的開發方案,而且應用程序邏輯可以輕松遷移到各種不同類型的操作系統平臺之上。在iOS設備中,我們甚至可以利用“添加到主屏幕”功能將當前Web應用的瀏覽器快捷方式放置在主界面中,這會進一步讓用戶產生Web應用與Native應用并無本質差別的感覺。
Web類應用程序通常依賴于JavaScript的客戶端編程能力。JavaScript具備成熟的程序體系與面向對象的語言功能,與客戶端Java Applets不同,JavaScript能夠支持幾乎所有類型的移動瀏覽器。只要采用開源JavaScript框架,我們就能大大簡化移動Web應用程序的編碼流程,因為該框架能夠提供大量預置的用戶界面元素以及一套完善的MVC應用程序模板。目前可供挑選的此類JavaScript框架很多,其中的佼佼者包括Ext JS(現在更名為Sencha)、JQuery Mobile以及The-M-Project。JavaScript框架使用起來非常簡單,基本上跟在JavaScript應用程序中添加框架的.js文件或者在自己的JavaScript代碼中添加框架功能差不多。正因為如此,我們完全不必對自己的IDE做出任何更改,這就使得Web應用開發的學習曲線非常親民、可謂包教包會。
說了這么多Web應用程序的好處,再來談談缺點吧。雖然這類應用在外觀與使用感受上與Native應用差別不大,但性能表現卻往往大打折扣。由于用戶通過設備上的Web瀏覽器訪問應用程序,因此大部分功能都需要借助Web連接進行傳輸并加以執行,這就使得響應延遲成為用戶體驗的***天敵。雖然HTML 5擁有訪問Native存儲數據的能力,但一般來說移動設備的內存容量也就幾百兆,因此Web應用不可能將信息一直保存在內存中隨時等待調用。
與Native開發模式對于程序員個人技能的嚴格要求不同,Web應用程序提出的惟一考核標準就是大家得懂Web開發:HTML 5、CSS以及JavaScript,另外再了解一些諸如Java、PHP或者Ruby之類的服務器端語言即可。由于應用程序整體在Web中運行,因此我們可以隨時對其加以更新,而無需對應用進行二次發布。
Xpous公司推出的iGenApps售價9.99美元,能夠為用戶提供一套完全不必跟代碼打交道的簡易Web應用程序開發方案,而且成品能夠順利運行于Android與iOS兩大主流平臺。為了迎合小型企業對于應用程序低復雜性與廉價開發成本的需求,iGenApps應運而生,它使得企業用戶能夠創建基于Web的移動設備應用產品。所有應用程序都被托管在Xpous公司的服務器上,并通過電子郵件中的HTML鏈接進行發布。收件人只需將該鏈接添加到瀏覽器主頁的快捷圖標中即可。
人類的智慧可謂無窮無盡,目前工藝最精致、打磨最嚴苛的Web應用已經能夠將WebKit使用得爐火純青。盡管仍然套著瀏覽器的外殼,但不少Web應用程序已然擁有完全獨立的用戶界面、全屏功能及導航、狀態欄隱藏機制。由于WebKit的實質屬于Native應用,因為它能夠訪問設備中的許多底層功能,例如地理位置等。即使是體積最小巧的WebKit在與服務器端的PHP、Ruby或者客戶端的HTML 5、CSS以及JavaScript等Web編程語言相結合之后,同樣會迸發出令人印象深刻的化學反應——***的Native應用模擬效果、所有常見操作按鈕甚至是軟鍵盤撥號,一切都與真正的Native應用毫無二致。而且值得一提的是,這一切僅僅是模擬出的效果,真正運行的只是最基本的應用代碼,手機本身完全不必進行任何復雜的圖形處理或者CPU運算。
Adobe公司的免費工具PhoneGap同樣體現了WebKit的發展戰略——它使得用戶能夠在服務器端完成應用程序代碼的編寫,然后將成果直接發布到多種移動操作系統當中,整個過程快捷而便利。PhoneGap利用插件對基礎shell進行了大幅強化,使其能夠模擬多種Native界面效果,進而為用戶帶來更為逼真的Native使用體驗。#p#
移動應用開發的第三條陽關大道:Hybrid型應用開發方案
WebKit的日趨完善給移動應用程序的第三類開發方案鋪平了道路,這就是Hybrid型應用開發模式。所謂Hybrid型模式是將簡單的WebKit shell替換為更加復雜的Native化代碼容器,并以Native應用的形式運行于目標操作系統平臺當中。容器供應商負責維護容器代碼,這就規避了Native代碼開發工作成本過高的難題。然而隨之卻產生了一種新的隱性成本——用戶被束縛在特定的Hybrid型平臺之上,只有在安裝時即與該容器綁定或者稍后另行下載才能保證JavaScript代碼的正確運行。
與純Web類應用那種無視設備型號、只提供完全一致的操作界面不同,Hybrid型應用程序能夠根據不同的移動操作系統帶來風格各異的使用體驗:在Kindle Fire設備上采用Android風格、在iPad上變身為iOS外觀、在Windows Phone中則轉化為Metro范兒。
Appcelerator推出的Titanium就是Hybrid平臺中出現最早且至今人氣旺盛的平臺方案之一。其***產品工具包中包含了一套跨平臺SDK,不僅集成了千上萬種特定設備API、內置設備模擬器的基于Eclipse的Titanium Studio IDE,還囊括了在Appcelerator云服務器端托管應用的選項。這款SDK與配套IDE完全免費,不過云端托管及各種技術支持服務則屬于收費項目。
讓Hybrid型開發方案進一步得以推廣的功臣當數Sencha的Complete Team系列移動開發工具,其中最知名的項目包括Sencha Touch 2 JavaScript框架、Sencha Architect以及拖拽GUI構建器。Sencha.io仍處于測試階段,它***嘗試利用云技術處理數據、消息以及服務部署工作,這就使得企業在部署應用程序時不必再架設任何面向公眾的基礎設施。
要想以無需編碼的方式從事云基礎移動應用開發,MobileFrame無疑是不二之選。它為用戶提供了多套預置應用程序模板,大家可以利用Web基礎GUI設計器對模板進行自定義,然后將成果部署為Native或者Hybrid型應用。而針對企業級應用程序部署領域的實際需求,MobileFrame還推出了版本及源代碼控制、數據庫連接功能以及集成測試環境與設備模擬器。除此之外,這款平臺還包括內置的移動設備管理(簡稱MDM)功能,這使其同時成為一套頗具吸引力的BYOD輔助工具。#p#
特定用途平臺
除了供應商提供的NativeIDE以及跨平臺Hybrid工具包,市場上還有大量專為特殊環境所量身打造的開發產品,希望能在特定移動操作系統或服務器端主機環境中占據屬于自己的市場份額。
其中***的實例就是谷歌的J2ObjC Java-to-Objective-C編譯器了,它的設計目的是讓服務器端的Java開發人員能夠將自己的非UI代碼轉化為能夠被蘋果設備所直接使用的Objective-C代碼。蘋果公司目前仍然嚴禁NativeJava在iOS系統中直接運行,這也成為擅長Java應用開發的程序員們轉戰蘋果的***阻礙。盡管Java開發者們仍然需要系統學習Objective-C中關于iOS圖形應用組件的開發知識,但J2ObjC的出現仍然使他們能夠在工作中使用自己所熟知的Java執行邏輯,這在無形中節省了應用產品的開發成本與周期,同時彌合了兩套代碼體系之間的巨大鴻溝。
另一款類似的工具名為CodeName One,但與專注于將Java轉譯為Objective-C的J2ObjC不同,它的作用在于幫助開發人員***限度地以Java方式進行應用開發工作,其中就包括UI代碼這一老大難問題。該產品的“輕量級架構”方案能夠橫跨多種系統平臺,提供無縫化的UI開發流程;開發人員還可以選擇“重量級”版本,在必要時利用NativeObjective C替代應用中的Java代碼組件,借以節約計算資源或者訪問設備的底層功能。它所提供的GUI構建器還給開發人員帶來功能完善的UI拖拽操作選項,使得應用產品的使用感受與移動系統本身更加相近。
Salesforce Touch是一款移動開發平臺,用于為企業級開發人員提供Salesforce在自家企業級移動應用中所使用的應用引擎。Salesforce Touch既能夠生成NativeObjective C應用、也能搞定像Java、純Web甚至是大雜燴式的Hybrid型應用。這款平臺采用Force.com接口,通過REST API實現包括訪問Salesforce常駐業務數據、社交Web以及地理位置(例如實時地圖)在內的各類Web服務。Touch的身份識別功能同樣非常強大,用戶可以在其幫助下以單點登錄的方式利用移動設備訪問企業服務器。
CoralTree Systems推出的Renaissance則是一款專為特定企業IT環境打造的典型實用范例,它只針對IBM的i體系發揮作用。作為一款開源產品,Renaissance為我們提供了與IBM安全API及RPG編程語言相對接的特殊渠道。Renaissance是一款圍繞特定服務器運作的移動平臺,它能幫助企業為遺留應用提供移動支持、節約利用現代語言(例如PHP或者Ruby)重建復雜業務邏輯所產生的高昂成本。
做出明智的選擇
可以說我們生在了***的時代,如今可供選擇的移動開發工具可謂史無前例地豐富、史無前例地實惠。我們既可以堅持不懈地走Native應用道路,花大價錢打造一款美觀、高效的應用程序,也可以利用更為簡單的Web或者Hybrid方式進行開發工作。希望大家花點時間把自己對于應用產品的需求一一列出,然后根據這些特性找出最合適的開發工具。我們不像Facebook那么闊綽,沒有精力和財力完全推翻重來,因此請務必慎重再慎重。
原文鏈接:
原文標題:Native, Web, or hybrid: How to choose your mobile development path
【51CTO譯稿,非經授權謝絕轉載,合作媒體轉載請注明原文出處、作者及51CTO譯稿和譯者!】