具有动态子包加载的应用容器的制作方法

文档序号:11620403阅读:146来源:国知局
具有动态子包加载的应用容器的制造方法与工艺



背景技术:

计算设备可以执行各种功能,诸如执行应用、接收用户输入以及输出信息用于显示。例如,计算设备可以执行应用,诸如电子邮件客户端、旅行助理、消息发送客户端等。软件开发者可以用被编译成机器可读代码的人类可读源代码来编写这样的应用。在某些情况下,可以将机器可读代码组织成分立可执行组件,诸如面向对象的设计中的已编译类。应用可以包括实现各种功能的一个或多个可执行组件。在某些分布式环境中,用户计算设备(例如,智能电话)可以使用媒体商店应用来搜索并安装由远程计算系统所提供的应用。通常,当用户选择媒体商店应用中的应用以在用户计算设备处安装时,远程计算系统发送包括所有可执行组件的单个文件以执行应用的所有功能,无论用户是否实际上使用所有功能。随着应用的大小增加,加载并安装这样的应用所需的时间量增加,从而要求用户等待更大量的时间以安装和执行应用。



技术实现要素:

在某些示例中,一种方法包括由在计算设备处执行的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由在计算设备处执行的应用容器至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

在某些示例中,一种计算设备包括:一个或多个计算机处理器;以及包括指令的存储器,所述指令在被所述一个或多个计算机处理器执行时,使得所述一个或多个计算机处理器:由计算设备的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由计算设备的应用容器至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

一种被用指令编码的非暂时性计算机可读存储介质,所述指令在被执行时使得计算设备的至少一个处理器:由计算设备的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由计算设备的应用容器至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

在以下附图和描述中阐述了一个或多个示例的细节。根据本描述和附图以及根据权利要求,本公开的其它特征、对象以及优点将变得显而易见。

附图说明

图1是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器的示例计算设备的概念图。

图2是图示出根据本公开的一个或多个方面的计算设备的进一步细节的框图。

图3是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器的计算设备的示例操作的时序图。

图4是根据本公开的技术的用于动态地加载可安装子包和对应库的应用容器的概念图。

图5是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器的计算设备的示例操作的流程图。

具体实施方式

一般地,本公开的技术提供了在应用需要由可安装子包所提供的功能时以逐件的方式按需要动态地加载可安装子包的应用容器。应用容器可以为应用提供自包含式执行环境,其可以由多个子包构成,并且每个子包包括一个或多个可执行组件。作为示例,软件开发者可以设计具有功能的离散集合的应用(例如,导航应用)。导航应用可以包括分段导航(turn-by-turnnavigation)用户界面、兴趣点用户界面(例如,显示地图上的兴趣点的细节)以及设置用户界面。软件开发者可以设计具有三个不同子包的应用,其中,每个子包包括可执行组件的集合以实现相应用户界面的功能。

虽然应用的所有子包共同地在大小方面可以很大,但用于应用的应用容器可以仅检索、安装并执行提供用户所请求的功能所需要的那些子包。同样地,当安装和/或执行应用时,只需要应用的子包的一部分来本地地驻留于计算设备处以供应用执行。当用户请求应用的附加功能时,应用容器可以自动地检索提供所请求功能的所需子包。这样,应用可以更快速地安装并加载,因为如果只需要应用功能的子集,则不需要检索和安装应用的子包的整个集合。此外,在某些示例中,应用容器可以提供在不要求更新计算设备的操作系统或运行时间系统的情况下更新容器运行时间。

图1是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器102a至102c(“应用容器102”)的示例计算设备100的概念图。计算设备100的示例可以包括但不限于便携式或移动设备(诸如移动电话(包括智能电话))、膝上型计算机、平板计算机、可穿戴计算设备(诸如智能手表或计算机化眼镜)、智能电视平台、相机、个人数字助理(pda)等。在某些示例中,计算设备102可以包括诸如台式计算机、服务器、主机等固定计算设备。

如图1中所示,计算设备100包括应用容器102、系统运行时间126、操作系统136以及硬件组件138。计算设备100可以经由网络140和通信链路148a至148b与一个或多个其它远程计算系统142a至142c(“远程计算系统142”)通信。如图1中所示,网络140表示任何公共或私用通信网络,例如蜂窝式、wifi和/或用于在计算设备之间传送数据的其它类型的网络。计算设备100和远程计算系统142可以使用任何适当的通信技术跨网络140发送和接收数据。例如,计算设备100可以使用通信链路148a被操作耦合到网络140。远程计算系统142a可以通过通信链路148b被操作耦合到网络140。网络140可以包括网络集线器、网络交换机、网络路由器等,其被操作互耦合,从而提供计算设备102与远程计算系统142之间的信息的交换。在某些示例中,通信链路138a至138b可以是以太网、atm或其它通信连接。这样的连接可以是无线和/或有线连接。

硬件组件138可以包括但不限于计算机处理器、通信单元(例如,调制解调器、网络接口控制器、等)、输入组件、输出组件、存在敏感显示器、易失性和非易失性存储器以及电源,仅举几个例子。相对于图2提供了硬件组件138的进一步描述。操作系统136可以在硬件组件138上执行并管理计算设备100的硬件和软件组件。例如,操作系统136可以执行存储器管理、进程调度和非易失性储存器管理。操作系统136还可以向在计算设备100处执行的应用提供网络和安全服务。操作系统136还可以执行比上文所述的更多或更少的功能。

运行时间系统126实现了用于根据用来编写和构建或编译应用的特定编程语言而构建的应用的执行模型。运行时间系统126可以包括在执行期间应用容器102可访问的一个或多个库和/或服务。如在本公开中进一步描述的,每个应用容器102可以与不同的应用相对应。运行时间系统126可以包括线程管理服务、屏幕绘图和用户界面呈现组件以及应用间和应用内消息发送服务,仅举几个服务示例。应用容器102可以通过被运行时间组件128暴露的应用编程接口(api)来访问服务。在某些示例中,可以将运行时间系统126执行为一个或多个进程和/或线程。进程和/或线程中的一个或多个可以在有或没有操作系统特权的情况下执行。

如图1中所示,运行时间系统126可以包括运行时间组件128。可以用一个或多个进程和/或线程来实现每个不同运行时间组件。在某些示例中,每个不同的运行时间组件可以提供功能的用户定义的集合。例如,可以用定义用户界面元素(例如,按钮、列表、图像、输入栏等)及其对应行为的一个或多个库来实现用户界面呈现组件。用户界面呈现组件可以提供api,其被应用容器102调用以在图形用户界面中呈现用户界面元素。

监督器组件128a被包括在运行时间组件128中。监督器组件128a提供应用间和应用内消息发送服务。监督器组件128a包括消息代理130,其侦听由应用容器102所生成的消息并对发送应用容器或一个或多个其它应用容器执行动作。监督器组件128a可以在派送任何消息(例如,包含作为用户指定的标识符的uri的消息)时具有第一优先级或第一机会。在某些示例中,消息代理130可以提供用于消息的附加处理,诸如从应用容器池132分配应用容器、针对消息加强安全以及记录消息,仅举几个例子。作为示例,应用容器102a可以生成用以从相同应用内的第一用户界面导航至第二用户界面的消息。应用容器102a可以向消息代理130发送消息,所述消息代理130包括包含过滤器集合的消息发送表134,其中,每个过滤器具有一个或多个条件和一个或多个对应动作。如果消息的内容与过滤器的条件匹配,则消息代理130可以执行对应动作,诸如执行用以输出第二图形用户界面的指令。在某些示例中,下面描述的这样的消息可以在不将消息转发到消息代理130的情况下被路由器112在内部路由。

如上所述,每个应用容器102可以与不同的应用相对应。应用可以包括用以在计算设备100上执行操作的不同功能。例如,应用可以包括电子邮件应用、文本消息应用、即时消息应用、天气应用、视频会议应用、社交联网应用、天气应用、股票市场应用、紧急警报应用、体育应用、办公效率应用、多媒体播放器,仅举几个例子。

如图1中所示,应用容器102a提供了执行环境和支持服务以指导应用的可执行组件108的执行。应用容器102可以作为操作系统136中的单独的进程来执行。在某些示例中,应用容器102a包括消息发送界面115。路由器112可以经由消息发送界面115从运行时间系统126接收消息,并且运行时间系统126可以经由消息发送界面115从可执行组件108和路由器112接收消息。可以在可执行组件108中实现用于应用容器102a的程序逻辑。可执行组件可以是机器可执行代码的逻辑聚组。例如,在面向对象设计中,单个可执行组件可以是包括机器可执行代码的单个已编译类文件。

应用容器102a可以是用于一个或多个子包104的器皿。在某些示例中,子包包括两个或更多可执行组件108a至108c(“可执行组件108”)。子包可以包括资源(例如,图像、文本、视频或任何其它非编译数据)、安全和/或签名信息、版本信息和/或相关性信息或用于应用的任何其它信息。软件开发者可以将应用设计成由多个用户定义子包构成。每个用户定义子包可以包括共同地提供功能的分立集合的可执行组件的集合。例如,软件开发者可以设计具有多个不同用户界面的导航应用。每个用户界面可以包括用户界面元素和对应行为的不同集合。同样地,可以用具有可执行组件的不同集合来实现每个用户界面。例如,导航应用可以包括分段导航用户界面、兴趣点用户界面(例如,显示地图上的兴趣点的细节)以及设置用户界面。软件开发者可以设计具有三个不同子包的应用,其中,每个子包包括可执行组件的集合以实现相应用户界面的功能。

应用容器102a可以包括容器运行时间124。容器运行时间124可以包括一个或多个库和/或到由容器运行时间124、运行时间系统126和/或操作系统136内的库所提供的服务和/或功能的一个或多个应用编程接口(api)。同样地,容器运行时间124可以提供安全的进程中api层。通过控制应用容器和容器运行时间,运行时间系统126可以验证应用容器和容器运行时间未被篡改,并且因此针对敏感行为提供运行时间逻辑。例如,可以要求请求访问用户的设备标识符(例如,设备的全局唯一标识符)的应用接通(callthrough)容器运行时间的api,其然后可以与监督器组件128a核对以确保这是被允许的行为。这样,容器运行时间124可以实行对各种操作发生这样的核对的保证,因为这样的操作只能通过容器运行时间124的api实现。容器运行时间124可以提供用以在要求平台协同的api上进行迭代的层。例如,子包可以宣布其要求某些特定数据(诸如位置),并且容器运行时间124可以与加载用于特定子包的可执行组件并行地获得所述位置,并在应用启动时提供所述位置作为自变量。

如下面进一步描述的,通过允许软件开发者设计具有用于功能的单独集合的单独子包的应用,应用容器102可以使得应用能够在用于所有其子包的所有其相应的执行组件并未本地驻留在计算设备100上的情况下在计算设备100处执行。这样,应用的初始执行可以不要求所有子包的检索和/或安装而仅要求包括实现所请求功能的可执行组件的子包的子集。此外,通过将多个可执行组件封装在单个子包中,可执行组件的检索和/或安装根据所请求功能(例如,用以呈现特定用户界面)而以子包为基础发生而不是在逐个可执行组件的基础上来检索和安装可执行组件,其可能具有不佳的性能和/或导致更差的用户体验。

如上所述,可以用包括定义应用的操作的一个或多个可执行组件的应用容器来执行每个应用。应用容器102a包括路由器112,所述路由器112利用可执行组件108和消息发送界面115发送和接收消息,所述消息改变应用的行为和/或使得应用执行一个或多个操作。例如,路由器112可以接收请求执行一个或多个操作的消息。路由器112可以基于消息的内容而确定包括用以执行一个或多个操作的可执行组件的子包是否被本地地存储在计算设备100上或者另外在计算设备100上可访问。消息的内容可以包括标识符,诸如与子包相对应的统一资源标识符(uri)。如果子包被本地地存储在计算设备100上或者另外在计算设备100上可访问,在路由器112识别用以基于消息的内容来执行操作的一个或多个可执行组件。在某些示例中,所述消息可以包括进一步指定要执行的一个或多个操作的附加属性(例如,用于启动用户界面的种类、mime类型数据、用于执行的显式组件类)或数据(例如,用户数据或机器所生成的数据)。同样地,由路由器112所识别的一个或多个可执行组件可以基于附加属性或数据来执行一个或多个操作。

如上所述,用于特定应用的所有子包不需要本地地驻留在计算设备100处以执行应用。为了确定用于特定功能的子包是否在计算设备100处驻留或者另外可访问,路由器112可以执行对应用定义116的查找。应用定义116一般地可以定义用户指定的标识符(例如,uri、串、整数或任何其它适当标识符)与指定用于应用的特定功能的子包之间的映射。应用定义116在路由表118中包括这些映射,其包括用户指定的标识符120a至120n(“用户指定的标识符120”)与子包标识符122a至122n(“子包标识符122”)之间的映射。如果路由器112接收到具有用以使用特定子包来执行功能的用户指定的标识符的消息,则路由器112可以在路由器表118中执行查找。例如,如果路由器112确定用户指定的标识符120a与消息中的用户指定的标识符匹配,则路由器112可以确定与子包标识符122a相对应的子包104a是否驻留在计算设备100上。由于子包104a驻留在计算设备100上,所以路由器112基于所述消息来执行对子包104的调用或者将消息发送到子包104a,所述子包104a使用可执行组件108a来执行一个或多个操作。

如上所述,由于不需要在计算设备100上本地存储应用的子包的整个集合,所以与在需要由计算设备100从远程计算系统下载、安装并执行整个应用的情况下相比,计算设备100处的应用的初始安装和/或初始执行可以要求更少的时间。同样地,用户可以体验到来自应用的更大响应性和/或应用的行为的性能。

在图1的示例中,用户可能期望如上所述地在最初安装并执行导航应用。最初,用于导航应用的子包或应用定义中可能没有一个被存储在计算设备100处。用户可以向计算设备100提供用户输入以在最初选择由操作系统136所提供的与地图应用相对应的用户界面中的图标。替选地,用户可以选择在计算设备100处执行并与远程计算系统142通信以检索子包和应用定义的媒体商店应用(未示出)中的地图应用。在任何情况下,监督器组件128a的消息代理130从操作系统136或媒体商店应用接收消息,其请求执行导航应用的特定功能。由于导航应用尚未被安装,所以所请求的特定功能是显示应用的默认用户界面或主用户界面。

监督器组件128a可以基于消息的内容来确定对于导航应用而言应用容器是否已被分配在计算设备100的存储器中。例如,消息的内容可以包括导航应用的唯一标识符,诸如应用的名称。响应于确定监督器组件128a尚未分配用于导航应用的应用容器,监督器组件128a可以从应用容器池132分配应用容器102a。应用容器池132可以包括被预留给且可用来执行应用的进程的集合。在某些示例中,监督器组件128a可以与操作系统136通信以创建用于应用容器102a的新进程。

监督器组件128a可以确定导航应用尚未被安装并从远程计算系统142中的一个或多个请求应用定义。例如,监督器组件128a可以向远程计算系统142a发送消息,其中,所述消息包括在远程计算系统142中全局唯一的用于导航应用的标识符。远程计算系统142a在接收到消息之后从应用定义144中选择应用定义116并将应用定义116发送到计算设备100。监督器组件128a接收应用定义116,其可以被包括在应用容器102a中或者可被其访问。

监督器组件128a使得消息代理130向应用容器102a发送消息以显示应用的默认用户界面或主用户界面。特别地,所述消息可以包括与具有显示用于应用的默认用户界面或主用户界面的功能的子包相对应的用户指定的标识符。在某些示例中,消息代理130基于从媒体商店应用或者通过与用于最初由用户所选择的地图应用的图标相关联的引导功能所接收的信息,来接收(或生成)用户指定的标识符。所述引导功能可以包括但不限于向消息代理130发送用户指定的标识符。

路由器112经由消息发送界面115来接收具有用户指定的标识符的消息。在图1的示例中,用户指定的标识符是120a。基于用户指定的标识符,路由器112确定用于与用户指定的标识符120a相对应的子包标识符122a的子包未被本地存储在计算设备100处。路由器112可以使用容器运行时间124和/或运行时间系统126向远程计算系统142a发送用以请求用于子包标识符122a的子包的消息。例如,由容器运行时间124和/或运行时间系统126发送到远程计算系统的消息可以包括子包标识符122a。远程计算系统142a可以向计算设备100发送子包,其包括用于显示导航应用的默认用户界面或主用户界面的可执行组件。

路由器112响应于确定用于子包标识符122a的子包未被本地存储而可以使得生命周期管理器110经由回调界面113来侦听系统生命周期调用,其中,所述生命周期调用由运行时间系统126发布。生命周期调用可以包括开启应用、暂停应用、重启应用或者终止应用,仅举几个例子。生命周期管理器110可以缓存生命周期调用,一旦计算设备100已从远程计算系统142a检索到子包104a,其将被子包104a的可执行组件执行。一旦子包104a已被计算设备100检索,生命周期管理器110可以将所缓存的生命周期调用中的每个发送到子包104a。

在图1的示例中,在生命周期管理器110确定计算设备100已经检索并在本地存储子包104a时,生命周期管理器110发送调用或者另外调用加载器106以将可执行组件108中的一个或多个加载到计算设备100的存储器中以便执行最初所请求的特定功能,例如,显示应用的默认用户界面或主用户界面。在某些示例中,加载器106负责将可执行组件加载到存储器中。在某些示例中,加载器106可以表示多个加载器,其中,每个加载器负责将不同的可执行组件加载到存储器中。加载器106可以针对特定的可执行组件定位特定可执行组件所使用的对应库并将任何这样的库加载到存储器内,使得库可被特定可执行组件访问。生命周期管理器110还可以将所缓存的生命周期调用发送到可执行组件108中的一个或多个。在接收到所缓存的生命周期调用之后,可执行组件108中的一个或多个使得计算设备100显示应用的默认用户界面或主用户界面。

在稍后的时间,如果用户期望导航至设置用户界面,则用户可提供针对应用的当前显示默认用户界面或主用户界面中的设置而选择用户界面元素(例如,图标、按钮、标签等)的用户输入。运行时间系统126可以向应用容器102a发送指示对用户界面元素的选择的消息。可执行组件108a确定所述选择显示设置用户界面。可执行组件108a生成具有用于包括设置用户界面的功能的子包122n的用户指定的标识符120n的消息。可执行组件108a可以直接向路由器112或者向运行时间系统126发送消息,所述运行时间系统126进而将消息路由回到路由器112。在任一种情况下,路由器112执行用户指定的标识符120n的查找并确定子包标识符122n的子包未被本地存储在计算设备100处。

以类似方式,如上文相对于子包104a所述,路由器112使用容器运行时间124和/或运行时间系统126向远程计算系统142a发送用以检索子包标识符122n的子包的消息。远程计算系统142a可以向计算设备100发送子包122n,其包括用于显示导航应用的设置界面的可执行组件。在计算设备100正在检索子包122n的同时,生命周期管理器110可以缓存在回调界面113处所接收的生命周期调用。在加载子包122n之后,生命周期管理器110使得加载器106将子包122n的可执行组件加载到存储器中。加载器106可以发起可执行组件中的一个或多个的执行以使得在计算设备100的显示设备处显示导航应用的设置界面。

图2是图示出根据本公开的一个或多个方面的计算设备100的进一步细节的框图。图2图示出计算设备100的仅一个特定示例。在其它情况下可以使用计算设备100的许多其它示例,并且其包括在示例计算设备100中所包括的组件的子集,或者可以包括图2中的示例计算设备100的未示出的附加组件。

如图2的示例中所示,计算设备100包括一个或多个处理器240、一个或多个输入组件242、一个或多个通信单元244、一个或多个输出组件246、一个或多个存储设备248以及存在敏感显示器212。计算设备100的存储设备248包括应用容器102、系统运行时间126以及操作系统136。通信信道250可以将组件240、244、246、242、258、204、213、215、248、102、126和/或136中的每一个互连以用于组件间通信(在物理上、在通信上和/或在操作上)。在某些示例中,通信信道250可包括系统总线、网络连接、一个或多个进程间通信数据结构或用于在硬件和/或软件之间通信数据的任何其它组件。

一个或多个处理器240可在计算设备100内实现功能和/或执行指令。例如,计算设备100上的处理器240可以接收并执行提供操作系统136、应用容器102以及系统运行时间126的功能的存储设备248所存储的指令。被处理器240执行的这些指令可使得计算设备100在程序执行期间在存储设备248内存储和/或修改信息。处理器240可以执行操作系统136、应用容器102以及系统运行时间126的指令以执行一个或多个操作。亦即,评级系统136、应用容器102以及系统运行时间126可以被处理器240操作以执行在本公开中所描述的各种功能。

计算设备100的一个或多个输入组件242可以接收输入。输入的示例是触觉、音频、运动以及光学输入,仅举几个例子。在一个示例中,计算设备100的输入组件242包括鼠标、键盘、语音响应系统、摄像机、按钮、控制板、麦克风或用于检测来自人类或机器的输入的任何其它类型的设备。在某些示例中,输入组件242可以是存在敏感输入组件,其可包括存在敏感屏幕、触摸敏感屏幕等。

计算设备100的一个或多个输出组件246可以生成输出。输出的示例是触觉、音频以及视频输出。在某些示例中,计算设备100的输出组件246包括存在敏感显示器、声卡、视频图形适配卡、扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或用于向人类或机器生成输出的任何其它类型的设备。输出组件可以包括显示组件,诸如阴极射线管(crt)监视器、液晶显示器(lcd)、发光二极管(led)或用于生成触觉、音频和/或视觉输出的任何其它类型的设备。

在某些示例中,计算设备100的存在敏感显示器204可以包括输入组件242和/或输出组件246的功能。在图2的示例中,存在敏感显示器204可以包括存在敏感输入组件215,诸如存在敏感屏幕或触摸敏感屏幕。在某些示例中,存在敏感输入组件215可以检测在存在敏感输入组件处和/或附近的对象。作为一个示例范围,存在敏感输入组件215可检测在存在敏感输入组件215的两英寸内或以下的对象,诸如手指或触针组件。存在敏感输入组件215可确定在所述处检测到对象的存在敏感输入组件的位置(例如,(x,y)坐标)。在另一示例范围内,存在敏感输入组件215可检测到与存在敏感输入组件215相距两英寸或以下的对象,并且其它范围也是可能的。存在敏感输入组件215可确定由用户的手指使用电容、电感和/或光学识别技术所选择的存在敏感输入组件215的位置。

在某些示例中,存在敏感显示器204还可以使用触觉、音频或视频刺激来向用户提供输出,如相对于输出组件246所述。例如,存在敏感显示器204可以包括呈现图形用户界面的显示组件213。显示组件213可以是提供视觉输出的任何类型的输出组件,诸如相对于输出组件246所述。虽然被图示为计算设备100的集成组件,但存在敏感显示器204在某些示例中可以是与计算设备100的其它组件共享数据路径以便发射和/或接收输入和输出的外部组件。例如,存在敏感显示204可以是位于计算设备100的外部封装内并被物理连接到所述外部封装的计算设备100的内置组件(例如,移动电话上的屏幕)。在另一示例中,存在敏感显示器204可以是位于计算设备100的包装外面并在物理上与之分离的计算设备100的外部组件(例如,与平板计算机共享有线和/或无线数据路径的监视器、投影仪等)。在某些示例中,存在敏感显示204当位于计算设备100的包装外面并在物理上与之分离的时可以由两个单独的组件实现:用于接收输入的存在敏感输入组件215和用于提供输出的显示组件213。

计算设备100的一个或多个通信单元244可通过发射和/或接收数据来与外部设备通信。例如,计算设备100可使用通信单元244来在诸如蜂窝无线电网络的无线电网络上发射和/或接收无线电信号。在某些示例中,通信单元244可在诸如全球定位系统(gps)网络的卫星网络上发射和/或接收卫星信号。通信单元244的示例包括网络接口卡(例如,诸如以太网卡)、光学收发机、射频收发机、gps接收机或可以发送和/或接收信息的任何其它类型的设备。通信单元244的其它示例可包括在移动设备以及通用串行总线(usb)控制器等中发现的gps、3g、4g以及无线电。

计算设备100内的一个或多个存储设备248可存储信息用于在计算设备100的操作期间处理。在某些示例中,存储设备248是临时存储器,意味着存储设备248的主要目的不是长期存储。计算设备100上的存储设备248可被配置为作为易失性存储器而用于信息的短期存储,并且因此如果被去激活的话不保持所存储内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及在本领域中已知的其它形式的易失性存储器。

在某些示例中,存储设备248还包括一个或多个计算机可读存储介质。存储设备248可被配置成存储大于易失性存储器的信息量。存储设备248可进一步被配置为作为非易失性存储器空间而用于长期信息存储,并在激活/断电循环之后保持信息。非易失性存储器的示例包括磁性硬盘、光盘、软盘、闪速存储器或各形式的电可编程存储器(eprom)或电可擦可编程(eeprom)存储器。存储设备248可以存储与操作系统136、系统运行时间126以及应用容器102相关联的程序指令和/或数据。

如图2中所示,计算设备100可包括电源258。在某些示例中,电源258可以是电池。电源258可向计算设备100的一个或多个组件提供功率。电源258的示例可包括但不一定限于具有锌碳、铅酸、镉-镍(nicd)、镍金属氢化物(nimh)、锂离子(li离子)和/或锂离子聚合物(li离子聚合物)化学组成的电池。在某些示例中,电源258可具有有限的容量(例如,1000至3000mah)。

根据本公开的技术,系统运行时间126可以接收对执行应用的特定功能的请求。例如,用户可以在存在敏感显示器204处提供用户输入。存在敏感显示器204可以使得系统运行时间126生成与选择应用的图标相对应的事件。响应于确定用于保持应用的可安装子包的应用容器未被分配在存储组件248的易失性存储器中,系统运行时间126从第一远程计算系统检索应用定义。例如,系统运行时间126使得通信单元244中的一个向远程计算系统发送对应用定义的请求。所述应用定义可以定义应用的可安装子包与用户指定的标识符之间的多个映射。

响应于将应用容器102a分配在计算设备100的易失性存储器中,系统运行时间126可以至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能。响应于由在计算设备处执行的应用容器102a至少部分地基于应用定义和用户定义标识符来确定用于特定功能的可安装子包未被存储在计算设备100处,应用容器102a可以从远程计算系统检索包括多个可执行组件的可安装子包。远程计算系统可以是包括应用定义的相同计算设备或不同计算设备。在某些示例中,如果计算设备是不同的,则其可以被共同的操作者操作。在某些示例中,操作者是管理者或拥有和/或操作一个或多个计算系统的任何其它实体。

计算设备100可以仅检索与应用所需的功能的分立集合相对应的一个或多个子包,而不是以逐个组件为基础下载每个可执行组件,也不是下载应用的所有可执行组件。此外,应用容器102a可以基于软件开发者识别具有用户指定的标识符的子包而下载用于特定功能的子包,而不是使加载器106(在图1中示出)在运行时间且在执行期间识别未被本地存储的每个单独可执行组件并以逐个组件为基础单独地检索并安装这样的可执行组件。同样地,检索子包可以是比以逐个组件为基础单独地检索和安装这样的可执行组件粒度更小但更高效的检索机制。应用容器102a可以使用所检索的子包的一个或多个可执行组件来执行应用的特定功能。

在某些示例中,每个相应的应用容器可以与不同的应用相对应。例如,操作系统可以包括用户界面,其允许用户基于与不同应用相对应的相应图标来选择不同的应用(例如,从菜单或图标网格)。例如,用户可以从操作系统用户界面选择电子邮件客户端图标,其使得执行具有其自己的单独应用容器的电子邮件客户端应用。不同于应用容器,web浏览器的扩展或其它子应用(例如,插件、javascript、java虚拟机等)可能未被表示为将在操作系统的用户界面中启动的单独应用。例如,即使web浏览器针对有标签界面的每个标签创建了单独的进程,也可能并非标签中的每一个都像不同的可启动应用一样被表示为操作系统的用户界面内的单独应用。

如在本公开中描述的应用容器可以不同于web浏览器,因为应用容器可以包括容器运行时间。如在本公开中所述,应用容器的容器运行时间可以包括库,但是还可以将操作系统api暴露于应用容器内的子包的可执行组件。不同于应用容器,web浏览器可以不将这样的操作系统api暴露于web浏览器内的扩展或其它子应用。

如在本公开中所述,应用容器可以不同于web浏览器,因为应用容器可以从在应用容器外部的监督器组件(例如,在运行时间系统或操作系统中)接收用户指定的标识符(例如,uri),其可以在没有附加用户干预的情况下使得检索改变应用的执行行为或外观的子包。用户指定的标识符可以源自于在相同计算设备或不同计算设备上执行的其它应用,并且在被应用容器接收到时可以自动地改变应用的执行行为或外观。相反地,web浏览器可以在web浏览器本身内而不是从在应用容器外部的源(例如,监督器组件或在web浏览器外部的另一应用)接收用户输入(例如,输入url的文本)。另外,web浏览器可以不包括如在本公开的应用容器内描述的用以执行用户指定的标识符的查找并改变应用容器所表示的应用的执行的路由器和/或应用定义。不同于应用容器,web浏览器可以不包括回调界面,其接收并缓存用以改变应用容器内的子包的操作的生命周期调用。

在某些示例中,web浏览器可以包括核心功能(例如,呈现引擎)和一个或多个第三方扩展、插件和/或子应用。不同于应用容器,web浏览器在所有web浏览器的核心功能未被本地存储并可用于计算设备以便执行的情况下可能不会适当地运行或者根本不执行。相反地,应用容器可以在只有其核心功能的子集(例如,仅仅用于用户界面的子集的子包)被本地存储并可用于计算设备以便执行的情况下可以适当地运行。

图3是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器的计算设备的示例操作的时序图。仅仅出于举例说明的目的,下面在图1的计算设备100和远程计算系统142的场境内描述示例操作。

如图3中所示,计算设备100最初可以检测或接收请求300以发起计算设备100的特定功能。例如,用户可以向计算设备100提供用户输入以在最初选择与应用(出于图3的目的其为导航应用)相对应的图标。替选地,用户可以选择在计算设备100处执行并与远程计算系统142通信以检索子包和应用定义的媒体商店应用中的导航应用。监督器302可以接收所述请求。在图3中,所述请求可以包括用户指定的标识符http://wh.com/s/123。所述用户指定的标识符可以是统一资源定位符(url)。url包括子标识符wh.com,其是用于如在本公开中描述的导航应用的远程计算系统142中的全局唯一标识符。

监督器302可以确定用于导航应用的一个或多个子包是否被存储在计算设备100处(308)。如果没有用于导航应用的子包被存储在计算设备100处,则计算设备100向特定应用定义提交对分解用户指定的标识符的请求:http://wh.com/s/123(310)。远程计算系统142中的一个或多个对用户指定的标识符http://wh.com/s/123的全部或一部:执行查找以识别应用定义。在识别到应用定义之后,远程计算系统142中的一个或多个向计算设备100发送应用定义app_def{package:com.wh.app,…}(312)。

监督器102在接收到应用定义app_def{package:com.wh.app,…}之后,可以将用于应用的软件开发者所指派的包标识符(com.wh.app)与子标识符wh.com相关联是远程计算系统142中的用于导航应用的全局唯一标识符(316)。监督器302向应用容器102a发送用以执行在初始请求300中所指定的特定功能(318)。在某些示例中,所述消息可以指定应用定义、用户指定的标识符和/或一个或多个命令。作为示例,在图3中所发送的消息start{app_def,http://wh.com/s/123}包括命令start、应用定义app_def以及用户指定的标识符http://wh.com/s/123。

应用容器102a接收所述消息并发起所述消息所指定的特定功能。应用容器102a执行查找以确定用于执行后缀/s/123所指定的功能的一个或多个子包是否被本地存储在计算设备100处。在图3的示例中,后缀的/s部分指定对于其而言子包实现设置功能的外观和行为的设置功能。/123后缀指定可以被处理以便定义用户界面的外观和/或行为的属性。例如,/123后缀可以指定在设置功能中所提供的特定用户界面。

在确定用于设置功能的子包未被本地存储在计算设备100处时,应用容器102a向远程计算系统142中的一个或多个发送用以检索用于设置功能的子包的消息(322)。所述消息可以包括信息,所述信息包括但不限于用于应用的软件开发者所指派的包标识符(com.wh.app)和用于提供设置功能的子包的子包标识符(settings_function)。接收到所述消息的一个或多个远程计算系统基于用于应用的软件开发者所指派的包标识符(com.wh.app)来执行查找,并且进一步基于用于子包的子包标识符(settings_function),选择用于设置功能的子包并将子包发送到应用容器(324)。应用容器102a接收到settings_function子包(324)。计算设备100可以执行settings_function子包的一个或多个可执行组件以执行在请求中所指定的特定功能。

图4是根据本公开的技术的用于动态地加载可安装子包和对应库的应用容器的概念图。图4图示出具有容器运行时间124的图1的应用容器102a。应用容器102a与监督器组件128a通信。图4图示出应用容器102a、子包104c和104a以及库400a至400c(“库400”)之间的关系。子包104c包括用以实现分段和兴趣点用户界面的功能,如图1中所述。子包104a包括用以实现设置用户界面的功能,如图1中所述。

如果用户提供用以使得计算设备100显示设置用户界面的用户输入,则应用容器102a可以确定子包104a是否被本地存储在计算设备100上。例如,应用容器102a可以接收具有/settings后缀的uri并确定对应子包是否被本地安装。如果不是,则应用容器102a可以与监督器128a通信以从远程计算系统检索子包104a。在某些示例中,应用容器102a可以确定子包104a使用一个或多个库(诸如库400c)来执行一个或多个操作。应用容器102a和在某些示例中的应用容器102a的加载器106可以使得库400c被加载到存储器中。例如,应用容器102a可以向监督器128a发送指定库400c的消息,这使得库400c被加载到存储器中。在另一示例中,应用容器104a可以直接地调用库400c,或者可以通过容器运行时间124来调用库400c。在其它示例中,在将子包104a加载到存储器中之后,子包104a的一个或多个可执行组件可以调用库400c。

如果库400c和/或子包104a对库400b具有传递相关性,则应用容器102a、子包104a和/或监督器128a还可以加载库400b。这样,执行子包104a所需的所有库被加载到存储器中或者另外变得可被应用容器102a和/或子包104a访问。在某些示例中,容器运行时间124a包括库400,而在其它示例中,库400被包括在运行时间系统126中,如图1中所示。

在其中库400被包括在容器运行时间124a中的示例中,应用容器102a可以通过本地地和/或从远程计算系统检索已更新库来自动地更新容器运行时间124。例如,应用容器102a可以检索指定库的最低版本的应用定义。应用容器102a可以基于所指定版本来自动地检索至少具有最低版本的库。在某些示例中,应用容器102a可以周期性地或异步地(例如,当应用最初被加载到存储器中时)检查已更新库是否可用并自动地从一个或多个远程计算系统检索这样的库。这样,软件开发者可以不必检查库是否是最新的,因为应用容器可以保证在任何可执行组件运行之前容器运行时间124满足库相关性。此外,可以在不需要更新操作系统136的情况下和/或在不需要更新运行时间系统126的情况下更新容器运行时间124。

图5是图示出根据本公开的技术的具有用于动态地加载可安装子包的应用容器的计算设备的示例操作的流程图。仅仅出于举例说明的目的,下面在图1的计算设备的场境内描述示例操作。

在图5中,计算设备100最初可以接收对执行应用的特定功能的请求(500)。例如,用户可以在计算设备100处提供用以启动应用的用户输入。计算设备100可以确定用于保持应用的可安装子包的应用容器未被分配在计算设备100的存储器中。响应于确定用于保持应用的可安装子包的应用容器未被分配在存储器中,计算设备100可以从远程计算系统检索应用定义(502)。例如,计算设备100可以向远程计算系统发送包括用于应用的唯一标识符的请求。远程计算系统可以执行查找并识别对应应用定义。远程计算系统可以向计算设备100发送应用定义。

计算设备100可以从计算设备100接收应用定义。计算设备100还进一步针对应用在计算设备100的存储器中分配应用。响应于在存储器中分配应用容器,计算设备100可以至少部分地基于请求的用户指定的标识符来发起应用的特定功能(504)。例如,监督器组件可以向应用容器发送消息,所述信息包括与包括用以执行应用的特定功能的可执行组件的一个或多个子包相对应的用户特定标识符(例如,uri、标记、标签等)。

计算设备100可以至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备100处。响应于至少部分地基于应用定义和用户所指定标识符来确定用于特定功能的可安装子包未被存储在计算设备100处,计算设备100可以从远程计算系统检索包括多个可执行组件的可安装子包(506)。在某些示例中,计算设备100可以从与包括应用定义的远程计算系统不同的远程计算系统检索包括多个可执行组件的可安装子包。在某些示例中,计算设备100可以从与包括应用定义的远程计算系统相同的远程计算系统检索包括多个可执行组件的可安装子包。计算设备100使用一个或多个子包的一个或多个可执行组件来执行应用的特定功能(508)。例如,计算设备100在执行可执行组件之后可以改变应用的行为和/或外观。

示例1:一种方法,包括:由在计算设备处执行的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持所述应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由在计算设备处执行的应用容器至少部分地基于应用定义和用户定义标识符来确定用于特定应用的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

示例2:根据示例1所述的方法,其中,所述特定功能是第一特定功能,其中,对执行特定功能的请求是对执行第一特定功能的第一请求,所述方法进一步包括:接收对执行应用的第二特定功能的第二请求;响应于确定在存储器中分配了用于应用的应用容器且用于第二特定功能的可安装子包未被存储在计算设备处,由应用容器在不从所述第二远程计算系统检索所述应用的第三子包的情况下,从第二远程计算系统检索用于第二特定功能的可安装子包,其中,所述第三子包未被安装在计算设备上;以及由应用容器使用在用于第二特定功能的可安装子包中所包括的多个可执行组件来执行应用的特定功能。

示例3:根据示例1-2中的任一项所述的方法,进一步包括:由应用容器的生命周期组件缓存从计算设备的运行时间系统所接收的多个生命周期调用;以及响应于确定所述多个可执行组件中的至少一个被加载在计算设备的存储器中,向所述多个可执行组件中的所述至少一个发送所述多个生命周期调用中的一个或多个。

示例4:根据示例1-3中的任一项所述的方法,进一步包括:由应用容器的路由器接收用户指定的标识符;由应用容器的路由器查询路由器表以确定用于所述特定功能的所述可安装子包是否被存储在所述计算设备处,所述路由器表包括应用的可安装子包与用户指定的标识符之间的所述多个映射;以及响应于确定用于特定功能的可安装子包未被本地存储在计算设备处而向第二远程计算系统发送包括可安装子包的标识符的消息。

示例5:根据示例1-4中的任一项所述的方法,进一步包括:由应用容器来识别在应用定义中所指定的库的最低版本;在使用运行时间容器来执行应用之前:检索具有大于或等于最低版本的版本的库的实例;在应用容器的容器运行时间中安装库的实例;以及其中,执行应用的特定功能包括使用所述容器运行时间中的库的实例来执行特定功能。

示例6:根据示例1-5中的任一项所述的方法,其中,所述多个可执行组件中的每一个是面向对象设计中的已编译类,其中,所述应用容器被实现为在计算设备处执行的操作系统中的进程,并且其中,用于特定功能的子包包括少于实现应用的全部可执行组件。

示例7:根据示例1-6中的任一项所述的方法,其中,所述第一和第二远程计算系统是相同计算设备。

示例8:根据示例1-7中的任一项所述的方法,其中,所述第一和第二远程计算系统被包括在由共同操作者所操作的系统。

示例9:一种计算设备,包括:一个或多个计算机处理器;以及包括指令的存储器,所述指令在被所述一个或多个计算机处理器执行时,使得所述一个或多个计算机处理器:由计算设备的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由计算设备的应用容器至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

示例10:根据示例9所述的计算设备,其中,所述指令在被所述一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行示例2-8的方法中的任一项。

示例11:一种被用指令编码的非暂时性计算机可读存储介质,所述指令在被执行时使得计算设备的至少一个处理器:由计算设备的监督器组件接收对执行应用的特定功能的请求;响应于确定用于保持应用的可安装子包的应用容器未被分配在所述计算设备的存储器中,由监督器组件从第一远程计算系统检索应用定义,其中,所述应用定义定义应用的可安装子包与用户指定的标识符之间的多个映射;响应于在计算设备的存储器中分配应用容器,由监督器组件至少部分地基于所述请求的用户指定的标识符来发起应用的所述特定功能;响应于由计算设备的应用容器至少部分地基于应用定义和用户指定的标识符来确定用于特定功能的可安装子包未被存储在计算设备处,由应用容器从第二远程计算系统检索包括多个可执行组件的可安装子包;以及由应用容器使用所述多个可执行组件来执行应用的所述特定功能。

示例12:根据示例11所述的被用指令编码的非暂时性计算机可读存储介质,所述指令在被执行时使得计算设备的至少一个处理器执行示例2-8的方法中的任一项。

示例13:一种包括用于执行示例1-8的方法中的任一项所述的装置的装置。

在一个或多个示例中,可用硬件、软件、固件或其任何组合来实现所述功能。如果用软件实现,则可将功能存储作为一个或多个指令或代码在计算机可读介质上或者通过计算机可读介质发射并被基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其与诸如数据存储介质的有形介质或者包括促进(例如根据通信协议)将计算机程序从一地传递到另一地的任何介质的通信介质。以这种方式,计算机可读介质一般地可与以下两项相对应:(1)有形计算机可读存储介质,其是非临时的,或者(2)通信介质,诸如信号或载波。数据存储介质可以是可以被一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中所述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。

以示例而非限制的方式,这样的计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘储存器、磁盘储存器或其它磁存储器件、闪速存储器或者可以用来以指令或数据结构的形式存储期望程序代码且可以被计算机访问的任何其它介质。并且,将任何连接适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、扭绞线对、数字订户线(dsl)或诸如红外线、无线电以及微波的无线技术来从网站、服务器或其它远程源发射指令,则在介质的定义中包括同轴电缆、光纤电缆、扭绞线对、dsl或诸如红外线、无线电和微波的无线技术。然而,应理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它暂态介质,而是替代地针对非暂态、有形存储介质。如本文所使用的磁碟和磁盘包括紧凑式磁盘(cd)、激光磁盘、光盘、数字多功能磁盘(dvd)、软盘和蓝光磁盘,其中,磁碟通常磁性地再现数据,而磁盘通常用激光来光学地再现数据。以上的组合也应被包括在计算机可读介质的范围内。

指令被一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其它等价集成或分立逻辑电路。因此,如本文所使用的术语“处理器”可指代任何前述结构或适合于实现本文所述技术的任何其它结构。另外,在某些方面,可在专用硬件和/或软件模块内提供本文所述功能。并且,所述技术可完全用一个或多个电路或逻辑元件来实现。

本公开的技术可在多种设备或装置中实现,包括无线手机、集成电路(ic)或ic集(例如,芯片集)。在本公开中描述了各种组件、模块或单元以强调被配置成执行公开技术的设备的功能方面,但不一定要求用不同的硬件单元来实现。相反地,如上所述,可将各种单元组合在一个硬件单元中,或者用许多互操作硬件单元的集合来提供,包括如上所述的一个或多个处理器,与适当的软件和/或固件相结合。

已描述了本公开的各种方面。这些及其它方面在以下权利要求的范围内。

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