短暂应用的制作方法

文档序号:12167079阅读:222来源:国知局
短暂应用的制作方法与工艺

本申请是2015年11月12日提交的名为“EPHEMERAL APPLICATIONS(短暂应用)”的美国专利申请序列号14/939,627的继续申请,该美国专利申请进而要求2014年11月14日提交的名为“EPHEMERAL APPLICATIONS”的美国临时专利申请序列号62/080,009的优先权。上述两个申请通过引用并入本文。

技术领域

实施例涉及应用,具体涉及在浏览器场境内执行的短暂应用。



背景技术:

一般而言,应用或者由网络或远程服务器托管,或者被安装在客户端计算设备上。托管的应用具有灵活的优点,因为对应用的改变可以影响应用的所有用户。但是,因为互联网的性质,所以通常不认为托管的应用是安全的。安装的应用具有安全的优点,因为它们通常独立于互联网(例如从其断开)。但是,安装的应用不灵活,因为对应用的改变通常需要对应用的新的安装。



技术实现要素:

因此在以下描述中,示例实施例公开了用于提供短暂应用的多种技术,所述短暂应用可以具有封装应用的特性,因为短暂应用的代码被下载到客户端计算设备并被安装以供执行。短暂应用不需要由用户审查和授予权限,因为短暂应用是被启动,而无需由用户审查和明确授予权限,但是短暂应用可以利用仅当授予权限时才可以访问的客户端计算设备的本地资源。在一些实施方式中,这是通过管理短暂应用所利用的权限来完成的,使得短暂应用仅利用在没有用户审查的情况下使用是安全的权限或权限的版本。

在第一一般方面中,一种以直接启动模式来执行应用的方法包括:接收用户输入,以将应用从远程服务器下载到客户端计算设备,并且在客户端计算设备上启动该应用。确定该应用请求的、在通过客户端计算设备执行应用期间利用该客户端计算设备的本地资源的权限,以及将所确定的权限与以直接启动模式执行应用时需要修改该应用的执行的预定权限的列表进行比较。在没有来自用户的附加输入的情况下启动该应用,以及在所请求的权限中的至少一个未被完全授权的情况下,在该客户端计算设备上执行应用。

在另一个一般方面中,一种用于以直接启动模式来执行应用的系统包括:存储器,存储可执行指令;以及一个或多个处理器,耦合到存储器并且被配置来执行该指令以使得该系统:接收用户输入,以将应用从远程服务器下载到客户端计算设备,并且在客户端计算设备上启动该应用。一个或多个处理器被进一步配置来执行指令以使得系统:确定该应用请求的、在通过客户端计算设备执行应用期间利用该客户端计算设备的本地资源的权限,以及将所确定的权限与以直接启动模式执行应用时需要修改该应用的执行的预定权限的列表进行比较。一个或多个处理器被进一步配置来执行指令以使得系统:在没有来自用户的附加输入的情况下启动该应用,以及在所请求的权限中的至少一个未被完全授权的情况下,在该客户端计算设备上执行应用。

在另一个一般方面中,一种用于以直接启动模式来执行应用的系统包括:用于接收用户输入,以将应用从远程服务器下载到客户端计算设备并且在客户端计算设备上启动应用的装置;用于确定该应用请求的、在通过客户端计算设备执行应用期间利用客户端计算设备的本地资源的权限的装置;用于将所确定的权限与以直接启动模式执行应用时需要修改该应用的执行的预定权限的列表进行比较的装置;用于在没有来自用户的附加输入的情况下启动该应用的装置,以及用于在所请求的权限中的至少一个未被完全授权的情况下在该客户端计算设备上执行应用的装置。

以上方面的实施方式可以单独或以组合方式包括以下特征中的一个或多个。例如,在所请求的权限中的一个未被完全授权的情况下执行应用包括:修改该应用的运行时环境,使得在客户端计算设备上执行该应用时,所请求的权限中的至少一个未被完全授权。该应用可以仅利用一种或多种web技术编程语言来被编码,并且应用可以在没有编译的情况下在该客户端计算设备上执行。应用可以包含在该客户端计算设备上执行该应用所必需的全部资源,以及其中,由该客户端计算设备执行该应用所需的代码不是动态生成的。未被完全授权的所请求的权限中的至少一个可以包括:访问客户端计算设备上的无限制的存储空间的权限,以及执行该应用可以包括:在授权访问客户端计算设备上的预定最大量的存储空间的同时,在该客户端计算设备上执行该应用。未被完全授权的所请求的权限中的至少一个可以包括:访问关于客户端计算设备的位置的信息的权限,以及,执行该应用可以包括:在向所述应用通知—即使在所述客户端计算设备的GPS收发器处于活动时具有GPS级精度的位置信息也不可用时,在所述客户端计算设备上执行应用时。

在另一个一般方面中,一种以直接启动模式来执行应用的方法包括:接收用户输入,以将应用从远程服务器下载到客户端计算设备,并且在客户端计算设备上启动应用。确定该应用请求的、在由该客户端计算设备执行应用期间利用客户端计算设备的本地资源的权限,以及将所确定的权限与需要通过用户批准的预定权限的列表进行比较。在没有来自该用户的附加输入的情况下启动应用,以及在启动该应用之后,在应用正在执行的同时,提示该用户来批准所确定的权限中的一个。

在另一个一般方面中,一种用于以直接启动模式来执行应用的系统包括:存储器,存储可执行指令;以及一个或多个处理器,耦合到存储器,并且被配置来执行指令以使得该系统接收用户输入,以将应用从远程服务器下载到客户端计算设备,并且在客户端计算设备上启动应用。一个或多个处理器被进一步配置来执行指令以使得系统:确定该应用请求的、在由该客户端计算设备执行应用期间利用客户端计算设备的本地资源的权限,以及将所确定的权限与需要通过用户批准的预定权限的列表进行比较。一个或多个处理器被进一步配置来执行指令以使得系统:在没有来自该用户的附加输入的情况下启动应用,以及在启动该应用之后,在应用正在执行的同时,提示该用户来批准所确定的权限中的一个。

在另一个一般方面中,一种用于以直接启动模式来执行应用的系统包括:用于接收用户输入,以将应用从远程服务器下载到客户端计算设备并且在客户端计算设备上启动应用的装置;用于确定该应用请求的、在通过客户端计算设备执行应用期间利用客户端计算设备的本地资源的权限的装置;用于将所确定的权限与需要通过用户批准的预定权限的列表进行比较的装置;用于在没有来自该用户的附加输入的情况下启动应用的装置;以及用于在启动该应用之后在执行应用的同时提示用户批准所确定的权限中的一个的装置。

以上方面的实施方式可以单独或以组合方式来包括以下特征中的一个或多个。例如,所述提示发生在所述执行期间、当该应用需要利用权限所许可的本地资源以便继续执行时。用户被提示来批准的所确定的权限可以是:访问关于具有GPS级精度的客户端计算设备的位置的信息的权限。用户被提示来批准的所确定的权限可以是:访问客户端计算设备上的无限制的存储空间的权限。用户被提示来批准的所确定的权限可以是:从该客户端计算设备的麦克风捕获音频信息的权限。该应用可以仅利用一种或多种web技术编程语言来被编码,以及其中,应用可在没有编译的情况下在客户端计算设备上执行。应用可以包含在客户端计算设备上执行该应用所必需的全部资源,以及其中,由该客户端计算设备执行该应用所需的代码不是动态生成。

此处所述系统和方法包括展现了所托管和所安装的应用的一个或多个优点的应用环境。

附图说明

图1是可以被用于使用本文所述的技术来实现短暂应用的系统的框图。

图2是包括计算设备、应用服务器、同步服务器、以及网络的系统的框图。

图3是被用于发现和启动一个或多个短暂应用的用户界面的示意图。

图4是以直接启动模式来执行应用的方法的流程图。

图5是根据至少一个示例性实施例的、以直接启动模式来执行应用的方法的流程图。

图6示出了可以与本文所述的技术一起使用的通用计算机设备和通用移动计算机设备的示例。

具体实施方式

客户端设备所执行的web浏览器可以从远程服务器(例如托管网站的远程服务器)接收代码(例如web技术编程的代码),并且可以为了客户端设备用户的利益,而在客户端设备上执行接收的代码。

在各个实施方式中,web浏览器可以包括或安装一个或多个应用,其可以被配置来为用户执行单个任务或多个任务。在这样的实施方式中,应用可以被配置为通过web浏览器执行或解释。一般而言,浏览器可执行的应用是以web技术编程的代码来编写的程序,即被用于编程互联网可用的资源并且无需编译就可在客户端计算设备上执行的代码。web技术编程的代码被设计为完全在客户端计算设备上的web浏览器内运行,并且例如包括标记语言代码(例如HTML5)、JavaScript、以及CSS。浏览器可执行应用包含在客户端计算设备上执行该应用所必需的全部资源,并且通过客户端计算设备执行应用所需的代码不是动态生成的。

因此,浏览器可执行应用可以在具有专用用户界面的web浏览器内运行,并且可以提供比独立网站更丰富且交互性更强的功能和体验,而该应用比桌面应用可以不那么冗杂和庞大。web应用的示例包括通过浏览器执行的游戏、照片编辑器、以及视频播放器。

web应用可以包括“托管web应用(hosted web applications)”或“封装应用(packaged applications)”。可以向托管web应用授予(approve)使用客户端计算设备的本地资源的附加权限(permission),其超出浏览器所执行的典型代码被许可使用的范围(例如从本地剪贴板读取内容的能力或者总是将隐藏页面打开的能力,该隐藏页面执行诸如将数据同步以用于离线使用或者接收服务器推送的通知以向用户显示的任务)。在一些实施方式中,必须将附加权限的通知提供给用户,并且该用户必须明确地授予权限,使得用户了解该附加权限,并且可以确定是否它们应当被授权来运行该托管应用。启动托管应用隐含地针对其URL与该应用的清单中列出的那些URL匹配的所有页面来授予该应用所请求的权限,其中该清单是可以包含与web应用或扩展应用相关联的元数据的文件。清单可以包括指定与应用相关的信息的一个或多个字段,包括权限字段。在权限字段中,开发者指定可以由应用使用的经声明权限。清单文件与应用相关联,并且是提供给具有该应用的客户端计算设备的指令的一部分。一旦应用所请求的权限被授予,应用就能够使用通过授予的权限所启用的特征,而无需向用户重复请求使用该特征的权限。此外,托管web应用还在用户界面中得到特殊处理,因为可以用大图标来示出托管web应用,所述大图标可以被点击以在选项卡中或者在独立(可能是全屏)窗口中启动应用。

封装应用可以被认为绑定了其代码的web应用,使得用户可以下载web应用的所有内容,以用于通过浏览器或者在独立窗口中执行。封装应用可以不需要具有对网络的访问来为用户进行其功能,而是可以在没有接入网络的情况下在计算设备上本地地由浏览器成功地执行。

封装应用具有使用扩展应用编程接口(API)的选项,从而允许封装应用改变浏览器表现或看起来的方式。在一些情况下,封装应用可以在看起来没有在浏览器中运行的情况下操作,例如,在没有浏览器“chrome”(即,网页周围的UI元素或浏览器窗口中显示的应用内容)、选项卡、或浏览器的其他用户界面。在这样的情况下,封装应用可以在独立窗口中操作,而无需访问内容脚本或者与浏览器状态相关的API——诸如cookie、历史、书签、打开的选项卡等。在各种情况下,作为示例,封装应用可以访问USB驱动器、BLUETOOTH设备、打开原始网络套接字、充当服务器、或者访问本地文件系统。

封装应用可以看起来和感觉像非托管(native)应用,具有大屏幕设计和丰富的用户界面。封装应用可以将其所有文件绑定成单个文件(例如zip文件——诸如.CRX文件),用户下载所述单个文件并且之后安装其内容的。这种绑定意味着,与托管应用不同,封装应用不需要依赖于来自web的内容。作为示例,可以经由可信的web商店或经由各个网站来分发应用。

在一些实施方式中,API(和/或web API))可以是上述的web浏览器的元素。但是,在一些实施方式中,API(和/或web API))可以是基于web的操作系统(浏览器OS)的元素。浏览器OS可以是web浏览器(包括浏览器、媒体播放器、以及文件系统)的可启动版本。浏览器OS可以将所有用户应用和数据存储在Web上,而不是在本地硬盘驱动器上。浏览器OS(例如Chrome-OS)可以替代传统的操作系统。

web浏览器和/或浏览器OS可以包括相关联的运行时。运行时(也称为运行时系统或运行时环境)能够实现计算机语言(例如HTML和/或JAVASCRIPT)或程序(例如web浏览器)的一些行为(例如低级行为(例如内核)和/或高级行为(例如类型检查、垃圾收集和/或调试)。任何计算机语言都可以实现某种形式的运行时,而不管语言是编译语言、解释语言、嵌入式领域特定(domain-specific)语言、还是经由API调用。在一些实施方式中,运行时可以检索背景页面、返回关于清单的细节、以及侦听和响应应用生命周期中的事件。运行时能够将URL的相对路径变换为完全限定(fully-qualified)URL。在一些实施方式中,运行时可以管理应用生命周期。应用运行时管理应用安装、控制事件页面、并且可以随时关闭应用。

与托管应用相似,可以向封装应用授予使用客户端计算设备的本地资源的附加权限,其超出浏览器所执行的典型代码被许可使用的范围。在一些实施方式中,可以向封装应用授予附加权限,与托管应用被许可使用的相比,所述附加权限提供了对客户端计算设备的本地资源的更多的访问。通过封装应用,用户可以舒适地下载和安装应用,并且给予封装应用对计算设备的高层级的访问权,因为在数字市场中列出封装应用之前,该封装应用已经经过了验证和确认过程,并且信任该应用在其被下载和安装在客户端计算设备上之后不会改变。因此,用户相信下载的代码不是恶意代码,即使代码被给予了对计算设备的高层级的访问权。

相比之下,即使托管web应用已经在数字市场中被核准(approve),它本质上只不过是到网站的URL加上定义某些权限的某些元数据。因为由URL指向的网站处的代码可以改变,所以用户可能不太愿意向托管web应用授予对计算设备的高层级访问权,因为即使该代码先前已经被核准,该代码也可能变成恶意代码。

封装应用和托管web应用二者都设想到使用权限来允许在运行应用时增加对本地资源的使用。但是,因为封装应用的代码经过确认并且是静态的,所以用户愿意允许封装应用使用更危险的权限(例如能够对计算设备进行高层级访问的权限)。换言之,在代码被下载并安装在用户机器上之后,封装应用的代码不会改变。但是,因为封装应用可以利用比托管应用更危险的权限,所以在封装应用可以在客户端计算设备上安装和执行之前,必须由用户明确授权封装应用可以请求的权限中的许多权限。因此,封装应用的生命周期是下载应用、请求和授予权限、安装应用、以及之后启动和执行应用。

本文所述的示例实施方式涉及可以被称为“短暂应用(ephemeral application)”的新类型的应用,并且可以具有封装应用的特性,因为短暂应用的代码被下载到客户端计算设备并安装以供执行,但是这不需要用户审查和授予权限,因为短暂应用被立即启动,而无需用户作出对权限的审查和明确授予,尽管该短暂应用可以利用仅在被授予权限时才可以访问的客户端计算设备的本地资源。在一些实施方式中,这是通过管理短暂应用所利用的权限来完成的,使得短暂应用仅利用在用户没有审查的情况下安全使用的权限或权限的版本。因为短暂应用不需要请求授予权限,所以能够快速且有效率地启动它们。例如,使用特定权限来利用客户端计算设备的本地资源的短暂应用能够响应于单个用户输入而被下载、安装、和启动,其中允许其权限中的至少一些权限。

因此,短暂应用可以展现上述的托管web应用的益处——因为短暂应用可以快速启动,以及封装应用的益处——因为短暂应用可以本地安装以供离线使用并且可以具有比托管应用更高权力的权限。

图1是可以被用于使用本文所述的技术来实现短暂应用的系统100的框图。通过示例来示出对图1中的系统100的描绘。应当理解,可以使用其他网络配置来实现这样的技术。

系统100包括客户端计算设备110A和110B。作为示例,客户端计算设备110A和110B可以采取多个不同设备的形式,诸如个人计算机、电视、膝上型计算机、平板计算机、上网本计算机、可穿戴设备、或者支持web的电话。设备110A和110B均包括可以被用于访问各种类型的内容的操作系统120A和120B以及浏览器122A和122B。例如,这样的内容可以包括:网站、照片、视频、音频、以及可执行脚本。如图1所示,浏览器122A能够包括短暂应用130A,其可以使用本文所述的技术在计算设备110A上执行。短暂应用130A可以包括应用的相应客户端侧组件。取决于特定实施方式,短暂应用130A可以包括应用的描述和/或可由浏览器122A执行的代码,其中所述代码提供web应用的功能。类似地,浏览器122B可包括短暂应用130B,其可以使用所描述的技术在计算设备110B上执行。

在系统100中,计算设备110A和110B与网络160耦合。网络160可以包括数据访问网络,提供对互联网和/或万维网的访问。经由网络160,计算设备110A和110B(例如使用浏览器122A和122B)可以与数字市场服务器150(例如应用服务器或web商店)、应用源(origin)180通信。在该示例中,应用源180可以包括应用130A和130B的服务器侧组件。应用130A和130B可以使用多个源来操作。

短暂应用130A和130B可以从数字市场服务器150或者从应用源180下载到客户端计算设备110A或110B。为了指示应用130A或130B可以作为短暂应用来执行,可以将信息包括在应用的清单中,该信息指示该应用应当作为短暂应用来运行。例如,指示短暂应用状态的标志可以在应用的清单中被设置为真(TRUE)。然后,基于清单中的信息或指示应用可以作为短暂应用运行的其他信息,当应用在客户端计算设备110A或110B上执行时,该应用可以作为短暂应用执行。

当在客户端计算设备110A或110B上执行应用130A或130B时,该应用可以利用由其指定的一个或多个权限(例如可以在应用的清单中声明应用所指定的权限)。例如,基于应用所指定的权限,可以授权对计算设备110A和110B的本地计算资源的访问,以便使应用访问与浏览器相关的内容脚本或者API和/或对计算设备的高层级访问。当作为短暂应用来执行时,应用130A或130B可以利用应用所指定的一个或多个权限,而无需用户明确地确认或授予权限。即,当作为短暂应用执行时,用户只需要指示该应用应当由客户端计算设备110A或110B启动和执行,并且不需要单独指示要授予该应用所指定的权限。如本文更详细所解释,当应用130A或130B作为短暂应用执行时,应用所指定的权限由浏览器122A、1222B或操作系统120A、120B自动管理。

在各个实施方式中,例如,应用130A、130B所指定的权限可以授权访问USB驱动器、BLUETOOTH设备、本地存储介质、本地文件系统(例如不与存储页面或浏览器状态——诸如cookie、历史、书签、打开的选项卡相关联)、本地存储的联系人数据、本地存储的日历数据、本地存储的位置信息、以及各种系统工具(例如,防止设备进入睡眠状态的工具、提供关于客户端计算设备是否正在同步数据和后台的信息的工具、允许应用杀死另一个运行的应用的进程的工具等)。

可以从应用源180获取的web应用132A和132B可以是静态的,因为(例如经由web浏览器)访问web应用132A和132B中的一个的任何计算设备将接收相同的web应用对象(例如网页)。换言之,静态web应用关于对组成web应用的各个对象的改变不是动态的。换言之,静态web应用是通过替换(例如上传以供使用)整个web应用来改变的。在不整体替换web应用的情况下,静态web应用的开发者无法替换各个web应用对象(例如,网页或用户界面或脚本)。相反,如果开发者想要对静态web应用进行改变,则该开发者必须提交提出的经修正web应用的代码,以用于在可信服务器处使其可用之前(例如通过数字市场服务器150)重新确认和重新验证。换言之,在(例如从web应用的开发者)接收对短暂应用132A和/或132B的对象的改变后,在使得对短暂应用132A和/或132B的对象的改变可经由URL来访问之前,对短暂应用132A和/或132B的保证特性的确认作为整体再次被确认。

因此,在短暂应用132A和/或132B没有作为整体来首先成功确认和/或再次验证的情况下,短暂应用132A和/或132B的对象无法被替换、重定向、交换、重新排序、或重新编码,并且在短暂应用132A和/或132B没有作为整体来首先成功确认和/或重新确认的情况下,无法使其可经由URL访问。web应用132A和132B可以是静态的,因为web应用包含在客户端计算设备上执行应用所必需的所有资源,并且通过客户端计算设备执行应用所需的代码不是动态生成的。

组成应用132A和132B的对象可以被存储(或大体上存储)在网络化或服务器侧的计算设备150、180(例如服务器)上,并且被派发(serve)给客户端计算设备110A、110B。换言之,作为示例,客户端设备(例如计算设备110A和/或110B)利用URL来经由浏览器和/或运行时从服务器请求组成应用的对象。例如,应用132A和132B可以由安全服务器托管。这样的托管包括:向web爬取器提供对应用以及与应用相关联的代码的访问。

在一个实施方式中,可以将数字市场服务器150配置来从用户计算设备(诸如计算设备110A)接收对于安装应用的请求,并且响应于这样的请求,提供应用的安装过程(或安装包)。这样的安装过程/安装包至少可以包括所请求的应用的客户端侧组件。

在图1所示的布置中,可以将浏览器122A用于通过与数字市场服务器150交互来请求安装应用130A、130B。例如,数字市场150可以实现被用于分发web应用的网站等。作为示例,数字市场服务器150可以实现电子商务站点。数字市场服务器150可以从开发者——例如从应用源180获取应用。

对启动应用的请求可以被包括在从计算设备110A、110B到数字市场服务器150的消息中,其指示同意购买相应的web应用或启动免费提供的应用。虽然系统100仅图示了单个数字市场服务器150和应用源180,但是应当理解,系统100中可以包括附加的数字市场、服务器、或源。

在一些实施方式中,应用源180还可以实现一个或多个网站,计算设备110A和110B(例如,使用浏览器122A和122B)可以与所述网站交互以请求安装应用130A、130B、132A和132B。作为示例,短暂应用130A可以是包括清单文件的封装应用,该清单文件可以包括权限(例如,使用本地资源或者做普通web技术编程语言(例如HTML、XML代码)不被许可做的其他事情的权限)和至少一个文件,以提供连同其他文件——诸如图像文件一起的用户界面。在一些实施方式中,应用源180可以被信任,因为它包括手动审查管理组件,即人们针对安全问题、缺陷(bug)等来审查从应用源180提供的应用。此外,应用源180可以被信任,因为例如,它可以通过开发用于执行web应用和浏览器扩展的浏览器122A和122B以及操作系统的同一公司来操作。此外,应用源180可以被信任,因为它可以通过计算设备的处理器来操作自治过程(autonomous procedure),以针对安全问题、作者、缺陷等来对web应用进行确认。相反,其他源可能不太可信,例如,因为不知道它们是否包括与应用源180相同水平的自动和/或手动审查或其它监督,并且因为其他源可能不提供可信的浏览器或操作系统。可信的应用源180可以是具有将web应用源识别为可信的已知地址的、选择的少数web应用源中的一个。

浏览器122A和122B还可以向应用源180提供关于客户端计算设备上的web应用的本地使用的反馈。例如,通过从许多客户端计算设备110A和110B接收这样的反馈,应用源180可以收集关于应用实际被如何使用以及关于从应用源180访问应用之后遇到的任何安全问题的信息。因此,应用源180可以基于与安全问题相关的信号来分析web应用,其中这样的信号可以包括:基于关于web应用从应用源180被访问并由客户端计算设备执行之后该应用实际如何执行的信息的信号。例如,用户可以向应用源180报告恶意软件或缺陷。

图2是包括计算设备110(例如计算设备110A和/或110B)、应用服务器260(其可以提供市场150或应用源180)、同步服务器240、以及网络230的系统200的框图。如图2所示,计算设备110包括至少一个处理器205和至少一个存储器210。计算设备100还包括硬件组件,诸如相机203、GPS收发器207、以及麦克风209。至少一个处理器205、硬件组件、以及至少一个存储器210经由总线212来通信地耦合。例如,计算设备110可以是任何计算设备(例如个人计算机、膝上型计算机等)的元素。服务器260可以包括一个或多个处理器262、一个或多个存储器278、操作系统(O/S)264、应用服务器266、以及应用数据存储272。

如图2所示,至少一个存储器210包括代码,其可以被执行以提供操作系统(O/S)214、浏览器216、以及运行时218。操作系统(O/S)214、浏览器216、以及运行时218(一起)可以被配置为实现本文所述方法(的至少一部分)。操作系统214管理与计算设备110相关联的硬件资源,并且为计算设备110上执行的计算机程序提供公共服务。浏览器216实现上面更详细描述的浏览器的功能。

运行时218能够实现计算机语言(例如HTML和/或JAVASCRIPT)或程序(例如web浏览器)的一些行为(例如低级行为(例如内核)和/或高级行为(例如类型检查、垃圾收集和/或调试)。任何计算机语言都可以实现某种形式的运行时,而不管语言是编译语言、解释语言、嵌入式领域特定语言、还是经由API调用。在一些实施方式中,运行时218可以检索背景页面、返回关于清单的细节、以及侦听和响应应用生命周期中的事件。运行时可以管理应用生命周期。在这种情况下,运行时218管理应用安装、控制事件页面、并且可以随时关闭应用。

如图2所示,系统200还可包括同步服务器240,该同步服务器240包括一个或多个处理器242、一个或多个存储器250、操作系统(O/S)244、以及标识符数据库246。标识符数据库246可以存储唯一标识符,以实现在不同的客户端计算设备——例如计算设备110、110A和/或110B上的不同用户会话之间的同步。例如,在一些实施方式中,用户帐户允许用户对系统服务(例如应用)进行认证并且接收批准(authorization)以访问它们。为了登录用户帐户,用户可以出于财务、安全、和资源管理的目的来通过密码或其他凭证来认证自己。一旦用户登录(例如登录到web浏览器、登录到计算设备等),操作系统就可以使用标识符而不是用户名来指代用户。例如,用户名可以与用户标识符相关。系统(例如同步服务器240)可以协调和确认用户帐户的适当所有权,并且可以通过向确认的帐户登录标识符(例如用户名和密码、安全标识符等)指派唯一标识符,来将这些用户帐户的所有权永久链接到特定个体。例如,系统可以根据组织的业务策略、访问控制策略、以及各种应用需求来确认:个体仅具有针对适当系统和应用的账户登录标识符。

在一些实施方式中,当用户登录web浏览器或某个设备时,可以经由网络230和网络接口220,来从同步服务器240加载全部用户的书签、扩展、浏览器可执行应用、主题、其他浏览器偏好和/或设置。因此,用户的书签、扩展、web应用、主题、其他浏览器偏好和/或设置(例如保存在存储器250中)可以被保存并且被同步到用户的帐户(例如使用标识符数据库246)。然后,用户可以在用户登录其他计算机和设备上的web浏览器的任何时间加载这些设置。例如,对浏览器设置的改变可以被立即同步到帐户,并且可以自动被反映在用户已经登录的其他计算机上(并且启用同步)。

在一个计算设备上的设置的改变可以从其他计算机(例如,如果用户已经启用该同步特征)自动复制(例如经由同步服务器240复制)。当同步数据在计算设备之间流通(travel)时,可以对其进行加密以保持信息安全。此外,可以使用密码密钥在计算设备上加密密码。同步服务器240可以包括被配置为散列设置的中央服务,其检测是否突然大量设备请求特定新设置的散列并且在这种情况下拒绝提供散列。同步服务器240可以包括用户提交的关于不一致性的信息,然后该信息被用于建立或改进模型以计算置信度。同步服务器240可以报告对不一致性的检测,以估计感染率的幅度。

因此,可以通过从同步服务器240下载(例如同步)的文件(例如XML文件)或数据存储(例如数据库)中读取与浏览器设置(以及设置本身)相关联的信息。标识符数据库246可以访问该文件和/或数据存储,以便补充和/或生成关于设置的信息。

应用服务器266可以将应用从应用数据存储272派发至客户端计算设备110。例如,可以响应于在客户端计算设备110处接收的用户输入,从应用数据存储272派发应用,其中用户输入使得信号从客户端计算设备110被发送到服务器260,该信号指示短暂应用应当从服务器260被下载到计算设备110,并且然后在计算设备110上启动。从数据存储272派发的应用可以包括待作为短暂应用来执行的应用,并且这样的应用能够(例如在其清单内)包括将它们标识为短暂应用的信息。

在客户端计算设备110上,权限分析器219可以解析从服务器260接收的应用的清单,以确定该应用是否可以作为短暂应用来执行。此外,权限分析器219可以确定短暂应用所请求的权限。例如,权限分析器219可以解析应用的清单,以确定该短暂应用所请求的权限。

当应用作为短暂应用来被执行时——即当应用在用户没有作出对权限的任何审查和批准的情况下被安装和启动时,权限分析器219能够将短暂应用所请求的权限与权限的列表进行比较,所述权限的列表通过所述权限针对执行应用的计算设备110的用户的相对安全性来进行分类。例如,在一些实施方式中,能够将权限分类为:对于在没有任何修改的情况下在短暂应用中利用是安全的,仅在被修改以使得该权限未被完全授权的情况下在短暂应用中利用才是安全的,或者除非用户明确地授予权限,否则在短暂应用中利用是不安全的。

一旦确定了短暂应用的权限,如果该应用包括除非权限被明确授予(例如授予对计算设备的文件系统的读/写访问的权限),则该应用安装和启动过程可能被暂停并且可以向用户提供错误消息,其指示应用不能以短暂模式来启动。在另一个实施方式中,如果应用包括除非权限被明确地授予否则对利用不安全的权限,则可以在该应用的安装和启动过程可以继续之前提示用户审查并明确地授予该权限。

如果应用仅包括在没有任何修改的情况下对在短暂应用中利用是安全的权限(例如,在应用正在执行时防止客户端计算设备110进入睡眠模式的权限、允许应用确定背景数据同步过程是开启还是关闭的权限、允许应用确定计算设备是通过Wi-Fi连接还是通过移动数据网络连接来连接互联网的权限、允许应用从计算设备的剪贴板读取内容的权限等),则可以在用户输入之后在没有来自该用户的任何进一步输入的情况下安装和启动该短暂应用,该用户输入使得短暂应用从服务器260被下载到客户端计算设备110。

在一些实施方式中,以短暂模式来启动的应用可以请求使用被视为仅在被修改以使得该权限未完全授权时在短暂应用中利用才安全的权限。例如,请求在客户端计算设备上使用无限制的存储空间的应用可以在指示应用应当作为短暂应用启动的输入之后没有附加的用户输入的情况下启动,但是对于使用无限制的存储空间的请求可以以修改的格式来授权,使得在应用以短暂模式执行时,仅允许该应用使用预定配额的存储空间。通过这种方式,当权限实际上已经被部分地授予但尚未完全被授予时,该应用可能被一定程度地“欺骗”而相信其请求的权限已经被授予。因此,应用可以以短暂模式来启动,而无需请求用户明确地批准对应用使用存储空间的授予,但是在应用以短暂模式来执行时,还通过仅向该应用授予一定配额的存储空间来保护该用户。

在另一个示例中,如果作为短暂应用启动的应用请求权限以接收关于客户端计算设备110的位置信息,则可以在启动应用时静默地授予该权限(即无需明确的用户权限),但是可以通知应用:即使GPS收发器207处于活跃,也无法从设备获得具有GPS级精度的位置信息。因此,可以从客户端计算设备向应用提供粗略的位置信息(例如,基于移动网络塔的位置或设备与其通信的位置),使得可以启动和执行应用而无需要求对于位置权限的明确的用户核准,但是可以阻止来自应用的高精度位置信息(例如基于对设备可用的GPS信号),使计算设备的用户的隐私受到保护。

将短暂应用请求的权限修改为实际授予的权限的有限版本的这种修改可以通过监督短暂应用的生命周期的运行时218来管理。在一些实施方式中,一旦权限分析器219确定短暂应用已经请求在应用以短暂模式执行时将不完全授权的权限,就可以将信号传递给运行时218,并且响应于该信号,运行时218可以被修改为提供所请求权限的有限授权,该有限授权不授予所请求的权限的全部,而是在用户从服务器260请求应用之后,允许该应用的启动和执行在不需要来自用户的进一步输入的情况下继续进行。

在一些实施方式中,以短暂模式启动的应用可以在该应用可以利用被视为需要明确用户授权的权限之前请求使用权限。然而,不同于在安装应用时向用户请求对权限的批准,可以响应于下载和启动应用的单个用户输入而自动安装和启动应用,但是可以推迟(defer)提示用户提供对权限的明确批准,直到该应用运行到其需要利用指定的权限的时候。为此,可以修改运行时218,以将该提示用户授予该权限推迟到应用运行并且需要获取该权限时,而不是在安装应用时提示该用户授予权限。

例如,在一个实施方式中,短暂应用(例如电信或视频会议应用)可以请求获取权限以从计算设备的麦克风209接收音频信号,或者可以请求获取权限以从相机203接收捕获的图像。可以推迟提示计算设备110的用户授予这些权限,直到应用在运行并需要访问来自麦克风209的音频信号或者从相机203捕获的图像期间的某个时间。

在通过计算设备110的用户启动和执行短暂应用之后,用户可以在不需使用该应用之后关闭该应用。短暂应用可以保持缓存在客户端计算设备110上,使得该短暂应用可以被启动并再次使用,并且使得该短暂应用可以从本地设备启动,而无需从远程服务器下载任何代码。因此,当客户端计算设备未连接到远程设备的网络时,可以离线使用该短暂应用。可以根据已知的缓存逐出策略来管理与短暂应用相关联的资源。例如,可以将短暂应用存储在客户端计算设备的本地资源中,并且可以保持存储,直到其他较新的应用需要被短暂应用占用的空间为止,此时可以将短暂应用从客户端计算设备的本地资源删除,或者可以在本地资源上执行垃圾收集,以尝试回收空间。

当封装应用被安装并以非短暂模式运行时,应用可以在一段时间的不活动之后或者当应用在具有浏览器的用户界面中不再前置(front-facing)时变为空闲。当应用处于空闲时,可以将其置于低功率的“睡眠”状态。运行时可以“唤醒(wake up)”空闲应用,以向应用通知各种事件:例如该应用已经从另一个应用接收到消息;该应用已经从服务器接收到推送消息、警报(由应用配置的事件)已经触发等,并且一旦该应用被唤醒,则该应用就可以处理该事件。但是,与以非短暂模式运行的应用不同,当应用以短暂模式执行时,一旦其所有的UI窗口关闭,短暂应用就不会接收这些事件或被运行时唤醒。相反,它将在缓存中保持完全休眠,并且只会由用户发起的启动或该应用激活。因此,运行短暂应用的用户体验是,当该应用作为短暂应用启动时,只要用户与应用的UI表面(surface)内的应用交互,就启动并执行应用,但是应用一旦被用户关闭,就完全关闭。

以短暂模式启动应用可以允许用户在用户决定完全安装该应用之前以快速、轻量级的方式来尝试应用。短暂应用可以快速被提升为完全安装的应用,因为其所有代码和资源已经被下载到客户端计算设备,尽管在应用以短暂模式启动时,并不是全部的应用的权限都已经被授予。在一些实施方式中,为了将应用从短暂状态提升到完全状态,可以提供用户界面(例如在应用自身内或者在应用启动器内),以提示用户明确地核准将应用从短暂状态提升到完全状态,并且授予该应用在完全状态下操作所需的任何附加权限。在接收到用户的明确核准之后,可以授予应用所需的任何附加权限,并且可以允许应用在空闲状态下操作,从该空闲状态可以唤醒该应用以向其通知各个事件。

如图2所示,系统200还可以包括服务器260,所述服务器260包括一个或多个处理器262、一个或多个存储器278、操作系统(O/S)264、应用服务器266、以及应用数据存储272。在图2的示例中,计算设备110、服务器260、和/或同步服务器240可以是至少一个计算系统,并且应当被理解为实际上表示被配置为执行本文所述的技术的任何计算系统。因此,计算设备110、服务器260、和/或同步服务器240可以被理解为包括可以被利用来实现本文所述的技术或其不同版本或未来版本的各个组件。作为示例,将计算设备110、服务器260、和/或同步服务器240被图示为分别包括至少一个处理器205、242和262、以及分别包括至少一个存储器210、250和278(例如,非暂时性计算机可读存储介质)。

因此,可以理解,可以将至少一个处理器205、242、和/或262形成在基板上并且被利用以执行在至少一个存储器210、250、和/或278上存储的指令,以便通过其实现本文所述的各个特征和功能,或者附加的或替选的特征和功能。当然,可以出于各种其他目的而利用至少一个处理器205、242、和/或262以及至少一个存储器210、250、和/或278。具体的,可以理解,可以将至少一个存储器210、250、和/或278理解为表示可以被用于实现本文所述的模块中的任何一个的各种类型的存储器和相关硬件和软件的示例。上面和/或下面所述的系统和/或方法可以包括数据和/或存储元素。例如,可以将数据和/或存储元素(例如数据库表)存储在至少一个存储器210、250、和/或278中。

图3是被用来发现和启动一个或多个短暂应用的用户界面300的示意图。用户界面300可以以应用启动器用户界面302的形式来提供,所述应用启动器用户界面302被使用来组织和显示已经安装在客户端计算设备110上的浏览器可执行应用。应用启动器用户界面302可以包括搜索框304,所述搜索框304可以接收用户录入的搜索查询词项306。一旦用户已经在搜索框304中录入期望的搜索查询词项,就可以选择用户界面元素308,以响应于该搜索查询而执行对于项目的搜索。例如,在选择用户界面元素308之后,对进一步的用户界面元素310的选择可以执行对于响应于搜索查询的、在互联网上可用的资源的搜索。在另一个示例中,在对用户界面元素308进行选择之后,通过选择进一步的用户界面元素312A、312B、312C,用户可以导航到市场服务器150的特定子域,其中可以提供对于应用的附加搜索。

在进一步的实施方式中,在选择用户界面元素308之后,可以提供用户界面元素314、316,其引用了可以在客户端计算设备上下载和对其保护的特定浏览器可执行应用。与响应于搜索查询的第一浏览器可执行应用的用户界面元素314相关联,可以提供第一用户界面安装元素315A。对UI元素315A的选择可以使得与UI元素314相关联的应用从远程服务器260被下载到客户端计算设备110,其中应用使用传统的安装过程来安装,在所述安装过程中,在启动和执行应用之前,应用所请求的全部权限在安装时由用户静默授予或明确核准。

此外,与用户界面元素314相关联,可以提供第二用户界面安装元素315B。对UI元素315B的选择可以使得与UI元素314相关联的应用从远程服务器260下载到客户端计算设备110,其中应用以短暂模式来立即启动而无需附加的用户输入(例如来核准应用所请求的任何权限)。与第二浏览器可执行应用的UI元素316相关联,可以提供第一用户界面安装元素317A和第二用户界面安装元素317B,其中第一UI安装元素317A提供传统的安装过程,并且第二UI安装元素317B提供以短暂模式来立即启动应用的安装过程。

图4是以直接启动模式来执行应用的方法400的流程图。该方法包括:接收用户输入,以将应用从远程服务器下载到客户端计算设备,并在该客户端计算设备上启动该应用(402)。在一些实施方式中,可以仅利用一个或多个web技术编程语言对应用进行编码,并且该应用可以在客户端计算设备上执行而无需编译。在一些实施方式中,应用包含在客户端计算设备上执行该应用所必需的所有资源,并且通过客户端计算设备执行该应用所需的代码不是动态生成的。

方法400包括:确定该应用所请求的、在由客户端计算设备执行该应用期间利用客户端计算设备的本地资源的权限(404)。将所确定的权限与当应用以直接启动模式中执行时需要修改应用的执行的预定权限的列表进行比较(406)。在没有来自用户的附加输入的情况下启动应用(408),以及在所请求的权限中的至少一个没有被完全授权的情况下在客户端计算设备上执行应用(410)。

例如,在所请求的权限中的一个未被完全授权的情况下执行应用包括:修改应用的运行时环境,使得在客户端计算设备上执行应用时,所请求的权限中的一个没有被完全授权。在一些实施方式中,未被完全授权的所请求的权限中的至少一个包括:访问客户端计算设备上的无限制存储空间的权限,并且其中对应用的执行包括:在授权访问客户端计算设备上的预定最大量的存储空间时在客户端计算设备上执行应用。在一些实施方式中,未被完全授权的所请求的权限中的至少一个包括:访问关于客户端计算设备的位置的信息的权限,并且其中,对应用的执行包括:在向应用通知——即使在客户端计算设备的GPS收发器活跃时具有GPS级精度的位置信息也不可用时,执行客户端计算设备上的应用。

图5是根据至少一个示例性实施例的、以直接启动模式来执行应用的方法500的流程图。该方法包括:接收用户输入,以将应用从远程服务器下载到客户端计算设备并在该客户端计算设备上启动应用(502)。确定该应用所请求的、在由客户端计算设备对应用的执行期间利用客户端计算设备的本地资源的权限(504)。将所确定的权限与需要由用户批准的预定权限的列表进行比较(506)。在没有来自用户的附加输入的情况下启动应用(508),以及在启动应用之后,在执行应用时,提示用户批准所确定的权限中的一个(510)。在一些实施方式中,该提示可以在该执行的期间、当应用为需要利用权限所许可的本地资源以便继续执行的时候。

在一些实施方式中,提示用户可以包括:提示用户批准权限以访问关于具有GPS级精度的客户端计算设备的位置的信息。在一些实施方式中,提示用户可以包括:提示用户批准访问客户端计算设备上的无限制存储空间的权限。在一些实施方式中,提示用户可以包括:提示用户批准从客户端计算设备的麦克风捕获音频信息的权限。在一些实施方式中,仅利用一个或多个web技术编程语言对应用编码,并且其中应用可在客户端计算设备上执行而无需编译。在一些实施方式中,应用可以包含在客户端计算设备上执行应用所必需的全部资源,并且其中由客户端计算设备来执行应用所需的代码不是动态生成的。

图6示出了可以与这里所述的技术一起使用的通用计算机设备600和通用移动计算机设备650的示例。计算设备600意图表示各种形式的数字计算机,例如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型主机、以及其他适当的计算机。计算设备650意图表示各种形式的移动设备,例如个人数字助理、蜂窝电话、智能电话、以及其他类似的计算设备。本文所示的组件、它们的连接和关系、以及它们的功能只意在是示例性的,并且不意在限制本文档中所述和/或要求保护的本发明的实施方式。

计算设备600包括处理器602、存储器604、存储设备606、连接到存储器604和高速扩展端口610的高速接口608、以及连接到低速总线614和存储设备606的低速接口612。组件602、604、606、608、610、以及612的每一个使用各种总线来互连,并且可以在公共主板上或者视情况以其他方式安装。处理器602可以处理指令以用于在计算设备600内执行,所述指令包括存储在存储器604中或存储设备606上以在外部输入/输出设备——诸如耦合到高速接口608的显示器616上显示GUI的图形信息。在其他实施方式中,可以视情况连同多个存储器以及多种类型的存储器一起,使用多个处理器和/或多个总线。此外,可以连接多个计算设备600,其中每个设备提供必要操作的部分(例如作为服务器组、刀片服务器的群组、或者多处理器系统)。

存储器604存储计算设备600内的信息。在一个实施方式中,存储器604是一个或多个易失性存储器单元。在另一个实施方式中,存储器604是一个或多个非易失性存储器单元。此外,存储器604还可以是另一形式的计算机可读介质,诸如磁盘或光盘。

存储设备606能够提供用于计算设备600的大容量存储。在一个实施方式中,存储设备606可以是或者包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备、或磁带设备、闪存或其他类似的固态存储器设备或设备的阵列——包括存储区域网络或其他配置中的设备。计算机程序产品可以在信息载体中有形地体现。此外,计算机程序产品可以包含指令,其在执行时实施一个或多个方法——诸如上述的那些方法。信息载体是计算机或机器可读介质,诸如存储器604、存储设备606、或处理器602上的存储器。

高速控制器608管理计算设备600的带宽密集型操作,而低速控制器612管理较低的带宽密集型操作。这样的功能分配只是示例性的。在一个实施方式中,高速控制器608被耦合到存储器604、显示器616(例如通过图形处理器或加速器来耦合),以及耦合到可以接受各种扩展卡(未示出)的高速扩展端口610。在该实施方式中,低速控制器612耦合到存储设备606和低速扩展端口614。可以包括各种通信端口(例如USB、蓝牙、以太网、无线以太网)的低速扩展端口可以被耦合到一个或多个输入/输出设备——诸如键盘、指示设备、扫描仪、或者例如通过网络适配器来耦合到联网设备——诸如交换机或路由器。

可以以多种不同的形式来实现计算设备600,如图所示。例如,可以将其实现为标准服务器620,或者在这样的服务器的群组中多次实现。此外,可以将计算设备600实现为机架服务器系统624的一部分。此外,可以以个人计算机——诸如膝上型计算机622来实现计算设备600。替选地,可以将来自计算设备600的组件与移动设备(未示出)——诸如设备650中的其他组件组合。这样的设备中的每一个都可以包含计算设备600、650的一个或多个,并且整个系统可以由相互通信的多个计算设备600、650组成。

除了其他组件之外,计算设备650包括处理器652、存储器664、输入/输出设备——诸如显示器654、通信接口666、以及收发器668。此外,设备650可以被提供有存储设备——诸如微型驱动器或其他设备以提供附加存储。组件650、652、664、654、666、以及668的每一个使用各种总线来互连,并且组件中的若干组件可以被安装在公共主板上或者视情况以其他方式安装。

处理器652可以执行计算设备650内的指令,其包括存储器664中存储的指令。可以将处理器实现为芯片的芯片组,所述芯片包括分离且多个的模拟和数字处理器。例如,处理器可以提供对设备650的其他组件的协调,诸如对用户接口、由设备650运行的应用、以及设备650进行的无线通信的控制。

处理器652可以通过耦合到显示器654的控制接口658和显示器接口656与用户通信。例如,显示器654可以是TFT LCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其它适当的显示技术。显示接口656可以包括适当电路以用于驱动显示器654向用户呈现图形和其他信息。控制接口658可以从用户接收命令并将其变换,以用于提交给处理器652。此外,可以提供与处理器652通信的外部接口662,从而实现设备650与其他设备的近区域通信。例如,外部接口662可以在一些实施方式中提供有线通信或者在其他实施方式中提供无线通信,并且还可以使用多个接口。

存储器664存储计算设备650内的信息。能够将存储器664实现为一个或多个计算机可读介质、一个或多个易失性存储器单元、或者一个或多个非易失性存储器单元中的一个或多个。此外,可以通过扩展接口672来提供扩展存储器674并将其连接到设备650,扩展接口672例如可以包括SIMM(单列直插存储器模块)卡接口。这样的扩展存储器674可以为设备650提供额外的存储空间,或者还可以存储设备650的应用或其他信息。具体而言,扩展存储器674可以包括指令以执行或补充上述过程,并且还可包括安全信息。因此,例如,可以提供扩展存储器674以作为设备650的安全模块,并且可以被编程有许可对设备650的安全使用的指令。此外,可以经由SIMM卡提供连同附加信息一起的安全应用,例如以不可非法侵入的方式将识别信息设置在SIMM卡上。

如下所述,存储器例如可以包括闪存和/或NVRAM存储器。在一个实施方式中,计算机程序产品在信息载体中有形地体现。计算机程序产品包含指令,其在执行时实施一个或多个方法——例如上述的那些方法。信息载体是计算机或机器可读介质,诸如存储器664、扩展存储器674、或处理器652上的存储器,其例如可以通过收发器668或外部接口662接收。

在必要的情况下,设备650可以通过通信接口666无线地通信,通信接口666可以包括数字信号处理电路。通信接口666可以提供在各种模式或协议下的通信,除了其他之外,诸如GSM语音通话、SMS、EMS、或MMS消息收发、LTE、CDMA、TDMA、PDC、WCDMA、CDMA2000、或GPRS等。例如,这样的通信可以通过射频收发器668发生。此外,短距离通信可以诸如使用蓝牙、WiFi、或其他这样的收发器(未示出)发生。此外,GPS(全球定位系统)接收器模块670可以向设备650提供附加的导航和位置相关的无线数据,其视情况可以由在设备650上运行的应用使用。

此外,设备650可以使用音频编解码器660来以可听方式通信,所述音频编解码器660可以从用户接收说出的信息并将其变换为可用的数字信息。同样,音频编解码器660可以为用户生成可听见的声音,诸如通过例如在设备650的送受话器中的扬声器来生成。这样的声音可以包括来自语音电话呼叫的声音,可以包括已记录的声音(例如语音消息、音乐文件等等),并且还可以包括在设备650上操作的应用所生成的声音。

可以以多种不同的形式来实现计算设备650,如图所示。例如,可以将移动计算设备650实现为蜂窝电话680。此外,可以将其实现为智能电话682、个人数字助理、或其他类似的移动设备的一部分。

本文所述的系统和技术的各个实施方式可以以数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件、和/或其组合中实施。这些各个实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现,所述可编程系统包括至少一个可编程处理器、至少一个输入设备、以及至少一个输出设备,所述可编程处理器可以是专用或通用的处理器,其被耦合以从存储系统接收数据和指令以及向存储系统传送数据和指令。

这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用的,术语“机器可读介质”指代被用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置、和/或设备(例如磁盘、光盘、存储器、可编程逻辑器件(PLD)),其包括接收机器指令以作为机器可读信号的机器可读介质。术语“机器可读信号”指代被用于向可编程处理器提供机器指令和/或数据的任何信号。

为了提供与用户的交互,这里所述的系统和技术可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和指示设备(例如鼠标或轨迹球)。也可以使用其他种类的设备来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈(例如视觉反馈、听觉反馈、或触觉反馈);并且可以以任何形式接收来自用户的输入,包括声音、语音、或触觉输入。

这里所述的系统和技术可以在计算系统中实现,该计算系统包括后端组件(例如作为数据服务器)、或者包括中间件组件(例如应用服务器)、或包括前端组件(例如具有图形用户界面或web浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器来与本文所述系统和技术的实施方式交互)、或者这样的后端组件、中间件组件、或前端组件的任何组合。系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)、以及互联网。

计算系统可包括客户端和服务器。客户端和服务器一般相互处于远程并且一般通过通信网络交互。客户端与服务器的关系借助于计算机程序产生。

将上述的示例实施例中的一些描述为被描绘为流程图的过程或方法。虽然流程图将操作描述为顺序过程,但是操作中的许多可以以并行、并发、或同时的方式来执行。此外,可以对操作顺序重新布置。所述过程可以在其操作完成时终止,但是也可以具有附图中没有包括的附加步骤。所述过程可以对应于方法、功能、过程、子例程、子程序等。

上面讨论的方法——其中的一些通过流程图来图示——可以由硬件、软件、固件、中间件、微代码、硬件描述语言、或者它们的任何组合来实现。当以软件、固件、中间件、或微代码来实现时,可以将用于执行必要任务的程序代码或代码片段存储在机器或计算机可读介质中,诸如存储介质和/或非暂时性计算机可读存储介质。处理器(例如在硅或GaAs基底上形成的处理器)可以执行必要的任务。

本文所公开的具体结构和功能细节仅仅是表示性的以用于描述示例实施例的目的。但是,示例实施例可以以许多替选形式来体现,并且不应解释为仅限于本文阐述的实施例。

应当理解,虽然本文可以使用术语第一、第二等来描述各个元素,但是这些元素不应受这些术语限制。这些术语仅被用于将一个元素与另一个元素区分开。例如,在不脱离示例实施例范围的情况下,可以将第一元素称为第二元素,并且类似地,可将第二元素称为第一元素。如本文所使用的,术语“和/或”包括相关联地来列出的项目中的一个或多个的任何和全部组合。

应当理解,将元素称为“连接”或“耦合”到另一元素时,它可以直接连接或耦合到另一元素,也可以存在中间元素。相反,当将元素称为“直接连接”或“直接耦合”到另一元素时,不存在中间元素。被用于描述元素之间的关系的其它词语应当按照类似的方式解释(例如,“在...之间”与“直接在...之间”相比、“相邻”与“直接相邻”相比等)。

本文所使用的术语仅用于描述特定实施例的目的,并且并非要限制示例实施例。如本文所使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“所述”也意图包括复数形式。还应当理解,在本文中被使用时,术语“包括”、和/或“包含”指定所指出的特征、整体、步骤、操作、元素、和/或组件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元素、组件、和/或其群组的存在或添加。

此外应当注意,在一些替选实施方式中,所指出的功能/动作可以不按照附图所指出的顺序发生。例如,连续示出的两个图实际上可以并行执行,或者有时候也可以以相反的顺序执行,这取决于所涉及的功能/动作。

除非另有定义,本文所使用的所有术语(包括技术和科学术语)具有与示例实施例所属领域的普通技术人员通常理解的相同的含义。此外应当理解,术语——例如在通常使用的字典中定义的那些术语应当被解释为具有与它们在相关领域背景下的含义一致的含义,并且不会按照理想化或过度正式的含义来解释,除非本文明确地如此定义。

以上示例实施例的部分和相对应的详细描述以对计算机存储器内的数据位的操作的软件或算法和符号表示来呈现。这些描述和表示是本领域技术人员通过其来将他们的工作实质有效传达给本领域其他技术人员的描述和表示。算法——作为其这里所使用的术语并且如其通常被使用的——被设想为导致期望结果的自洽的步骤序列。所述步骤是需要对物理量的物理操纵的步骤。通常——尽管并非必需,这些量采取能够存储、传输、组合、比较、以及以其它方式操纵的光、电、或磁信号的形式。主要出于公共使用的原因,已经证明有时候是便利的是,将这些信号称为位、值、元素、符号、字符、词项、数字等。

在以上说明性实施例中,对于可以被实现为程序模块或功能性过程的操作的动作和符号表示(例如以流程图的形式)的引用包括:执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等,并且其可以使用现有结构元素处的现有硬件来描述和/或实现。这样的现有硬件可以包括:一个或多个中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路、现场可编程门阵列(FPGA)计算机等。

但是应当铭记,所有这些术语和类似术语将与适当的物理量相关联,并且只是应用于这些量的方便标记。除非另有特别说明或者从讨论中显而易见,否则诸如“处理”或“计算”或“运算”或“确定”或“显示”的术语指代计算机系统或类似的电子计算设备的动作和过程,所述计算机系统或电子计算设备将在计算机系统的寄存器和存储器内被表示为物理量、电子量的数据操纵和变换成在计算机系统的寄存器或存储器或者其他这样的信息存储、传输或显示设备内以类似方式被表示为物理量的其他数据。

此外应当注意,示例实施例的软件实现的方面通常在某种形式的非暂时性程序存储介质上编码或者通过某种类型的传输介质来实现。程序存储介质可以是磁性的(例如软盘或硬盘驱动器)或光学的(例如压缩盘只读存储器或“CD ROM”),并且可以是只读的或随机存取的。类似地,传输介质可以是双绞线、同轴电缆、光纤、或者本领域已知的一些其它合适的传输介质。示例实施例不受任何给定实施方式的这些方案的限制。

最后还应当注意,虽然后附权利要求书给出了本文所述特征的特定组合,但是本公开的范围不限于之后要求保护的特定组合,而是扩展到涵盖本文公开的特征或实施例的任何组合,不管此时在后附权利要求书中是否已经具体列举了该特定组合与否。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1