【白皮書】HTML5、Native或Hybrid App開發(fā)全接觸
譯文【51CTO獨(dú)家譯文】本白皮書的目的不是確定哪一種是***的開發(fā)方法,因?yàn)椴淮嬖?**的開發(fā)方法,而是列出每一種方法的優(yōu)缺點(diǎn),并描述最適合某一種開發(fā)方法的不同場景或企業(yè)需求。英文白皮書可以在微盤上下載:http://vdisk.weibo.com/s/6ru7u/1338949809
以下為全部譯文:
開發(fā)方法介紹
一、Native App
Native App含有二進(jìn)制可執(zhí)行文件,直接下載到設(shè)備上,并存儲在本地。安裝過程由用戶啟動;在一些情況下,由企業(yè)的IT部門啟動。下載Native App的最常見方法是訪問應(yīng)用程序商店,如蘋果的應(yīng)用程序商店、安卓的應(yīng)用程序市場或黑莓的應(yīng)用程序世界;但是還有其他方法,有時由移動開發(fā)商來提供。
一旦應(yīng)用程序安裝到了設(shè)備上,用戶可以如同啟動設(shè)備提供的其他任何服務(wù)那樣啟動應(yīng)用程序。一旦完成初始化,Native App就直接與移動操作系統(tǒng)進(jìn)行聯(lián)系,不用通過任何中介或容器。Native App可隨意訪問由操作系統(tǒng)開發(fā)商提供的所有應(yīng)用編程接口(API);在許多情況下,NativeApp有著某種特定的移動操作系統(tǒng)所常見的獨(dú)特外觀和感覺。
想創(chuàng)建Native App,開發(fā)者必須編寫源代碼(采用人類可讀的形式),并建立額外資源,比如鏡像、音頻段和針對特定操作系統(tǒng)的各種聲明文件。使用由操作系統(tǒng)開發(fā)商提供的工具,對源代碼進(jìn)行編譯(有時還要進(jìn)行鏈接),目的是為了建立一個二進(jìn)制形式的可執(zhí)行文件,它可以連同其余資源封裝起來,并隨時可供分發(fā)。
這些工具以及其他實(shí)用程序和文件通常名為移動操作系統(tǒng)的軟件開發(fā)工具包(SDK)。雖然不同操作系統(tǒng)上進(jìn)行的開發(fā)過程常常很相似,但是SDK視特定的平臺而定,每一種移動操作系統(tǒng)都隨帶各自的獨(dú)特工具。下面這張表顯示了與四大移動操作系統(tǒng)有關(guān)的不同工具、語言、格式和分發(fā)渠道。
平臺之間的這些區(qū)別導(dǎo)致了Native開發(fā)方法的最重大缺點(diǎn)之一:為一種移動平臺編寫的代碼無法在另一種平臺上使用;這樣一來,為多種操作系統(tǒng)開發(fā)和維護(hù)Native App成了一項(xiàng)時間很長、成本很高的任務(wù)。
那么,為什么盡管存在成本高昂的這個缺點(diǎn),許多公司還是選擇Native開發(fā)這條路呢?為了回答這個問題,我們就要更清楚地了解API的角色。
應(yīng)用編程接口(API)
一旦Native App安裝到了移動設(shè)備上,并由用戶啟動,它就能借助操作系統(tǒng)公開的專有API調(diào)用,與移動操作系統(tǒng)進(jìn)行聯(lián)系。這些API可以分為兩大類:低級API和高級API。
低級API
正是借助這些低級API調(diào)用,應(yīng)用程序能直接與觸摸屏或鍵盤進(jìn)行聯(lián)系、渲染圖形、連接至網(wǎng)絡(luò)、處理從麥克風(fēng)收到的音頻、通過揚(yáng)聲器或麥克風(fēng)播放聲音,或者接收來自攝像頭的圖像或視頻。應(yīng)用程序能訪問全球定位系統(tǒng)(GPS)、接收方位信息,當(dāng)然還可以讀寫固態(tài)硬盤上的文件,或者訪問現(xiàn)有和將來會有的其他任何硬件元件。
高級API
除了提供我們剛才提到的低級硬件訪問服務(wù)外,移動操作系統(tǒng)還提供對個人移動體驗(yàn)來說很重要的較高級服務(wù)。這類服務(wù)包括瀏覽Web,管理日歷、聯(lián)系人資料和相冊等過程,當(dāng)然還包括打電話或收發(fā)文本消息的功能。
雖然大多數(shù)移動操作系統(tǒng)包含一組內(nèi)置的應(yīng)用程序可以執(zhí)行這些服務(wù),但是還讓Native App可以訪問一組公開的高級API,讓它們可以訪問上述許多重要的服務(wù)。其他API讓可下載式應(yīng)用程序可以訪問操作系統(tǒng)開發(fā)商提供的各種基于云的服務(wù),比如推送通知(Push Notifications)或應(yīng)用程序內(nèi)購買(In-App Purchase)等服務(wù)。
GUI工具包
操作系統(tǒng)提供的另一組重要的API是GUI工具包。每一種移動操作系統(tǒng)都隨帶各自的一組用戶界面組件,比如按鈕、輸入?yún)^(qū)、滑塊、菜單、菜單欄、對話框及其他。可以使用這些組件的應(yīng)用程序繼承了該特定移動操作系統(tǒng)的外觀和感覺,通常會帶來非常流暢的用戶體驗(yàn)。
值得一提的是,不同的移動平臺帶有一系列獨(dú)特的用戶界面組件。因而,為了可在多種操作系統(tǒng)上運(yùn)行而設(shè)計的應(yīng)用程序需要設(shè)計者熟悉每一種操作系統(tǒng)不同的用戶界面組件。
雖然API視特定的操作系統(tǒng)而定,并且給開發(fā)諸多Native App的工作大大增添了復(fù)雜性和成本,但是這些元素只是創(chuàng)建豐富移動應(yīng)用程序的手段而已,這些應(yīng)用程序可以充分利用現(xiàn)代移動設(shè)備所提供的全部功能。#p#
二、移動Web App
現(xiàn)代移動設(shè)備包含功能強(qiáng)大的瀏覽器,這些瀏覽器支持許多新的HTML5功能、CSS3和高級JavaScript。由于最近在這方面取得的進(jìn)展,HTML5預(yù)示著這項(xiàng)技術(shù)將從一種“頁面定義語言”,轉(zhuǎn)變成一種功能強(qiáng)大的開發(fā)標(biāo)準(zhǔn),用于開發(fā)豐富的、基于瀏覽器的應(yīng)用程序。
表明HTML5大有潛力的幾個例子包括:高級的用戶界面組件、可以訪問豐富媒體類型、地理位置服務(wù)和離線功能。使用這些特性和處于開發(fā)中的其他更多特性,開發(fā)者就能僅僅使用Web技術(shù),開發(fā)出高級應(yīng)用程序。
不妨先來區(qū)別一下兩種極端的Web App開發(fā)方法。我們都熟悉移動瀏覽和針對移動設(shè)備優(yōu)化的網(wǎng)站。這些網(wǎng)站能夠識別何時被智能手機(jī)訪問,因而呈現(xiàn)為了在小尺寸屏幕上提供舒適的“觸摸體驗(yàn)”設(shè)計的HTML網(wǎng)頁。但是有些公司更進(jìn)一步,建立了移動網(wǎng)站,以改善用戶體驗(yàn)。這種移動網(wǎng)站看起來就像Native App,可通過快捷方式來啟動,這與啟動Native App的方式?jīng)]什么不同。
特性 |
純粹的移動Web App |
純粹的移動網(wǎng)站 |
工具和知識 |
完全用HTML、CSS和JavaScript來編寫 |
完全用HTML、CSS和JavaScript來編寫 |
執(zhí)行 |
“已安裝”快捷方式,啟動方式如同Native App |
可通過URL導(dǎo)航至網(wǎng)站來訪問 |
用戶體驗(yàn) |
為觸摸操作優(yōu)化的、交互式的用戶體驗(yàn) |
顯示靜態(tài)數(shù)據(jù)的頁面之間的導(dǎo)航用戶界面 |
性能 |
用戶界面的邏輯駐留在本地,使得應(yīng)用程序反應(yīng)迅即、可離線訪問 |
所有代碼從服務(wù)器端執(zhí)行,導(dǎo)致了性能與網(wǎng)絡(luò)有關(guān) |
這兩個極端之間存在一系列廣泛的可能性,大多數(shù)網(wǎng)站實(shí)施了各自的Hybrid特性。
移動Web App是一種很有希望的趨勢。為了緊緊抓住這個趨勢,幫助開發(fā)者構(gòu)建客戶端用戶界面,已開發(fā)出越來越多的JavaScript工具包,比如Sencha Touch和jQuery Mobile,它們創(chuàng)建的用戶界面在外觀和感覺上與Native App大同小異。兩者都完全在移動設(shè)備的瀏覽器里面執(zhí)行,充分利用了現(xiàn)代移動瀏覽器所提供的***JavaScript、CSS和HTML5特性。
Web App最突出的優(yōu)勢之一是,它支持多種平臺,而且開發(fā)成本低。大多數(shù)移動開發(fā)商利用了瀏覽器中的同一種渲染引擎:WebKit——主要由谷歌和蘋果領(lǐng)導(dǎo)的這個開源項(xiàng)目提供了如今最全面的HTML5實(shí)現(xiàn)機(jī)制。由于應(yīng)用程序的代碼用與WebKit兼容的標(biāo)準(zhǔn)Web語言編寫而成,所以一個應(yīng)用程序在諸多不同的設(shè)備和操作系統(tǒng)上提供了統(tǒng)一的體驗(yàn),因而使得它在默認(rèn)情況下支持多種平臺。但是這些優(yōu)勢并非沒有代價。盡管移動領(lǐng)域的Web技術(shù)大有潛力和希望,但它們?nèi)源嬖谙喈?dāng)大的局限性。為了解這些局限性,我們就要解釋W(xué)eb App是如何運(yùn)行的。
不像Native App是獨(dú)立的可執(zhí)行文件,直接與操作系統(tǒng)進(jìn)行聯(lián)系,Web App則在瀏覽器里面運(yùn)行。而瀏覽器本身是可直接訪問操作系統(tǒng)API的一種Native App,但是只有數(shù)量有限的這些API向?yàn)g覽器里面運(yùn)行的Web App公開。雖然Native App可以完全訪問設(shè)備,但是許多特性只是部分可供Web App使用,或者根本不可使用。雖然預(yù)計這種情況在將來會隨著HTML的改進(jìn)而改變,但是如今的移動用戶無法使用這些功能。#p#
三、Hybrid App
Hybrid開發(fā)方法結(jié)合了Native開發(fā)和Web技術(shù)。借助這種方法,開發(fā)者就能使用跨平臺Web技術(shù),開發(fā)應(yīng)用程序的大部分代碼,又可以在需要時直接訪問Native API。
App的Native代碼部分使用操作系統(tǒng)的API來創(chuàng)建嵌入式HTML渲染引擎,該引擎在瀏覽器和設(shè)備的API之間充當(dāng)了橋梁。這座橋梁讓Hybrid App得以充分利用現(xiàn)代設(shè)備所提供的全部特性。
App開發(fā)者可以選擇編寫自己的橋梁,或者充分利用現(xiàn)成的解決方案,比如PhoneGap——這種開源庫為有選擇的設(shè)備功能提供了在諸操作系統(tǒng)上保持一致的統(tǒng)一JavaScript接口。
App的Native代碼部分可以獨(dú)立開發(fā),但是市場上的一些解決方案把這種類型的Native容器作為其產(chǎn)品的一部分來提供,因而讓開發(fā)者有辦法只要使用Web語言,就可以構(gòu)建利用設(shè)備所有特性的高級App。在一些情況下,解決方案讓開發(fā)者可以充分利用現(xiàn)已掌握的任何Native開發(fā)技能,根據(jù)企業(yè)的獨(dú)特要求來定制Native容器。
App的Web部分可能是駐留在服務(wù)器上的網(wǎng)頁,也可能是一組HTML、JavaScript、CSS和媒體文件,封裝到App代碼中,存儲在設(shè)備本地。這兩種方法都有其優(yōu)勢和局限性。放置在服務(wù)器上的HTML代碼讓開發(fā)者不必經(jīng)歷提交和批準(zhǔn)過程——有些App商店要求這個過程,就可以對App進(jìn)行小幅更新。遺憾的是,這個方法擯棄了任何離線可用性,因?yàn)樵O(shè)備與網(wǎng)絡(luò)沒有連接時,無法訪問設(shè)備。另一方面,把Web代碼封裝到App里面可以提高性能和可訪問性,但是不允許遠(yuǎn)程更新。如果結(jié)合這兩種開發(fā)方法,也許可以集兩者之所長。這種系統(tǒng)采用的架構(gòu)可以把HTML資源放置在Web服務(wù)器上,以獲得靈活性,但是又把它們本地緩存在移動設(shè)備上,以獲得高性能。
比較不同的開發(fā)方法
所以為了總結(jié),不妨看一下這三種開發(fā)方法各自相比怎么樣。
Native開發(fā)方法在性能和設(shè)備訪問方面很出色,但成本和更新方面有缺點(diǎn)。Web方法更新起來簡單得多,成本較低,也更容易,但是目前功能有限,也無法獲得使用Native API調(diào)用所能獲得的那種出色的用戶體驗(yàn)。Hybrid開發(fā)方法提供了折中方案:在許多情況下,它集兩者之所長,如果開發(fā)者面向多種操作系統(tǒng)更是如此。
特性 |
Native App |
Hybrid App |
Web App |
開發(fā)語言 |
只用Native開發(fā)語言 |
Native和Web開發(fā)語言或只用Web開發(fā)語言 |
只用Web開發(fā)語言 |
代碼移植性和優(yōu)化 |
無 |
高 |
高 |
訪問針對特定設(shè)備的特性 |
高 |
中 |
低 |
充分利用現(xiàn)有知識 |
低 |
高 |
高 |
高級圖形 |
高 |
中 |
中 |
升級靈活性 |
低 總通過應(yīng)用程序商店來升級 |
中 常通過應(yīng)用程序商店來升級 |
高 |
安裝體驗(yàn) |
高 從應(yīng)用程序商店來安裝 |
高 從應(yīng)用程序商店來安裝 |
中 通過移動瀏覽器來安裝 |
從上面這張表可以推斷出,沒有哪一種開發(fā)方法總是提供所有的優(yōu)點(diǎn)。選擇一種合適的方法取決于企業(yè)的具體要求,可能取決于諸多因素,比如預(yù)算、時間表、內(nèi)部資源、目標(biāo)市場、所需的應(yīng)用程序功能、IT基礎(chǔ)設(shè)施及其他許多方面。但是有一點(diǎn)很清楚:如今的大多數(shù)公司顯然在兩個方面之間作一取舍:一方面是用戶體驗(yàn)和應(yīng)用程序功能,另一方面是開發(fā)成本和產(chǎn)品上市時間。問題就變成了選擇一種合適的開發(fā)方法,能兼顧企業(yè)的要求和其在預(yù)算和產(chǎn)品上市時間方面的限制。
選擇合適的開發(fā)方法#p#
下面介紹有助于幫助企業(yè)選擇合適開發(fā)方法的一些場景:
一、Native開發(fā)方法的場景
現(xiàn)有的Native開發(fā)技能——反對Native開發(fā)方法的主要理由之一是,它缺少對多種平臺的支持。要求為多種移動平臺開發(fā)App的企業(yè)需要招聘新員工,或者對內(nèi)部開發(fā)者進(jìn)行眾多Native語言方面的培訓(xùn)。內(nèi)部擁有這種Native開發(fā)技能的企業(yè)不需要大筆新的投入,就能夠充分利用這些技能。
單一移動操作系統(tǒng)——在一些情況下,企業(yè)旨在向有限的目標(biāo)群體發(fā)布移動App——這個群體已知使用單一移動操作系統(tǒng)。比如說,考慮這種場景:向員工發(fā)放黑莓設(shè)備的企業(yè)分發(fā)內(nèi)部App。在這種情況下,支持多種平臺也許不是優(yōu)先事項(xiàng):由于開發(fā)單一的Native App只需要一套有限的技能和工具,所以這種方法很有意義。
Native功能——有些App是圍繞某一項(xiàng)功能開發(fā)的。就拿Skype來說,VOIP和訪問用戶的聯(lián)系人信息是App的兩大關(guān)鍵要素;考慮到現(xiàn)有的技術(shù),只能采用Native方法來開發(fā)。對這類App而言,Web語言根本不夠完善,根本無力獲得所需的功能。
豐富用戶界面的需求——有些游戲類App需要提供實(shí)時響應(yīng)的豐富用戶界面,對這類App而言,Web技術(shù)還無法提供足夠有效的解決方案。對有這類需求的App而言,開發(fā)者采用Native開發(fā)方法仍然比較好。
二、Web開發(fā)方法的場景
直接分發(fā)——有些企業(yè)更喜歡以一種內(nèi)部控制的方式來分發(fā)App,他們不喜歡受制于有時很漫長、很不確定的審批過程。這種情況下,使用純粹的Web語言可以完全規(guī)開應(yīng)用商店的審批過程,讓企業(yè)可以完全控制App的定期更新和分發(fā)。
試點(diǎn)App——比較Native App與Web App開發(fā)所需的成本和上市時間時,使用Web方法開發(fā)試點(diǎn)應(yīng)用程序是一種引人入勝的、經(jīng)濟(jì)高效的方法。一旦概念得到了證明,企業(yè)可以決定從頭開始創(chuàng)建新的App,或者充分利用Hybrid App中的部分現(xiàn)有代碼。
可視性——除了前面提到的分發(fā)外,構(gòu)建Web App的另一個優(yōu)點(diǎn)是搜索引擎結(jié)果具有可視性;在許多情況下,搜索引擎結(jié)果將App展示給比僅僅通過應(yīng)用商店獲得的群體更龐大的群體。
三、Hybrid開發(fā)方法的場景
折衷考慮——如果企業(yè)使用Hybrid開發(fā)方法,就能集兩者之所長。一方面,Native讓開發(fā)者可以充分利用現(xiàn)代移動設(shè)備所提供的全部不同的特性和功能。另一方面,使用Web語言編寫的所有代碼都可以在不同的移動平臺之間共享,使得開發(fā)和日常維護(hù)過程變得集中式、更簡短、更經(jīng)濟(jì)高效。
內(nèi)部技能——Web開發(fā)技能十分常見,許多企業(yè)都擁有這類技能。如果選擇Hybrid開發(fā)方法,在合適解決方案的支持下,Web開發(fā)者只要僅僅運(yùn)用HTML、CSS和JavaScript等Web技能,就能構(gòu)建App,同時提供Native用戶體驗(yàn)。
考慮未來——HTML5的可用性和功能都在迅速改進(jìn)。許多分析師預(yù)測,它可能會成為開發(fā)前端App的默認(rèn)技術(shù)。如果用HTML來編寫App的大部分代碼,并且只有在需要時才使用Native代碼,公司就能確保他們今天的投入在明天不會變得過時,因?yàn)镠TML功能變得更豐富,可以滿足現(xiàn)代企業(yè)一系列更廣泛的移動要求。
總結(jié)
由于移動App繼續(xù)在商業(yè)界扮演核心角色,全球各地的企業(yè)為越來越多的關(guān)鍵任務(wù)服務(wù)賦予移動特性。許多公司正在力求找到***的開發(fā)方法來實(shí)現(xiàn)目標(biāo),但是許多公司很快認(rèn)識到:每一種開發(fā)方法有天生的局限性,沒有哪一種方法能夠滿足現(xiàn)代移動企業(yè)的所有要求、應(yīng)對復(fù)雜情況。
正如本白皮書試圖表明的那樣,答案不在于使用哪一種開發(fā)方法,而在于使用靈活的解決方案;這種解決方案能利用各種方法提供的優(yōu)點(diǎn),不僅支持首款移動App的開發(fā),還支持將來所有的App,不管他們采用哪種開發(fā)方法。
但是Hybrid、Native和Web之間的選擇不是唯一的選擇,盡管無疑是重大的選擇。制定移動戰(zhàn)略的公司還必須考慮這個市場的未來:
- 移動設(shè)備和技術(shù)的進(jìn)一步分散,這反過來會繼續(xù)增加與移動App開發(fā)、集成和日常管理有關(guān)的總體成本和復(fù)雜性。
- 消費(fèi)者和企業(yè)內(nèi)部加快采用移動技術(shù),從而提高了安全性、擴(kuò)展性和日??刂频确矫娴男枨螅?/li>
- 新的設(shè)備特性和補(bǔ)充技術(shù)(如近場通信、地理位置、增強(qiáng)現(xiàn)實(shí)、社交網(wǎng)絡(luò)及其他技術(shù))無疑會帶來移動應(yīng)用程序的新類型和新用例。
- 新的App分發(fā)渠道(包括公共和私有渠道)讓企業(yè)很容易把應(yīng)用程序交到用戶手上,迅速部署更新版、管理整批App,不需要經(jīng)歷漫長的提交和審批過程。
如果考慮到所有這些方方面面,公司必須選擇這樣一種解決方案:不僅足夠靈活,可以支持各種類型的App,還能支持將App安全而靈活地集成到IT基礎(chǔ)設(shè)施中,并且讓公司可以通過一個集中式界面來監(jiān)測和控制整批App。
【51CTO譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請注明原文出處、作者及51CTO譯者!】