Cloudberry:面向移動設備的HTML5云手機平臺
在計算機與軟件領域,鮮有能夠如同智能終端的發展一樣,顯著影響我們的世界。對于不停地運行各種任務和服務,消費者似乎擁有無窮無盡的熱情。同時, 新應用涌現速度也令人印象深刻。如果最近經常旅行,任何一個人在任何一個候機室觀察自己周圍的人,肯定能夠發現這樣的場景:他們在使用移動服務,不僅在處 理郵件,還在購物、支付、看電影,甚至是在抵押貸款。(有傳言說,某些設備甚至在撥打電話)。
軟件產業的模式正轉向基于Web的軟件。曾經針對特定計算機架構、CPU、操作系統和設備開發的應用,目前正在越來越多地轉向 Web,并且將在瀏覽器或兼容的運行時環境中。未來包括個人和企業用途的大部分終端用戶軟件都將會基于Web。對一般的計算機用戶而言,Web瀏覽器會是 符合他們大部分用途的主要軟件環境,從而有效取代傳統操作系統在過去曾經扮演的核心角色。我們相信向基于Web終端用戶軟件的轉變,將為桌面和移動設備兩個領域都帶來巨大影響。盡管在撰寫本文時,針對特定設備或操作系統編寫并與Web結合的本地移動應用還有很可觀的勢頭,但顯然基于Web的軟件在移動設備 領域也將扮演至關重要的角色。實際上,我們預計下個十年的競爭將在本地應用與純HTML5開放性Web應用之間展開。本文中,我們介紹了由Nokia研究中心開發的Cloudberry,它是一個基于HTML5的云手機軟件平臺。
云手機的一個核心價值在于,設備上幾乎任何一個面向用戶的應用或特性都可以從服務器端進行變更,并且能夠立刻將變更應用到全世界潛在的數以百萬計的 設備。這將會加快應用和服務的部署和更新的生命周期,并且簡化了為不同用戶和目的定制設備的工作。另一個關鍵價值點適用于擁有多設備的人——也就是說,能 夠讓用戶毫不費力地從不同設備使用相同的應用和數據。
云手機
云手機是一種將所有面向用戶的功能都從網上動態下載和緩存的移動設備,包括所有應用甚至設備整個頂層用戶界面(UI)。想要了解移動云系統的更多信息,請閱讀本文末尾的“移動云系統中的相關工作”。云手機將擁有以下若干關鍵特性。
用戶體驗驅動的Web運行時
在傳統移動設備上,設備頂層用戶體驗一般采用本地方式編寫;Web瀏覽器僅是系統提供的眾多應用之一。而在Cloudberry中,Web運行時則是系統的核心內容,它驅動整個頂層UI和所有應用。任何本地軟件都不會直接暴露給用戶。
將應用作為Web應用開發
在Cloudberry中,所有移動設備應用都被做為Web應用,包括電話撥打、聯系人、日歷、短信、音樂播放器和地圖等核心應用。
基于Web的應用開發模型
Cloudberry中應用開發模型完全基于Web技術——具體來說是基于HTML、CSS和JavaScript。Cloudberry中將不會有二進制應用(指本地應用),應用也不必進行靜態編譯或鏈接;開發者可以使用標準基于Web的開發工具。
基于Web的部署模型和透明更新
Cloudberry是一個“零安裝”平臺——在Cloudberry中不存在傳統意義上應用安裝的概念。從邏輯上講,每個應用就像是個網頁:它只 不過是個鏈接,由Web運行時動態加載和緩存必要數據和需要執行的代碼。而服務器端軟件變更后,移動設備的更新將自動完成。實際上,每個設備整套應用完全 是動態的,并且根據需要(由服務提供者或用戶自身)頻繁變更。
云上的主拷貝
云手機上的全部應用和用戶數據的主拷貝都存儲在云端。這讓用戶能夠在不同設備間輕松地切換,因為他或她的所有設備都能夠訪問相同的應用和數據。用戶在各個設備上的數據會被自動備份到云上。
通過HTML5實現離線使用
對任何手機而言,一個關鍵元素是能夠在沒有可用網絡聯接的情況下使用。Cloudberry系統利用HTML5支持離線應用的特性以及專有的數據緩存機制,來保證應用和應用數據在設備離線情況下能夠使用。總體而言,由于我們將HTML5用于運行應用,一般來說應用大部分代碼都在客戶端利用移動設備的CPU能力和內存來執行。
(點擊圖片以放大查看)
圖1.(a) Cloudberry2011桌面,帶有四個激活但最小化到桌面的應用。(b)應用啟動器/商店。商店推薦了三個“精選應用”。此外,用戶可以從不同欄目或推薦列表中選擇應用。
應用和用戶界面舉例
雖然云手機采用與傳統移動設備不同的技術架構,但是站在用戶角度,不會看到或感到與傳統設備有任何不同。實際上,在我們最初的云手機設計首要目標之 一,就是讓傳統手機用戶立刻對云手機從外觀和感覺上感到熟悉。為了加強用戶這種感覺,在最初Cloudberry2010系統中,我們特意針對Nokia N900上所有對應的本地應用構建了類似應用。(我們當時也可以選擇將一切設計得完全不同;Cloudberry能夠兼容不同外觀和感覺的主題,遠遠超越 目前大多數移動設備上能夠使用的。)在最近Cloudberry2011(以下大部分例子來源于這一版本)中,我們更廣泛地利用了云所特有的能力。
圖1展示了Cloudberry2011的兩幅屏幕截圖;在UI風格方面,這里使用了無限2D空間概念。圖1a展現的桌面帶有四個打開的應用程序: 電話、時鐘、圖片瀏覽器和第三方HTML5 demo。駐留在無限2D空間中的應用能夠自由浮動(這很難在一張靜態截圖中體現)。諸如視差等視覺效果加強了該空間的開放和無限的感覺。用戶可以通過點 擊桌面上任何一個應用,將它轉變為全屏模式。圖2展現了一些全屏應用的例子。在圖1b中,用戶點擊了屏幕底部的云標志以啟動一個新應用。與傳統靜態應用啟 動器或網格不同的是,Cloudberry2011使用了一個動態的、服務器端生成的應用商店,該商店由若干精選應用、預置應用分類、熱門列表,以及用戶 近期使用的應用列表組成。用戶選擇一個應用(實際上是一個鏈接)后,Cloudberry客戶端下載并緩存這一應用;如果最近在這個設備上運行過該應用, 則執行緩存中已有版本。在后一種情況下,系統會檢查之前緩存的應用最近是否已在服務器端進行了升級;如果已有升級,則系統在后臺“透明地”下載升級組件。 雖然我們最初的應用集模仿了Nokia N900的本地應用,但我們最近構建了綜合性混合應用,以多種方式使用Web上的可用資源,因此應用在外觀和感覺上與任何現有本地應用都是無關的。大部分 第三方HTML5應用同樣無需修改就可以在Cloudberry中運行,盡管它們的UI布局在目標設備(Cloudberry)上并不總是最佳的。
首次使用云手機
云手機的中心思想是能夠不費吹灰之力地跨設備使用應用和數據。為了在某個特定設備上使用Cloudberry,用戶必須首先輸入憑證來建立設備與他 或她在云端的身份之間的聯系。隨后,頂層UI和已打開的應用(如果用戶之前在其他設備上打開了任何應用)就可以在這個設備上使用了。用戶身份認證在每個設 備上只進行一次。首次登錄后,設備將與這一特定用戶保持關聯,除非該用戶明確斷開他或她的身份關聯并清除設備上的全部個人數據。
技術概述
從技術角度看,Cloudberry客戶端棧(注:指一套完整的客戶端組件)由若干組件構成:
- 成熟兼容WebKit的Web瀏覽器,并定制化以支持額外特性;
- 一系列可下載的頂層UI,允許動態變更設備的全部外觀、感覺和頂層用戶體驗(早些時候,Cloudberry的全部頂層UI都是使用QML(QtQuick)語言編寫,以保持應用和周邊的設備UI完全分離;但最近我們也開始使用HTML5來實現頂層UI);
- 一套實現了手機上全部典型核心應用的Web應用(應用具有自適應的UI布局,可以在不同尺寸、分辨率和朝向的設備上靈活應用;此外HTML5也能夠支持離線使用和應用自動更新);
- 應用可以通過數據API將自己的數據透明地存儲在云端,并與云端的數據存儲進行自動同步(該API的目標是使數據存儲盡可能無縫和透明;默認情況下,所有數據都會自動同步到云端,盡管如此,數據也可以被標記為本地);
- 應用可以使用一系列設備API實現設備相關的功能(例如,撥打電話、發送短信、讀取GPS位置信息等等;在官方W3C設備API [www.w3.org/2009/dap]適用的領域,設備API基于該標準;而專有的API則被運用在標準尚未覆蓋的領域);
- 基于域和許可的安全模型限制了設備相關功能(例如設備API)的使用,只有來自可信任域的應用能夠調用它們;
- 底層進程模型使得來自不同域的應用程序能夠運行在獨立的本地系統進程中;
(點擊圖片以放大查看)
圖2.部分全屏Cloudberry核心應用的截圖:聯系人列表、日歷、圖片庫和地圖應用。
WebKit瀏覽器近期版本中包括類似的能力,但我們在這個領域的工作早于WebKit2,并且針對在應用、Web域和渲染過程之間選擇分界線提供了更多靈活性。安全存儲的安全策略文件決定了設 備和某特定Web域之間的信任等級。應用必須使用許可以明確請求訪問標準瀏覽器所提供沙箱之外的特性。這個安全模型拓展了典型Web瀏覽器安全模型。 圖3展示了Cloudberry系統的高層級架構圖。事實上,在兼容標準瀏覽器之上進行構建,意味著第三方HTML5應用無需修改即可運行。除訪問底層設 備和平臺能力外,Cloudberry核心應用與第三方Web內容間并沒有硬性分割。由于Cloudberry中設備的全部功能都是動態下載,我們特別強 調了安全性。目前我們在這一領域使用若干專有拓展,但我們期望其他業界成員能夠關注這些主題,因為移動Web應用對標準化安全機制的需求正變得越來越明 顯。
(點擊圖片以放大查看)
圖3. Cloudberry系統的高層級架構圖。云手機上,幾乎所有面向客戶的特性都是從網絡上動態下載和緩存的。
評價和討論
在我們最初的目標設備Nokia N900上,Cloudberry系統的性能最多只能被形容為“夠用”而已。在這個項目期間,移動設備及其Web運行時的性能取得了顯著增長,特別是新設 備極大改進了用戶體驗。此外,JavaScript虛擬機性能地巨大提升也幫助了我們。總之我們快速接近了這樣一種狀態:對于構建完全圍繞著基于Web用 戶體驗的移動設備而言,Web引擎性能不再是阻礙。
架構驗證
在討論云手機概念的時候,我們常常遇到一種誤解:云手機的概念與客戶端設備的“瘦”是相關的。云計算在歷史上曾經意味著使用瘦客戶端——在這種方式 下,大多數計算是在服務器端完成。因此大部分人在第一次聽說Cloudberry系統時,都會假想一個大多數工作發生在云端的模型。在實踐中,任何依賴 HTML5應用模型的系統,特別是依賴其離線運行能力的系統實際上根本不是瘦客戶端。盡管Web環境通過 Node.js(http://nodejs.org)等類庫為平衡客戶端和服務器端之間的計算需求提供了靈活的機制,現實中大多數基于HTML5環境系 統中的工作發生在客戶端。Cloudberry系統使用的運行模型實際上與其他依賴于用沙箱封裝虛擬機環境(例如Java ME或 Android)的移動軟件平臺有著驚人的相似性。從這方面來說,Cloudberry系統整體架構不需要任何特別的驗證。Cloudberry與其他如 JavaME或Android等系統相比的一項關鍵不同,是它能夠以極快節奏更新應用及其組件,因為服務器端對應用的主拷貝及其組件的任何變更都會幾乎立 刻在全世界潛在的數百萬客戶端設備上體現出來。我們還沒有測試過這些特性的可擴展性,但正在研究若干與系統安全性和整體可擴展性相關的主題。
剩余的問題和挑戰
我們討論了在早期工作中將Web瀏覽器廣泛作為軟件平臺的限制。大部分這樣的限制同樣適用于Cloudberry系 統。如果必須挑出一項妨礙基于HTML5移動平臺大規模部署的因素,我們認為應該是缺乏標準化。盡管在使Web成為有競爭力的應用平臺過程中,HTML5 和相關W3C標準活動扮演了關鍵角色,但目前兼容HTML5的Web瀏覽器提供的特性集對于現實中的應用而言仍是不完整的。
例如,在W3C對設備API定義中,僅提供對當前個人計算 機和移動設備上的平臺特性有限訪問。要訪問標準提供能力以外的設備和平臺特性,仍然必須使用專有API。這些問題顯著降低了應用的可移植性和云手機所提倡 的整體價值。我們預測要建立比HTML5更完整的Web應用平臺,必須進行新一輪大的標準化行動。標準化行動的一個關鍵目標將是更全面地將底層操作系統和 設備能力虛擬化,并保證具有必要的安全機制來安全訪問全部平臺能力。順便說一下,W3C已經開始研究下一代HTML了(www.w3.org/wiki /HTML/next)。
目前Cloudberry作為一個科研系統,還沒有立即轉化為產品的計劃。盡管如此,項目中探索的許多理念已經找到了轉化為商業產品的道路。我們相 信向基于Web軟件轉變的趨勢,將導致軟件行業從傳統二進制應用向動態交付Web應用的模式轉變。未來傳統二進制程序的用途將被主要限定在系統軟件方面, 而大量終端用戶軟件將使用Web技術開發。Cloudberry系統證明了這樣一個轉變在移動設備領域是可行的。