原生應用開發,是在Android、IOS等移動平台上利用官方提供的開發語言、開發類庫、開發工具進行App開發。比如android是利用java、eclipse、Android studio,IOS是利用Objective-C 和Xcode進行開發。原生應用由於利用的是官方提供的語言和工具並且能夠直接操控硬件設備(比如多點觸控、NFC、讀取短信等),在應用性能上和交互體驗上應該是最好的,但是原生應用的可移植性比較差,特別是一款原生的App,Android和IOS都要各自開發,同樣的邏輯、界面要寫兩套。
原生app之所以稱之為原生是因為他在開發時是由移動設備廠商自身提供的SDK或建議的開發方式來進行開發的;通常有android和ios兩類開發方式,他們分別是基於Java語言和C++語言的,因此使用原生開發每一類app所需要的語言也不太一樣。
優點:
1:原生app因為采用的是由各移動廠商提供的SDK,是基於特定的移動設備的操作系統所設計出來的,因此它的針對性強,與用戶的交互體驗非常好,性能很穩定;
2:更加貼近底層,因此他的操作更加的流暢;
3:相比較於混合應用,他在轉場時的效果更加出色,不會出現各種白屏等現象,這也就會增加客戶的留存率;
4:在應用中涉及到調取手機的相機等硬件設備,這些操作都是web APP實現不了的;
5:網絡上,webapp一旦斷網就無法訪問,但是在原生app中即使斷網也可以訪問原來下載好的數據;
缺點:
1:同一個項目,針對不同的手機操作系統都要進行獨立的開發,比如android和ios,同一種軟件,要為不同的操作系統開發兩個針對性項目。這就造成了開發成本的急劇上升,因此有一個段子就調侃道:“有錢有流量有資源,做App;窮逼做H5-_-”。
2:測試的時候也是非常麻煩,每一次修改都需要重新測試一次,而且上架時需要等待官方審核通過。
3:成本高,更新緩慢,這些成為了原生app逐漸被替代的主要原因。
(但是就算在混合開發中,很多框架都達不到原生的效果,單論性能來講,原生是最佳的)
HTML5應用開發,是利用Web技術進行的App開發,我們知道web技術本身需要瀏覽器的支持才能進行展示和用戶交互。主要用到的技術是HTML5、JavaScript、CSS等。現在還有一些開發框架可以利用,比如phoneGap、bootstrap、jquery等。H5開發的好處是可以跨平台,編寫的代碼可以同時在Android、IOS、Windows上進行運行。由於Web技術本身的限制,H5移動應用不能直接訪問設備硬件和離線存儲,所以在體驗和性能上有很大的局限性。
H5開發時使用html,css,JavaScript開發的一個展示型應用,主要用於瀏覽器中進行點擊后展示一些信息,他不能夠調用手機底層的設備,比如說:手機版的小米官網,手機版的蘋果官網。
具體的表現是在手機瀏覽器中會有一些應用的小圖標,這些小圖標在點擊后,在瀏覽器中加載頁面和你下載的app后打開頁面是相同的,而這些小圖標代表的就是web app。
優點:
1:方便測試,只需要輸入網址就可以進行測試;
2:想要新增功能直接在后台添加即可,不需要通知用戶升級;
3:量級低,開發成本很低,而且相應的他也不需要安裝包;
4:是基於瀏覽器的,可以跨平台使用;
缺點:
1:斷網就歇菜;
2:功能單一,用於展示,無法調用底層功能,比如相機;
3:與原生應用相對,他的交互體驗很差;
混合應用開發正是結合原生和H5開發的技術,取長補短的一種開發模式,原生代碼部分利用WebView插件或者其它的框架為H5提供了一個容器,程序主要的業務實現、界面展示是利用H5相關的Web技術進行實現的。比如現在的京東、淘寶、今日頭條等都是利用的混合開發模式。
混合開發的優缺點:
優點是:
1、開發效率高,節約時間同一套代碼Android和IOS基本都可用
2、更新和部署比較方便,不需要每次升級都要上傳到App Store進行審核了,只需要在服務器端升級就可以
3、代碼維護方便、版本更新快,降低產品成本
缺點是:
1、由於不能直接操控硬件有些方面性能不是很好
2、另外有技術比較新版本的兼容性比較差,還有就是即懂原生開發又懂H5開發的高端人才難找。
混合App開發是未來的趨勢,目前混合開發中使用的技術也很多,主要的混合開發技術有jQuery Mobile、React Native、Cordova、APICloud、AppCan等。雖然混合開發能夠提高效率節省成本,但也有很多的限制,除了硬件、緩存等的限制,各大平台之間的兼容性也不足。有的也比較消耗資源
三種開發模式基本功能的對比(因平台版本、應用情況不同經供參考)
