该文章最早发表于IEEE
Software杂志,由InfoQ及IEEE计算机协会为您献上。
在计算机与软件领域,鲜有能够如同智能终端的发展一样,显著影响我们的世界。对于不停地运行各种任务和服务,消费者似乎拥有无穷无尽的热情。同时,新应用涌现速度也令人印象深刻。如果最近经常旅行,任何一个人在任何一个候机室观察自己周围的人,肯定能够发现这样的场景:他们在使用移动服务,不仅在处理邮件,还在购物、支付、看电影,甚至是在抵押贷款。(有传言说,某些设备甚至在拨打电话)。
软件产业的模式正转向基于Web的软件。曾经针对特定计算机架构、CPU、操作系统和设备开发的应用,目前正在越来越多地转向Web,并且将在浏览器或兼容的运行时环境中。未来包括个人和企业用途的大部分终端用户软件都将会基于Web。对一般的计算机用户而言,Web浏览器会是符合他们大部分用途的主要软件环境,从而有效取代传统操作系统在过去曾经扮演的核心角色。我们相信向基于Web终端用户软件的转变,将为桌面和移动设备两个领域都带来巨大影响。尽管在撰写本文时,针对特定设备或操作系统编写并与Web结合的本地移动应用还有很可观的势头,但显然基于Web的软件在移动设备领域也将扮演至关重要的角色。实际上,我们预计下个十年的竞争将在本地应用与纯HTML5开放性Web应用1之间展开。本文中,我们介绍了由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支持离线应用的特性2以及专有的数据缓存机制,来保证应用和应用数据在设备离线情况下能够使用。总体而言,由于我们将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)语言3编写,以保持应用和周边的设备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浏览器安全模型4。图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
ME5或Android)的移动软件平台有着惊人的相似性。从这方面来说,Cloudberry系统整体架构不需要任何特别的验证。Cloudberry与其他如JavaME或Android等系统相比的一项关键不同,是它能够以极快节奏更新应用及其组件,因为服务器端对应用的主拷贝及其组件的任何变更都会几乎立刻在全世界潜在的数百万客户端设备上体现出来。我们还没有测试过这些特性的可扩展性,但正在研究若干与系统安全性和整体可扩展性相关的主题。
剩余的问题和挑战
我们讨论了在早期工作6,7中将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系统证明了这样一个转变在移动设备领域是可行的。 |