跨平臺工具能否終結手機平臺大戰?
HTML5支持所有平臺通過瀏覽器提供應用,VisionMobile今年的開發者經濟報告也顯示,移動網頁(HTML5是其子類)已成為除了Android、iOS之外的第三大開發者選擇平臺。

Platform X(from visionmobile)
當然,HTML5能否取代原生應用這種說法仍然有待考證。比起基于HTML5的應用,原生應用可提供更豐富的功能、更出色的性能,更高級的安全設置。quirksmode.org的調查報告顯示,每個移動WebKit的實現方式都略有不同,而這會影響HTML5應用的運行效果。Netbiscuits最近的白皮書報告統計,智能手機支持18種HTML5功能,主流智能手機僅部分支持(或者不支持)這些功能。除此之外,HTML5在執行過程中也存在平臺分裂性。適用于iPhone平臺的功能未必支持運行于RIM或者三星設備,反之亦然。Forrester則針對HTML5 vs.原生應用的論戰點評道,“關于‘原生應用 vs 網絡’的爭論仍然沒有多大意義,這不是非此即彼的問題,而是兩者都無法取舍的問題”。
跨平臺開發工具
新型跨平臺工具比普通的HTML5而易令人產生興趣,因為它們可提供比基于HTML5的瀏覽器更高級的運行性能和功能。這些開發應用的工具可歸為兩類:
1)網頁應用/混合應用。這些應用基于網頁引擎(網頁瀏覽器),一般是用HTML/CSS/JavaScript編寫而成。
2)原生應用。這些應用可編譯到機器代碼,一般用C++或類似的語言編寫。
跨平臺工具還只是一個初級市場,其主導力量是近幾年出現的一些初創企業。以下圖表根據應用的復雜性和運行性能,反映跨平臺工具市場所提供的不同解決方案。

cross platform(from visionmobile)
傳統網站:上圖左下角就是傳統網站,其表現性能有限,但卻支持運行于所有平臺,并且幾乎沒有任何復雜度。只要所有平臺都支持HTML5技術標準,普通的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是一個可支持本地C++移植的跨平臺UI框架,主要支持諾基亞平臺。MoSync主要用于C++開發環境的跨平臺工具,可與Eclipse IDE兼容,同樣可在開源授權條件下使用。
#p#
添加本地擴展包
傳統的跨平臺工具主要包括Java、Flash Lite和移動HTML。這些開發工具所展現的運行性能通常并不理想,其應對方案就是為其添加本地擴展包。可以向IDE添加額外的SDK/NDK庫,同時支持其訪問低端的硬件功能。開發者可通過設備數據庫(它決定特定設備上可執行哪些條件式代碼)讓應用訪問硬件功能。
有些跨平臺工具供應商已經創建了擁有多種不同精細程度的設備數據庫。設備數據庫通常包含屏幕尺寸、輸入形式、操作系統版本、硬件規格的相關細節、工作區中的已知漏洞等信息。
開發者使用本地擴展包,就有可能克服Java的一些內在局限性。與“一次性編寫,運行于多個平臺”的方法不同,開發者可將90%的時間用于開發一個通用代碼庫,然后用剩下的10%時間,根據各個平臺和設備的特點,添加本地擴展包。對軟件純化論者來說,這種90:10的解決方案雖然并不算***明,但卻能夠降低應用運行于多個平臺的復雜度。開發者通過這種方法,就只需管理一個代碼庫,在不損害功能的前提下,將其移植到目標設備中。從原則上說,使用添加了擴展包的跨平臺引擎開發的應用所展現的性能,應該會比直接針對目標設備開發的內容更為遜色。
結語
已有跡象表明,除了Android、iOS和Windows Phone 7等科技巨頭推出的平臺之外,QNX(RIM)、MeeGo(英特爾、中國移動)和Bada(三星)等操作系統的平臺分裂現象將會消失。
需鎖定整個市場用戶的開發者正面臨針對所有平臺和設備開發產品的艱巨任務,假如他們能夠使用跨平臺引擎,其生產效率將大大超過逐個針對各平臺開發內容。
較早采用跨平臺工具的先行者將是那些需瞄準大眾市場的消費者企業,例如傳媒公司、游戲工作室、娛樂公司、銀行以及所有需要開發B2C應用的品牌企業,政府機構也常需要向大眾提供無差別的服務,它們也將成為跨平臺工具的客戶。另一部分較早接觸跨平臺工具的群體是大型企業家的***信息官,因為其公司的高級員工需要使用智能手機訪問公司內部數據。如果這些先行者們的需求成功促使跨平臺應用產品價格下調,推動解決其中的技術穩定性問題,那么跨平臺工具就有可能成為應用開發市場的主流。
假設更多開發者轉向了跨平臺工具,那么移動領域現有內容發布渠道的權力就會受到挑戰。應用數量將不再是衡量主流平臺及新興平臺影響力的重要標準,這樣可以給小型平臺創造更公平的競爭環境。
若C++跨平臺引擎若能完全植入原生平臺和設備擴展包,網頁應用和HTML5也許成為傳統平臺***的市場主導力量。屆時原生應用開發者也許就會重新考慮是否要選擇跨平臺IDE,而非直接鎖定Android、iOS和WP7。在這種情況下,跨平臺IDE將成為與本地平臺地位一樣,甚至是更重要的競爭者,這也將徹底顛覆今天手機平臺大戰的格局。
【編輯推薦】