几种移动开发技术的比较和选型
為什么80%的碼農都做不了架構師?>>> ??
首發:個人博客,更新&糾錯&回復
移動開發很火,移動開發技術很多。都有哪些技術?相互對比如何?怎樣選擇?
簡單列了個表。
其中Native指原生語言,如安卓的java語言,蘋果的objective-c或swift;Hybrid指混合開發,在前種語言基礎上,借助WebView控件,將其中部分功能用前端技術實現;Html5指PhoneGap和HBuilder這種,最終會生成app安裝包,但完全用前端技術開發,不需要懂原生語言;Web指為移動瀏覽器開發的網頁,在手機上看外觀良好,很可能要使用專門的樣式框架如jquery mobile,或者bootstrap這種響應式框架;js-sdk指微信推出的技術,可以為在微信瀏覽器里展示的網頁添加額外的功能。
技術選型,一看既有人力情況,二看需求。
既有人力情況:如果目前的程序員擅長后端語言(比如要做安卓應用,你恰好是java程序員),就該采用原生技術;如果程序員擅長前端,則該采用前端技術;如果程序員后端前端都有能力,混合開發也是可以的選擇。
在需求上:如果要做在商城中上架的App,移動版網頁和微信應用就不可能選擇了;如果不希望每次改版都要求用戶重新安裝應用,純原生應用就不要列為選項;如果時間緊迫人力有限,希望開發一套代碼在所有平臺都使用,則或者完全放棄原生技術,或者采用混合方案(嵌入WebView里的網頁是同一份,只需要為兩種平臺各做一個殼子);如果看中應用的性能,采用原生技術能達到的性能上限當然高于非原生技術,但要結合程序員水平思考能不能達到上限;如果需要使用相機音頻這些功能,純在瀏覽器打開的移動版網頁就不能勝任了,原生和混合當然能滿足這個要求,Html5應用和微信應用則提供了數量有限但是跨平臺了的接口,根據到底需要調用哪些本地功能來考慮;如果不同應用間需要交互,網頁當然就是為這個而生的,微信應用本質也是網頁也沒問題,原生應用理論上在本機內部也能互通,但還是在互聯網上來互通更合適,因為網頁的跳轉比下載安裝程序方便太多了。
打開網頁忌諱流量太大,等待時間太長,注意別用太大的庫,而且做好緩存,如果是混合開發或者Html5應用,把資源打到安裝包里會不錯,這樣往來的流量就只有數據了,如果是移動版網頁或者微信應用,庫的選擇和緩存策略將是重中之重。
采用前端技術的優點是開發簡單,表現力強大,而且跨平臺,缺點一是用來解決性能敏感的需求不穩健,二是javascript作為弱類型的腳本語言,在工程上和團隊協作上,相比強類型語言更容易失控,這就考驗團隊的經驗和素質,如果功能實在簡單,迭代周期不長,這倒算不上什么缺點,畢竟在沒有ie6的世界里javascript用得認真點還是比較靠譜的。
由于html5支持本地存儲和websocket,即使是移動版網頁也有一定的c/s能力了。但如果使用原生技術,c/s編程元素的承載者應該是原生語言,即使同時使用前端技術,前端技術也該純粹地用來表現和交互,這時候不該貪圖前端技術的程序能力,就像java編程時不該貪圖jsp擁有的寫程序代碼的能力一樣。如果純使用前端技術,那javascript就是程序實現的主力了,這時候就是前端轉全棧的程序員最喜聞樂見的情景:后端的nodejs只提供rest接口,前面工程化的前端代碼大發神威,這時AMD/CMD的模塊組織就很關鍵了。這時庫的選擇就很重要,一是要足夠強大,二是要體積夠小,三是要模塊化,最理想的還是前端程序員量體裁衣親手寫一套專門為這個項目定制的,如果覺得劃不來那就用點心找第三方庫吧。
原生開發中的庫選擇也很重要,好在無論Android還是iOS基礎庫都很強大好用了,本機自帶基礎庫就是好,讓應用既強大又小巧,windows上的.net運行式也算是半套基礎庫了,微信也算半個,既然事實上每臺手機上都有安裝微信,跟本機自帶的也沒什么區別了,所以微信本身它就是一個殼子,比起在手機瀏覽器里的移動版網頁,微信應用先天多個殼子,比起HBuilder這種Html5解決方案,微信應用先天減少了下載殼子需要的流量。用c#寫個桌面程序,可以逼迫用戶下載.net運行時,你用python寫一個桌面程序,則只好打成一個碩大的包來發布,HBuilder就像是Python,而微信就像是.net。
說來說去,還是沒有銀彈,移動開發技術之所以百花絢爛,就是因為每種技術都有明顯的長處和短板,誰都無法取代誰,作為程序員,還是該多學點,這樣可以采用最貼切需求的技術,但作為選型者,則不能逼迫小伙伴們全成為全能戰士,根據團隊情況和需求來綜合考量吧,決策不就是個權衡和舍棄的過程嗎,重要的,一是知己,二是知彼,這樣,大概不會太糟。
長期歡迎項目合作機會介紹,項目收入10%用于酬謝介紹人。新浪微博:@冷鏡,QQ:908789432。
轉載于:https://my.oschina.net/u/866216/blog/542186
總結
以上是生活随笔為你收集整理的几种移动开发技术的比较和选型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aws s3及cloudfront访问问
- 下一篇: ./configure,make,mak