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