跨平臺工具如何終結操作系統戰爭
:
Android、iOS和Windows Phone平臺的對決一直是過去一年行業內的話題。但是手機平臺之間市場份額的爭奪并不想業內許多人認為的那樣具有決定性。
業內一種流行的觀點認為:整個市場將不可避免地走向蘋果與谷歌雙寡頭壟斷。蘋果應用程序商店已經擁有超過40萬個應用。Android方面則增長迅速,現在已經有超過25萬個應用做基礎,預計今年年底就能追上蘋果。根據應用商店分析公司Distimo的數據,所有應用商店中近80%的應用被這兩個市場巨頭控制。市場研究機構高德納(Gartner)2011年第1季度的數字顯示,iOS和Android共同的市場占有率為53%,并且這個數字還在上升。
但雙寡頭可能受到移動網絡和跨平臺工具的挑戰。HTML5賦予所有其他平臺通過瀏覽器提供應用的能力。VisionMobile最近的開發者經濟報告顯示,在獲得開發者關注度方面,移動互聯網(HTML5是其中一個子集)排在Android和iOS平臺之后,已經是第三大流行的開發平臺。
與此同時,HTML5被炒作過度,那種認為HTML5將取代所有原生應用的想法需要經過現實的檢驗。與基于HTML5的應用相比,原生應用將會繼續提供更為豐富的功能、更好的性能和更高的安全性。quirksmode.org的研究表明,每一個移動WebKit的實現略有不同,這可能導致基于HTML5的應用出現問題。在最近的白皮書中,移動網站和應用程序發布平臺Netbiscuits測試了智能手機對HTML5中18個功能的支持,結果發現主流智能手機也只能對其中的一些重要功能提供部分支持,或者根本不支持,實現也是支離破碎。iPhone上可以運行的應用黑莓和三星手機可能就無法運行,反之亦然。或引用信息技術分析公司Forrester在HTML5與原生辯論中的言論:應用和互聯網之爭仍將繼續……兩者是無關的。問題不在于是否要在應用和移動網絡中選擇一個,兩者將并存。
跨平臺開發工具概覽
新類型跨平臺工具比純HTML5更有趣,因為比起基于HTML5的瀏覽器,它們能夠提供更好的性能和功能。這些工具開發出的應用大致被分為兩類:
1)網絡應用/混合應用。這些應用程序利用網絡引擎(“網絡瀏覽器”),通常用HTML / CSS / JavaScript編寫。
2)原生應用。這些應用被編譯成機器代碼,并經常以C++或相似的語言編寫。
過去幾年來,跨平臺工具作為一個新興的市場,出現了大批活躍的初創公司。下圖說明在跨平臺工具市場,復雜性和性能之間的不同取舍。
![]() |
傳統網站:左下角為傳統網站,性能有限,但在沒有增加復雜性的情況下可以訪問所有平臺。一旦所有瀏覽器都支持純HTML5 ,那它也會被歸到這個區域。
網絡應用/混合應用:圖表中與傳統網站相鄰的是HTML5網絡應用,可以下載至瀏覽器離線運行。它們可以提供更好的性能,但也稍微有些復雜。其中往上一點是運行模擬原生的跨平臺工具細分市場。這些工具提供更好的性能,但如果該工具支持多種平臺復雜性也會更高。在這里我們發現用HTML5/CCS3和JavaScript編寫的網絡應用,附帶額外的原生元素,一般內置在原生包裝中。這些跨平臺工具往往會添加原生擴展,以便能訪問一些低級別的原生功能。PhoneGap就是這個細分市場中的例子,它通常就被用作與Sencha Touch框架串聯。其他運行在PhoneGap頂端的工具還有WorkLight和appMobi。
與細分市場密切相關的是混合工具,它們將HTML5/JavaScript轉換成真實的原生源代碼。混合工具的例子就有Appcelerator的Titanium。
其他類型的解決方案分為網絡主標題/基于Java、Lua、ActionScript或其他不常用語言的混合應用。圖表顯示了雖然非常復雜,但碎片化嚴重的Java ME的性能依然低下。跨平臺工具Corona SDK和DragonRAD基于Lua。Rhodes基于HTML /Ruby,而OpenPlug使用ActionScript(Flash)作為源代碼。Kony使用拖放來開發企業網絡應用。關于性能/復雜的取舍,這些解決方案中的大多數都沒有可靠的信息,因此上圖中的所示并不能代表它們確切的位置。一般情況下,這些工具產生的代碼編譯或重新編譯成原生ARM機器碼就會獲得較高的性能。
原生應用:第二個主要類別是原生應用。在原生應用跨平臺工具中,開發人員經常在C / C + +或C#的同一個代碼庫中一起工作,然后在半自動移植到目標平臺和設備上。原生代碼的性能有顯著提高,但復雜性也一樣。在方面的例子有Airplay、QT和MoSync。Airplay SDK(現在名為Marmalade)起源于3D游戲,但也可以用作一般的C++跨平臺工具。Qt是一個跨平臺的UI框架,也可用于本機C + +移植。Qt主要支持諾基亞的傳統平臺。MoSync是一個一般用于C++開發的跨平臺工具,集成Eclipse IDE,并在開源(GPL)許可之下。
超越Java的跨平臺:原生擴展
跨平臺開發的傳統方法滿足最低要求,Java、Flash Lite和移動HTML都采取這種方法 。這種方法犧牲性能,漂亮界面和訪問特定設備的功能。
一種解決辦法是添加原生擴展。它們可以為IDE提供額外的IDE SDK/NDK庫,并還可以獲得訪問低級別硬件功能的權限。低級別的硬件功能可以由設備數據庫管理。設備數據庫控制的條件代碼可以在給定的設備上執行。
一些跨平臺廠商已經建立了細節層次不同的設備數據庫。一個設備數據庫包含屏幕尺寸、輸入方式和準確的OS版本等信息,此外還有詳細的硬件配置和已知錯誤解決方法。
使用原生擴展,可以克服困擾Java的固有的局限性。不用“編寫一次,到處運行”,開發者可以花90%的時間制定一個共同的代碼庫,再花10%的時間為每個平臺和設備加入原生設計模塊和擴展。對于軟件純化論者來說,90/10的解決辦法可能似乎不是很優雅,但它能夠在搭載超過5種操作系統平臺的成千上萬臺設備上應對難以置信的復雜性。利用這種方式,應用開發者可以管理一個代碼庫,并可以在不丟失功能的情況下將其移植到目標設備。原則上,相比較直接為目標設備開發,使用(C++)附帶擴展的跨平臺引擎應該能夠在損失最小性能的前提下,提供類似的功能。將共同代碼庫調整后用于100臺設備,經濟規模顯著。
跨平臺的顛覆潛力
有跡象表明,平臺碎片化將會消失。這不只是Android、iOS和Windows Phone 7,它們有財大氣粗的企業巨頭支持。市面上還有像QNX(RIM)、WebOS(惠普)、MeeGo(英特爾、中國移動)和Bada(三星)等較小公司的平臺。此外還有一些過去遺留下來的平臺,至少還將在市面上存在幾年時間,包括Windows Mobile、黑莓OS、Symbian、BREW、Java ME和Flash。如果再把主流的桌面平臺(Windows、Mac OS、Ubuntu)、游戲機、機頂盒、汽車,和其他電器包括進來,平臺數量將難以管理。
應用開發者的客戶希望觸及整個市場,因此開發者必須面對支持所有平臺和設備的艱巨任務。如果他們可以使用一個跨平臺引擎,相比較為每種設備設置一個內部開發團隊,生產率將獲得巨大提高。
跨平臺的早期采用者將最有可能成為龐大的消費企業,它們需要針對大眾市場,如媒體公司、游戲公司、娛樂公司、銀行和任何開發B2C應用的任何品牌。同樣,政府機構往往需要提供無差別待遇訪問他們服務和跨平臺的工具,使他們能夠做到這一點。另一批跨平臺工具的早期用戶是大型企業的首席信息官。他們面臨越來越多高管們的要求,他們希望使用自己喜歡的智能手機安全地訪問公司的內部數據。一旦這些早期使用者壓低價格,并解決好穩定性問題,我們應該會看到跨平臺工具在主流應用開發市場獲得快速發展。
假設更多開發者遷移至跨平臺工具,移動領域的權力分配將受到挑戰。目前占據市場的平臺和即將上市平臺應用數量的差距將會縮短。這將允許較小平臺在公平的競爭環境中競爭。
網絡應用和HTML5應該會極大地挫傷傳統平臺的市場力量。當C + +跨平臺引擎可以提供的性能和功能,和直接在目標平臺上編碼相差無幾,那它就將成為棺木上的最后一顆釘子。如果跨平臺引擎可以完全整合原生平臺和設備擴展,那這就將是可能的。在這種情況下,原生應用開發者可能會重新考慮Android,iOS和WP7,選擇在一個跨平臺IDE上進行編碼,而不是具體哪個平臺。這樣的話,跨平臺IDE將變得和原生平臺平等,甚至變得十分重要。至少,今天的操作系統平臺之爭將轉移到一個完全不同的水平。