【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Cloudberry:面向移动设备的 HTML5 云手机平台

  • 2013-08-01
  • 本文字数:7031 字

    阅读完需:约 23 分钟

该文章最早发表于 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 系统证明了这样一个转变在移动设备领域是可行的。

参考文献

  1. T. Mikkonen and A. Taivalsaari, “ Apps vs. Open Web: The Battle of the Decade ”, Proc. 2nd Workshop Software Eng. for Mobile Application Development (MSE 11), 2011;
  2. I. Hickson, “HTML5: A Vocabulary and Associated APIs for HTML and XHTML,” World Wide Web Consortium (W3C) Internet draft, work in progress, 2012.
  3. R. Rischpater and D. Zucker, Beginning Nokia Apps Development: Qt and HTML5 for Symbian and MeeGo, APress, 2010.
  4. M. Zalewski, Browser Security Handbook, Google, 2008.
  5. R. Riggs et al., Programming Wireless Devices with the Java 2 Platform, 2nd ed., Addison- Wesley, 2003.
  6. A. Taivalsaari et al., Web Browser as an Application Platform: The Lively Kernel Experience, tech. report TR-2008-175, Sun Microsystems Labs, 2008.
  7. A. Taivalsaari and T. Mikkonen, “The Web as an Application Platform: The Saga Continues,” Proc. 37th Euromicro Conf. Software Engineering and Advanced Applications (SEAA 11), IEEE CS, 2011, pp. 170-174.

关于作者

Antero Taivalsaari是一位就职于 Nokia 的杰出工程师。 他的研究方向是 Web 应用技术,特别是针对移动设备基于 Web 的软件开发。Taivalsaari 拥有芬兰 Jyväskylä大学计算机科学博士学位。联系方式: antero.taivalsaari@nokia.com

Kari Systä拥有芬兰 Tampere 科技大学计算机学科博士学位,现已是该大学计算机科学教授。他的研究方向包括 Java 平台及 JavaME。联系方式: kari.systa@tut.fi

移动云系统中的相关工作

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 仍是唯一将移动电话上的全部终端用户软件环境虚拟化的系统,所以移动设备全部应用(包括核心应用)与全部顶层用户体验都是从云端下载。

参考文献

  1. A. Taivalsaari et al., Web Browser as an Application Platform: The Lively KernelExperience, tech. report TR-2008-175, Sun Microsystems Labs, 2008.
  2. M. Allen, Palm WebOS, O’Reilly, 2009.
  3. M. Cáceres, Widget Packaging and XML Configuration Specification, World Wide Web Consortium ( W3C ) recommendation, Sept. 2011.
  4. Y. Lu, S. Li, and H. Shen, “Virtualized Screen: A Third Element for Cloud-Mobile Convergence,” IEEE Multimedia, April–June 2011, pp. 4–11.

本文最早发表在 IEEE__ 软件杂志。 IEEE__ 软件_ 的任务是 __ 目标是建立一个引领未来软件开发的社区及实践者。_杂志通过传播可靠、有用前沿的软件开发信息,帮助工程师和管理者把握日新月异的科技变化。

查看英文原文: Cloudberry: An HTML5 Cloud Phone Platform for Mobile Devices


感谢黄玲艳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-08-01 10:433524
用户头像

发布了 256 篇内容, 共 67.9 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Hystrix-服务容错处理:什么是Hystrix,鲁班学院二期

Geek_f90455

Java 程序员 面试 后端

java 通过 SmbFile 类操作共享文件夹,膜拜大牛

JVM调优资料

Java 程序员 面试 后端

Java-进阶:集合框架2,熬夜整理华为最新Java笔试题

JVM调优资料

Java 程序员 面试 后端

404,【大牛系列教学

欢喜学安卓

Java 程序员 面试 后端

apk瘦身;如何缩小体积呢,Java面试笔试题及答案

欢喜学安卓

Java 程序员 面试 后端

ELK性能优化实战总结:我强任我强,美的Java面试题

Geek_f90455

Java 程序员 面试 后端

GitHub-标星过万!腾讯技术官发布的,腾讯Java社招面试经验

Geek_f90455

Java 程序员 面试 后端

java springboot,大专生面试阿里P7居然过了

JVM调优资料

Java 程序员 面试 后端

保持信心

Nydia

Java个人学习之旅(第十天),黑马程序员Java全套视频

JVM调优资料

Java 程序员 面试 后端

Java 集合容器篇面试题(上,Java中高级程序员进阶

JVM调优资料

Java 程序员 面试 后端

JavaScript是解释型语言--V8、JIT,Java重点知识大全

JVM调优资料

Java 程序员 面试 后端

异或位算法的高效玩法

陈皮的JavaLib

Java 面试 算法 8月日更

常见的静态负载均衡算法

Albert

算法 8月日更

Vue深入学习3—数据响应式原理

魁首

HashMap源码解析,Java黑马程序员资源

Geek_f90455

Java 程序员 面试 后端

数据缓存历险记(三)--老头的LRU很带劲

卢卡多多

redis LRU 8月日更

2021最新版SpringCloud高频面试题分享,【性能优化实战

欢喜学安卓

Java 程序员 面试 后端

Dagger2源码分析(二,深入理解Java虚拟集百度云

Geek_f90455

Java 程序员 面试 后端

Dubbo如何支持本地调用?InJvm方式解析,阿里官方推荐

Geek_f90455

Java 程序员 面试 后端

IDEA的中文注释引起的程序报错!,那些被大厂优化的程序员们

JVM调优资料

Java 程序员 面试 后端

Java 反射 getClass(),最新Java大厂高频面试题

JVM调优资料

Java 程序员 面试 后端

Vue深入学习2—虚拟DOM和Diff算法

魁首

DOM Vue 3 Diff

C#索引器的实现,黑马程序员Java基础入门

Geek_f90455

Java 程序员 面试 后端

Apache APISIX 2.8 正式发布,带来更多新功能!

API7.ai 技术团队

开源 网关 APISIX

J2EE基础集合框架之Map集合,公司初级程序员Java面试题

JVM调优资料

Java 程序员 面试 后端

Git-如何优雅地回退代码,字节跳动内部学习资料泄露

Geek_f90455

Java 程序员 面试 后端

【设计模式】适配器模式

Andy阿辉

C# 后端 设计模式 8月日更

20位大厂面试官推荐的《Java面试八股文,高级架构师百度云资源

欢喜学安卓

Java 程序员 面试 后端

ArrayList(Java8,阿里大牛把「服务雪崩」玩到了极致

Geek_f90455

Java 程序员 面试 后端

C#位运算,面试要掌握这几个关键点

Geek_f90455

Java 程序员 面试 后端

Cloudberry:面向移动设备的HTML5云手机平台_移动_Kari Systa_InfoQ精选文章