在著手開發(fā)一款移動應(yīng)用之前,我們需要考慮哪些因素?
譯文【51CTO.com快譯】創(chuàng)建移動應(yīng)用程序的方式可謂多種多樣,那么哪種方式最適合我們?這需要具體問題具體分析。您對于哪類技術(shù)最為熟稔?您的目標平臺是什么?您打算投入多長時間來構(gòu)建自己的應(yīng)用程序?這一切都會給具體選擇造成巨大影響。
移動領(lǐng)域自2007年iPhone首度面世以來發(fā)生了一場革命性的轉(zhuǎn)變。2008年,蘋果公司發(fā)布了其原生SDK(即軟件開發(fā)工具包),這無異于給整場革命添加了新的燃料??焖偻七M到今天,市場上的移動應(yīng)用程序已經(jīng)多達數(shù)百萬款,面向數(shù)十種平臺并伴隨著數(shù)不清的移動開發(fā)框架、平臺以及工具方案。
那么我們該如何選擇適合自己的移動應(yīng)用開發(fā)方案?今天的文章正是為了回答這個問題而出現(xiàn)。我們將一同探討目前市面上常見的幾種移動應(yīng)用程序類型,了解原生與混合應(yīng)用程序的各自優(yōu)勢,同時羅列幾種***人氣的常見移動平臺。
應(yīng)用程序類型
移動應(yīng)用程序可以分為以下三大常見類型:
· Web應(yīng)用程序
· 混合應(yīng)用程序
· 原生應(yīng)用程序
其中每一種類型都有著自己的優(yōu)勢與缺點。如果大家想了解哪種類型最適合自己的需求,那么我的答案還是那樣,“具體問題具體分析”。為了證明自己的結(jié)論,我首先要跟大家一起聊聊每種應(yīng)用程序類型。好了,就從Web應(yīng)用程序入手吧。
Web應(yīng)用程序
大家對于Web應(yīng)用程序可能已經(jīng)非常熟悉。Web應(yīng)用程序從本質(zhì)上來說跟網(wǎng)站并沒有什么本質(zhì)區(qū)別,只是在操作與體驗方面更接近于應(yīng)用程序。在iOS SDK于2008年出現(xiàn)之前,Web應(yīng)用程序是開發(fā)人員們?yōu)樵鷌Phone開發(fā)應(yīng)用時的惟一選項。
Web應(yīng)用程序擁有一系列顯著估摸,其中最重要的一項就是理想的開發(fā)周期。由于Web應(yīng)用在本質(zhì)上就是一種網(wǎng)站,因此其一次構(gòu)建之后即可在任何能夠運行網(wǎng)絡(luò)瀏覽器的平臺上加以訪問。對于部分企業(yè)而言,這是一種非常理想的解決方案——因為正如我們在下文所要提到,原生開發(fā)工作在成本上非常可觀而且需要投入大量時間。換句話來說,Web應(yīng)用的***特色就是具備跨平臺運行能力。
其另一大優(yōu)勢在于,Web應(yīng)用程序在開發(fā)方面擁有非常友善的學(xué)習(xí)曲線。要開發(fā)一款Web應(yīng)用,大家只需要運用自己早已熟知的Web技術(shù)即可——包括HTML、CSS以及JavaScript。通過這種方式,幾乎用不了多少時間我們的移動應(yīng)用即可順利啟動并上線。
太棒了!那么Web應(yīng)用程序的劣勢何在?這個嘛,這類應(yīng)用確實存在幾大劣勢,其中最重要的兩點就是性能較差而且無法訪問設(shè)備的固有功能。如果大家打算開發(fā)一款游戲,那么Web應(yīng)用程序顯然不會是各位的***選項。雖然不是實現(xiàn)不了,但Web應(yīng)用的性能表現(xiàn)并不穩(wěn)定。網(wǎng)站或者說Web應(yīng)用也沒辦法訪問到設(shè)備中的固有功能,例如攝像頭、地理位置服務(wù)以及其它一些既定機制。雖然我相信未來幾年中這類局限會得到有效緩解,不過就目前而言其仍然無法在這方面與原生應(yīng)用程序相匹敵。
因此,如果大家不想拿出大量資源對自己的移動應(yīng)用程序進行開發(fā)與維護,而且不太關(guān)注其性能表現(xiàn),那么Web應(yīng)用程序無疑是最為理想的開發(fā)選項。
混合應(yīng)用程序
混合應(yīng)用程序過去以及現(xiàn)在都是非常流行的移動開發(fā)選項。這類應(yīng)用將Web與原生這兩大領(lǐng)域的各類優(yōu)勢加以混合,從而***程度發(fā)揮移動平臺的承載能力。用于開發(fā)混合應(yīng)用程序的相關(guān)技術(shù)方案能夠讓熟悉創(chuàng)建Web應(yīng)用、HTML、CSS以及JavaScript代碼的朋友輕松上手。因此只要了解了混合應(yīng)用的運作原理,大家都能很快打造出屬于自己的移動開發(fā)成果。
混合應(yīng)用程序在本質(zhì)上就是一款通過原生應(yīng)用中的網(wǎng)絡(luò)瀏覽機制作為交互界面的Web應(yīng)用。不過區(qū)別在于,混合應(yīng)用程序?qū)⒃鷳?yīng)用作為自身容器,從而保證其在外觀上與原生應(yīng)用高度接近。這意味著對用戶來說,混合應(yīng)用程序的視覺效果與使用感受都很像是原生應(yīng)用……至少在一定程度上非常相似。用戶們能夠從對應(yīng)平臺的移動應(yīng)用商店當中進行下載,而應(yīng)用程序圖標也會正確顯示在大家的設(shè)備主屏幕當中。
那么缺點有哪些?由于混合應(yīng)用程序高度依賴于Web技術(shù)并運行在網(wǎng)絡(luò)視圖當中,因此其存在著與Web應(yīng)用相同的種種弊端。其性能表現(xiàn)同樣無法與原生應(yīng)用相匹敵。不過需要強調(diào)的是,其性能表現(xiàn)每一年都在實現(xiàn)顯著提升。而且令人印象深刻的是,JavaScript代碼的性能表現(xiàn)在過去十年當中一直在不斷改進。
目前***人氣的混合應(yīng)用程序開發(fā)解決方案為Apache Cordova——或者簡稱Cordova。幾年前當Adobe公司收購PhoneGap時,他們對其中的大部分代碼進行了開源,而Cordova也由此誕生。PhoneGap目前仍然存在,并作為Cordova項目的商用表親健康運營。
為了提升開發(fā)速度,開發(fā)人員通常會將Cordova與其它框架配合使用,包括Ionic與Onsen UI等等。
原生應(yīng)用程序
選擇原生開發(fā)方式意味著我們更加關(guān)注性能表現(xiàn)與可靠性水平。那么為什么原生開發(fā)機制會嚇退那么多開發(fā)人員?讓我們以iOS平臺為例。如果大家希望構(gòu)建一款原生iOS應(yīng)用程序,那么首先需要學(xué)習(xí)一種新型編程語言——Objective-C或者Swift。另外,大家還需要熟悉Xcode的各項特性——也就是蘋果自家的IDE(即集成開發(fā)環(huán)境)。再有,原生應(yīng)用程序的構(gòu)建工作往往需要耗費大量時間,因為我們需要更多考慮設(shè)備自身的特性與契合程度。著眼于此,Objective-C以及JavaScript可說是兩種完全不同的語言。
那么我們能夠得到怎樣的回報?性能表現(xiàn)可以說是原生應(yīng)用程序最值得引以為傲的競爭優(yōu)勢了。原生應(yīng)用程序的使用感受更為順暢,特別是在游戲方面,因為其能夠發(fā)揮設(shè)備以及操作系統(tǒng)所提供的全部資源。再有,設(shè)備中的全部特性與功能都可通過SDK的API進行調(diào)用,這意味著開發(fā)人員的發(fā)揮空間更加廣闊。而這也是原生應(yīng)用壓倒混合與Web開發(fā)機制的另一大核心優(yōu)勢。
目前有著大量混合型方案,能夠幫助更多開發(fā)人員更為輕松地上手原生應(yīng)用開發(fā)工作。其解決方式非常簡單,我們可以選擇自己熟悉的語言進行代碼編寫,并將其編譯為原生應(yīng)用程序。在這一領(lǐng)域,當前***人氣的解決方案選項包括Xamarin與React Native等。
Xamarin允許開發(fā)人員利用C#語言為iOS、Android以及Windows Phone平臺編寫原生應(yīng)用程序。Xamarin工具采用Mono開源項目。在另一方面,React Native則源自Facebook,能夠幫助開發(fā)者利用JavaScript實現(xiàn)原生應(yīng)用程序編寫。
原生還是混合
那么到底哪種解決方案更值得考量?原生?混合?抑或是Web應(yīng)用程序?我給不出統(tǒng)一的答案,因為其具體取決于多項因素。如果大家身為一位開發(fā)者,那么答案可能就沒那么復(fù)雜了。您最為熟稔的技術(shù)是什么?您是打算讓自己的應(yīng)用立足于單一平臺,還是擁有多平臺運行能力?
事實上,同時著眼于iOS、Android以及Windows Phone已經(jīng)變得愈發(fā)具有挑戰(zhàn)性。很多開發(fā)人員都會面向多種平臺編寫原生應(yīng)用程序,但這么做真的非常艱難,我不建議大家將此作為***方案。移動領(lǐng)域的演進速度非常迅猛,而且我們幾乎不可能隨時保持對各類移動平臺的深入理解。如果大家決定走上原生應(yīng)用開發(fā)道路,那么作為***項目標,各位必須要對自己著眼的平臺擁有極為充分且深入的理解。是的,每位原生開發(fā)人員都應(yīng)該擁有這種能力。
有鑒于此,很多開發(fā)人員更傾向于選擇混合開發(fā)方案。如果您是一位經(jīng)驗豐富的Web開發(fā)者,那么絕對能夠立刻上手混合應(yīng)用開發(fā)工作——而無需任何學(xué)習(xí)或者適應(yīng)周期。Apache Cordova再配合上Ionic或者Onsen UI將能夠顯著提升開發(fā)工作的推進速度。
Web應(yīng)用程序也是需要留意的開發(fā)選項之一。不過Web開發(fā)擁有多種不同類型。通過創(chuàng)建Web應(yīng)用,大家用不著針對各系統(tǒng)平臺的官方應(yīng)用商店對自己的成果做出任何調(diào)整。過去幾年中,多數(shù)企業(yè)都會選擇這種較為省心的開發(fā)途徑。不過現(xiàn)在,如果大家擁有較為充裕的預(yù)算及可調(diào)配資源,那么原生及混合方案往往更受歡迎。
需要回答的問題
作為文章的收尾部分,我打算向大家提出幾個問題,而其具體答案將決定您對所謂“***移動應(yīng)用開發(fā)方式”的判斷。
性能表現(xiàn)是否重要?
如果答案是肯定的,那么原生開發(fā)將是您的***選項。而且如果大家打算開發(fā)的是游戲軟件,那么Unity絕對是不容錯過的理想方案。
跨平臺支持能力是否重要?
如果答案是否定的,那么原生開發(fā)將再一次勝出。而如果大家需要強大的跨平臺能力,那么混合原生或者混合Web方案則將成為***選項。另外,如果大家也需要保證自己的應(yīng)用成果具備理想的性能表現(xiàn)及設(shè)備功能支持效果,那么Xamarin或者React Native絕對不容錯過。
您的下一步發(fā)展目標是什么?
如果大家的目標是成為一名出色的移動開發(fā)人員,那么我的建議是選擇原生開發(fā)方案。當然,這只是我的個人觀點。我是名iOS開發(fā)者,而且我在可預(yù)見的未來不打算轉(zhuǎn)移到其它平臺。對于專注于單一平臺(包括iOS、tvOS、watchOS以及OS X),我能夠花時間讓自己熟悉該平臺并積累到更為豐富的開發(fā)經(jīng)驗。這一點對于移動開發(fā)工作非常重要,特別是確保自己的應(yīng)用程序具有強大的競爭優(yōu)勢以及卓越的用戶界面。
如果大家擁有Web開發(fā)背景,那么原生開發(fā)仍是個不錯的選擇。當然,如果大家需要的是能夠快速見效、快速推出的開發(fā)效果,那么混合或者Web解決方案在速度上確實更具優(yōu)勢。
總結(jié)陳詞
如果大家想要一個明確的答案,那么我恐怕讓各位失望了。如果各位還沒有拿定主意,那我建議大家對文章中提到的選項加以嘗試。上手Cordova或者認真看看與Swift相關(guān)的快速指南教程,然后問自己到底喜不喜歡這種開發(fā)風(fēng)格。千萬不要單純因為簡單或者快捷而選定目標開發(fā)方式??傊?,確保自己能夠充分享受這段旅程——因為這也正是開發(fā)工作的樂趣所在嘛。
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】















 
 
 

 
 
 
 