该文章最早发表于IEEE Software杂志,由InfoQ及IEEE计算机协会为您献上。
在计算机与软件领域,鲜有能够如同智能终端的发展一样,显著影响我们的世界。对于不停地运行各种任务和服务,消费者似乎拥有无穷无尽的热情。同时,新应用涌现速度也令人印象深刻。如果最近经常旅行,任何一个人在任何一个候机室观察自己周围的人,肯定能够发现这样的场景:他们在使用移动服务,不仅在处理邮件,还在购物、支付、看电影,甚至是在抵押贷款。(有传言说,某些设备甚至在拨打电话)。
软件产业的模式正转向基于Web的软件。曾经针对特定计算机架构、CPU、操作系统和设备开发的应用,目前正在越来越多地转向Web,并且将在浏览器或兼容的运行时环境中。未来包括个人和企业用途的大部分终端用户软件都将会基于Web。对一般的计算机用户而言,Web浏览器会是符合他们大部分用途的主要软件环境,从而有效取代传统操作系统在过去曾经扮演的核心角色。我们相信向基于Web终端用户软件的转变,将为桌面和移动设备两个领域都带来巨大影响。尽管在撰写本文时,针对特定设备或操作系统编写并与Web结合的本地移动应用还有很可观的势头,但显然基于Web的软件在移动设备领域也将扮演至关重要的角色。实际上,我们预计下个十年的竞争将在本地应用与纯HTML5开放性Web应用1之间展开。本文中,我们介绍了由Nokia研究中心开发的Cloudberry,它是一个基于HTML5的云手机软件平台。
云手机的一个核心价值在于,设备上几乎任何一个面向用户的应用或特性都可以从服务器端进行变更,并且能够立刻将变更应用到全世界潜在的数以百万计的设备。这将会加快应用和服务的部署和更新的生命周期,并且简化了为不同用户和目的定制设备的工作。另一个关键价值点适用于拥有多设备的人——也就是说,能够让用户毫不费力地从不同设备使用相同的应用和数据。
云手机是一种将所有面向用户的功能都从网上动态下载和缓存的移动设备,包括所有应用甚至设备整个顶层用户界面(UI)。想要了解移动云系统的更多信息,请阅读本文末尾的“移动云系统中的相关工作”。云手机将拥有以下若干关键特性。
在传统移动设备上,设备顶层用户体验一般采用本地方式编写;Web浏览器仅是系统提供的众多应用之一。而在Cloudberry中,Web运行时则是系统的核心内容,它驱动整个顶层UI和所有应用。任何本地软件都不会直接暴露给用户。
在Cloudberry中,所有移动设备应用都被做为Web应用,包括电话拨打、联系人、日历、短信、音乐播放器和地图等核心应用。
Cloudberry中应用开发模型完全基于Web技术——具体来说是基于HTML、CSS和JavaScript。Cloudberry中将不会有二进制应用(指本地应用),应用也不必进行静态编译或链接;开发者可以使用标准基于Web的开发工具。
Cloudberry是一个“零安装”平台——在Cloudberry中不存在传统意义上应用安装的概念。从逻辑上讲,每个应用就像是个网页:它只不过是个链接,由Web运行时动态加载和缓存必要数据和需要执行的代码。而服务器端软件变更后,移动设备的更新将自动完成。实际上,每个设备整套应用完全是动态的,并且根据需要(由服务提供者或用户自身)频繁变更。
云手机上的全部应用和用户数据的主拷贝都存储在云端。这让用户能够在不同设备间轻松地切换,因为他或她的所有设备都能够访问相同的应用和数据。用户在各个设备上的数据会被自动备份到云上。
对任何手机而言,一个关键元素是能够在没有可用网络联接的情况下使用。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客户端栈(注:指一套完整的客户端组件)由若干组件构成:
(点击图片以放大查看)
图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系统证明了这样一个转变在移动设备领域是可行的。
Antero Taivalsaari是一位就职于Nokia的杰出工程师。 他的研究方向是Web应用技术,特别是针对移动设备基于Web的软件开发。Taivalsaari拥有芬兰Jyväskylä大学计算机科学博士学位。联系方式:[email protected]。
Kari Systä拥有芬兰Tampere科技大学计算机学科博士学位,现已是该大学计算机科学教授。他的研究方向包括Java平台及JavaME。联系方式:[email protected]。
Cloudberry系统灵感来自于我们之前构建Lively Kernel1的经验,它是一种真正交互式探索性JavaScript编程环境,被设计成可在标准Web浏览器中运行而无需任何修改或插件。在移动设备领域,与之最相似的系统是惠普(Palm)WebOS2。Cloudberry与WebOS的关键不同在于应用模型。Cloudberry从一开始就围绕着开放式HTML5应用模型构建而不需要显性的应用安装,而WebOS则采用了客户应用模型——围绕着阶段和场景的概念构建——需要打包和安装应用。最近WebOS开始采用HTML5风格应用模型。其他有关的系统包括 Google的Chrome OS和Jolicloud。目前Chrome OS和Jolicloud的目标都是桌面系统而不是移动设备。尽管如此,有理由期待这些系统最终也会支持移动设备。
2011年7月,Mozilla公布了开发Boot to Gecko(B2G)计划:一个特别专注于移动设备用于开放式Web的完整、独立的操作系统。在2012年世界移动通信大会(Mobile World Congress)上,Mozilla宣布西班牙的电信供应商Telefónica打算发售基于B2G的移动设备。Mozilla还宣布Adobe和高通将支持该项目,另外德国电信创新实验室也会加入该项目。在2011年Nokia终止MeeGo平台开发后,Intel宣布将由Tizen继续开发MeeGo平台并使用HTML5作为主要应用模型。目前Cloudberry和Tizen之间并没有关联。从技术角度看,二者之间一个关键不同是,Tizen使用W3C Widget应用模型3——要求显式的应用安装——而不是像“零安装”的HTML5应用模型中应用实际上只是连接。一直以来,云手机一词被独立用于大量其它语境中。Yan Lu及其同事4用这个词来描绘依赖主要在服务器端运行的网络流应用的瘦移动设备,这更像是Sun公司的(现在属于Oracle的)Sun Ray无状态客户端平台里的应用。这个词也被用于描述移动电话号码交换系统——该系统主要用于发展中国家——在这些国家里许多用户共享同一部移动电话。在这一领域中,Movirtu是一家领先的商业供应商。据我们所知,Cloudberry仍是唯一将移动电话上的全部终端用户软件环境虚拟化的系统,所以移动设备全部应用(包括核心应用)与全部顶层用户体验都是从云端下载。
本文最早发表在IEEE软件杂志。IEEE软件的任务是目标是建立一个引领未来软件开发的社区及实践者。杂志通过传播可靠、有用、前沿的软件开发信息,帮助工程师和管理者把握日新月异的科技变化。
查看英文原文:Cloudberry: An HTML5 Cloud Phone Platform for Mobile Devices