儘管對於面向大衆消費市場的應用來說,爲每一個平臺構建一個獨立的原生App已經被證實是當下最成功的方法,但跨平臺仍然頗有意義。在本文中,咱們來看看最受歡迎的選擇,使用HTML5的混合Web應用和積極進取的挑戰者Qt。web
那些熟悉Qt歷史的人看到它被描述爲「積極進取」可能會感到驚訝。Qt一開始被設計來構建跨平臺的桌面應用,它的創始人在1994年開始爲它工做!然而,當諾基亞收購Trolltech後,Qt開始對移動開發感興趣,公司開始大力發展Qt,大量投資,想讓它成爲構建移動應用的理想工具。不幸的是,諾基亞剛剛做出這一戰略決定沒多久,iPhone面世了。iPhone改變了遊戲規則,移動應用構建很快從面向帶數字鍵盤和Qwerty鍵盤的設備轉向以觸摸操做爲主的設備。前Trolltech工程師意識到他們須要一個很是特別的方式來建立應用支持諾基亞參與競爭。瀏覽器
當史蒂夫·喬布斯在iPhone面世時說iPhone比競爭對手領先五年時,基本上是正確的。可能由於Google的高官們意識到了iPhone的領先優點,Android已經縮短了一些差距。不幸的是,諾基亞最終放棄了它本身的基於Qt的設備,轉而支持Windows Phone,然而他們在軟件上花費了太長的時間,最後他們在生態系統的競爭中遠遠落在後面。他們把Qt出售給了一個主要的服務供應商——Digia,Digia最近爲Qt這個產品創建了一個獨資的實體——the Qt Company。只有從諾基亞徹底解脫出來後,Qt才又迴歸到它做爲跨平臺框架的本源,開始支持主流的移動平臺。然而,與此同時,其餘人已經看到了諾基亞投資移動應用創建起來的偉大基礎,所以,BlackBerry 10(黑莓10),Jolla Sailfish(旗魚),Ubuntu Mobile和Tizen平臺都選擇Qt做爲核心框架。app
從我的角度來講,在2011年早些時候,一些開發人員用Qt爲Symbian(塞班)重寫了一個流行的iOS遊戲。當時UI設計和通用調試工具還有點不成熟,但在工做過的全部平臺中,它擁有最簡單的學習曲線和最愉快的開發經驗——儘管Qt的核心使用了對開發者不太友好但高性能的C++,但Qt甚至在某些配置至關低的硬件上也達到了60fps的性能。學習Qt新的UI技術——Qt Quick至關簡單,您能夠在短短几天內爲遊戲構建出菜單界面。框架
HTML5是開發者在構建跨平臺移動應用時最流行的選擇,然而它彷佛慢慢有點兒失寵。Web browsers和Web views在每個平臺上均可用,web開發者能夠把建立網站的技術平移到構建App上。像Cordova(PhoneGap之類的開源框架讓使用HTML5的開發者能夠訪問移動設備的附加功能,而且將應用打包成每一個平臺的原生格式也很簡單。額外的好處是,您一般能夠用最小的付出,同時擁有一個基於Web的應用和一個放在應用商店裏的應用。在構建以UI爲中心的應用時,HTML5一般比原生應用更有效率。當涉及到使用庫和框架來構建移動web應用時,HTML5也有一些尷尬。混合web應用程序有一個特別的優點(至少在iOS上),可以直接更新他們的代碼,避開應用程序商店的審查過程(除了重大變化)。工具
鑑於其廣泛性和龐大的開發者基礎,爲何HTML5不是默認的跨平臺方法?儘管有許多優勢,混合web應用開發者一直在和性能問題作鬥爭(必定程度上是因爲不完整或過期的webview實現形成的,在最新版本的iOS和Android上,這個問題已經被修復了,儘管這將須要一段時間來滲透整個安裝基數)。還有一個問題是各類各樣的移動瀏覽器對標準的支持亂七八糟(這點正在改善但還遠遠沒有完全解決)。Web技術尚未真的被設計來知足移動用戶如今期待的充滿動畫效果的UI。性能
一些很是高調的消費類初創公司已經公開從web混合應用切換到了原生移動應用。關於這些切換,最多見的說法是缺少足夠的相關工具。能夠確定的是,讓web apps在內存受限的前提下在移動設備上表現良好是可能的,但鑑於當前的調試和性能分析工具的現狀,與生產原生應用相比,那仍然不是一件容易的事情。這麼說吧,並非全部的應用程序須要完美的UI動畫,我也不是拿HTML5和原生應用相比。因此,在下文中我將介紹它和Qt的比較,敬請期待!學習