Web应用体系架构的制作方法
【专利摘要】本发明公开涉及WEB应用体系架构。web应用体系架构可以使用包装应用来在web浏览器中提供虚拟机环境,并且web应用可以在包装应用上运行。包装应用可以为web应用提供生命周期管理并且为环境中的所有web应用提供诸如登录和登出的其它功能。
【专利说明】WEB应用体系架构
[0001]本申请要求2011年7月26日提交的美国临时专利申请N0.61/511,938的利益,并且这个临时专利申请特此通过弓I用结合在本文中。
【技术领域】
[0002]本发明涉及web (网络)应用,并且尤其涉及通过使用客户端设备上的web浏览器可以把这种服务作为电子邮件服务或日历服务或联系人服务等提供的web应用,其中客户端设备与提供特定web服务的一个或多个web服务器交互。
【背景技术】
[0003]现有技术中的web应用系统允许用户通过web浏览器访问他们的电子邮件并与其交互。例如,web电子邮件允许用户通过使用标准的web浏览器而不是电子邮件客户端观看他们的电子邮件并与其交互。例如,在微软(Microsoft)的Exchange Server上维护的电子邮件系统允许用户通过可以连接到网络的任何机器上的web浏览器访问他们的电子邮件、日历和联系人,使得Entourage或Microsoft Outlook的使用不再是访问电子邮件等所必需的。互联网服务提供商,诸如Comcast,及互联网搜索提供商,诸如Google和Yahoo,也允许通过常规的web浏览器访问用户的电子邮件及其它服务。
【发明内容】
[0004]这里描述了 web应用体系架构的各种实施例。在一种实施例中,web应用体系架构包括配置为在标准web浏览器上运行的包装应用(wrapper application),其中标准web浏览器本身在数据处理系统的操作系统上运行。一组应用配置为在该包装应用上运行(例如,每个应用在包装应用的iframe中运行),而且该组应用中的每个应用都配置为向/从一个或多个web服务器提供数据。这一个或多个web服务器可以存储电子邮件数据、日历数据、联系人数据及其它类型的数据。包装应用配置成为该组应用中的每个应用提供生命周期管理并且可以在该组应用中的应用之间提供切换。包装应用可以被认为是在web浏览器上运行的类似虚拟机的操作系统,其中web浏览器本身在另一个操作系统,诸如抢先式多任务操作系统,上运行。在一种实施例中,该组应用可以包括电子邮件应用、日历应用、及联系人或地址本应用。在一种实施例中,当该组应用中的每个应用被呈现时,它被呈现为最前面的应用,而其它应用依赖于实施例被完全隐藏或者至少部分被遮蔽。在一种实施例中,当被呈现时,每个应用都在由web浏览器提供的同一单个web浏览器窗口中呈现。在一种实施例中,通过一个或多个应用编程接口( API),调用在包装应用和该组应用中的每个应用之间传送。这些调用可以在每个应用被启动的时候或者在每个应用在最前面和不是最前面之间切换的时候被传送。由包装应用提供的生命周期管理可以包括该组应用中的每个应用的启动和关闭。而且,包装应用可以在包装应用和web浏览器之间传送调用,以便支持该组应用中每个应用的运行。在一种实施例中,该组应用中的每个应用在其不在最前面的状态下(例如,如这里所描述的,被完全或部分隐藏或者挂起)时保持执行。在一种实施例中,响应于来自web浏览器的调用,包装应用可以呈现一组图标,每个图标代表该组应用中的应用,这组图标可以构成供选择或切换到的可用应用的选项板(palette)。
[0005]在一种实施例中,根据本发明的一种方法可以包括执行第一操作系统、在第一操作系统上执行web浏览器、在web浏览器上执行包装应用,并且在包装应用上执行至少一个应用。包装应用可以为作为该组应用一部分的至少一个应用,诸如电子邮件应用、日历应用、联系人或地址本应用等,提供生命周期管理。在一种实施例中,该方法还可以包括当每个应用在运行或启动(launch)或终止的时候通过API在包装应用和该组应用中的每个应用之间传送至少一个调用。另外,该方法还可以包括当例如启动第一应用时在web浏览器和包装应用之间传送至少一个调用。至少一个调用的所述传送可以是通过API发布、发起、启用(invoke)或接收一个调用或软件消息中的一个。
[0006]至少在有些实施例中,包含可执行编程指令的机器可读非临时性存储介质可以用于实现在此所述的方法。而且,数据处理系统可以配置为如这里所描述的那样进行操作,而且这些数据处理系统可以包括台式计算机、膝上型计算机、平板系统、智能电话、嵌入式设备及诸如其它消费者电子设备的其它电子设备。
[0007]本发明的其它特征将从附图和以下具体描述显而易见。
[0008]以上概述不包括本发明所有方面的详尽列表。预期本发明包括可以根据以上概述的各方面的所有合适组合来实践的所有系统和方法,以及在以下具体描述中所公开的那些系统和方法。
【专利附图】
【附图说明】
[0009]本发明是作为例子而不是限制在附图的各图中示出,其中相同的标号指示相似的元件。
[0010]图1示出了用于web应用的软件体系架构的例子。
[0011]图2以流程图的形式示出了根据本发明一种实施例的方法的例子。
[0012]图3是说明根据本发明一种实施例的方法的流程图。
[0013]图4是显示本发明一个实施例的另一个流程图。
[0014]图5A-5D不出了说明本发明一个实施例的另一个流程图。
[0015]图6示出了通过一个或多个网络互连以便向通过一个或多个网络耦合到一个或多个服务器的一个或多个客户端设备提供web服务的多个系统的例子。
[0016]图7示出了根据本发明一种或多种实施例的用于实现推送通知的方法的例子。
[0017]图8A示出了可以用于选择一个或多个web应用的一种实施例的图形用户界面的例子。
[0018]图SB示出了可以用于选择一个或多个web应用的图形用户界面的另一个例子。
[0019]图9示出了可以用于选择一个或多个web应用的图形用户界面的另一个例子。
[0020]图10示出了可以用于选择一个或多个web应用的图形用户界面的另一个例子。
[0021]图11示出了用于电子邮件web应用的图形用户界面的例子。
[0022]图12示出了用于联系人或地址本web应用的图形用户界面的例子。
[0023]图13是用于日历web应用的图形用户界面的例子。
[0024]图14是用于地图或地图辅助的查找web应用的图形用户界面的例子。[0025]图15是用于允许对用户文档,诸如文字处理文档、演示文档及电子数据表文档,进行访问的图形用户界面的例子。
[0026]图16以框图形式示出了可以在本发明各种实施例中使用的数据处理系统的例子。
[0027]图17示出了在本发明的一些实施例中可用的软件堆栈的示例性实施例。
[0028]图18说明了在本发明的一些实施例中可用的示例性API体系架构的框图。
【具体实施方式】
[0029]本发明的各种实施例及方面将参考以下讨论的细节来描述,而且附图将说明这各种实施例。以下描述和图是说明本发明而不应当认为是限制本发明。众多具体细节的描述是为了提供对本发明各种实施例的透彻理解。但是,在某些情况下,众所周知或者常规的细节没有描述,以便提供对本发明实施例的简洁讨论。
[0030]在本说明书中,对“一种实施例”或“实施例”的引用意味着联系该实施例所描述的特定特征、结构或特性可以包括在本发明的至少一种实施例中。短语“在一种实施例中”在本说明书中各个地方的出现不一定全都指同一个实施例。以下图中所绘出的过程是由包括硬件(例如,电路、专用逻辑等)、软件或者这二者的组合的处理逻辑执行的。虽然所述过程是根据某些顺序操作在下面描述的,但是应当认识到,所述操作中的一些可以按不同的次序执行。而且,有些操作可以并行地而不是顺序地执行。
[0031]Web应用体系架构可以利用可以提供在web浏览器上运行的类似虚拟机的环境或操作系统的包装应用。一组一个或多个web应用,诸如电子邮件应用或日历应用或联系人应用或者其它应用,可以在该包装应用之上运行,其中包装应用可以为该组应用中的每个应用提供生命周期管理。包装应用可以允许每个应用在启动之后在这组应用中的应用之间切换的同时继续执行,而且这可以全都在单个web浏览器窗口之内执行。包装应用可以提供单一的登录点,以便为该组应用中的所有web应用认证用户,并且一旦登出(或认证时间段到期)在一个应用中发生,包装应用就可以在所有启动的web应用中提供自动登出。通过这种体系架构创建的这种环境可以为用户提供更好的用户接口,这是因为,例如,需要打开更少的窗口而且每个执行的web应用的状态和上下文都可以在用户在应用之间切换的时候得以维持,而不需要打开多个窗口或者在单个web浏览器窗口的多个选项卡。这种环境还可以允许为隐藏的应用提供通知(例如,推送通知)而且可以在不影响其它应用的情况下允许应用错误被隔离和可恢复。
[0032]图1示出了具有图1中所示的软件堆栈的web应用体系架构的例子。在这种体系架构101中,一组应用103通过一个或多个API104利用包装应用105操作,其中包装应用105通过一个或多个API106在web浏览器107上运行。在一种实施例中,web浏览器107又通过一个或多个API108在抢先式多任务操作系统109上运行;在另一种实施例中,该多任务操作系统可以被其它已知的非抢先式或者非多任务的操作系统代替。图1软件堆栈中所示出的所有软件都在数据处理系统上,而且尤其是在数据处理系统110的硬件上,操作。
[0033]该组应用103可以是web应用或web服务应用,诸如web电子邮件应用、web日历应用、web联系人或地址本应用、web文档应用(例如,对iWork文档的访问)、诸如用于导航的应用或用于寻找设备,诸如寻找智能电话,的应用的地图应用,及可以通过web浏览器实现为web应用的其它应用,其中web浏览器与一个或多个web服务器通信以在web应用和一个或多个web服务器之间交换数据。用户数据,诸如电子邮件、日历数据、联系人数据等,可以存储在一个或多个web服务器上并且可以通过客户端设备上的web浏览器被访问和使用。用于各种web应用的用户界面的例子在图11-15中提供并且在以下进一步描述。该组应用中的这些应用可以在一个或多个客户端设备,诸如图6中所示可以具有数据处理系统硬件110的客户端设备605,上操作,而且客户端设备可以具有图16中所示的体系架构并且可以是台式计算机或膝上型计算机或平板系统或智能电话,或者是诸如游戏控制台的游戏设备或者其它消费者电子设备。所述一个或多个API104可以在该组应用103和包装应用105之间提供对功能或操作的多种调用。图4和5A-?提供这种API的例子和对这种API的调用,并且与API关联的更多背景信息结合图17和18提供。将理解,与调用或API有关的术语“传送”包括通过该API发布或发起或启用或接收调用或软件消息之一。在一种实施例中,该组应用中的每个应用都可以部分或完全地用JavaScript来编写,而且在一种实施例中,每个应用都可以,在一种实施例中,在包装应用105中运行的iframe内部执行,包装应用105本身可以至少部分地用JavaScript来编写并且运行在web浏览器107上。
[0034]在一种实施例中,包装应用105可以为该组应用103提供虚拟机环境并且可以运行在web浏览器107上而且可以通过API106在包装应用和web浏览器之间传送调用。图5A-5D提供通过API106的调用的一些例子。在一种实施例中,包装应用拥有web浏览器中的URL文本输入域并且使用对web浏览器的调用来控制该URL域并且使用对web浏览器的调用来控制标题条;例如,包装应用可以通过包装应用和web浏览器之间的调用改变标题条中的名字,以反映当前最前面的应用。包装应用如何控制标题条中的名字的例子在图11至15中示出。包装应用可以为该组应用中的每个应用提供生命周期管理。在一种实施例中,这可以包括启动和关闭每个应用。此外,包装应用可以提供其它特征和功能及操作,包括在应用之间进行切换,及处理应用的错误(例如,拆卸(tear down)行为失常或者崩溃的应用并且为用户提供重新启动该应用)。另外,在一种实施例中,包装应用可以强制不活动或崩溃或行为失常的应用关闭。另外,包装应用还可以为用户并且为该组应用中的所有应用提供单一的登录与单一的登出点。虽然在另一种实施例中包装应用可以包括传统操作系统的某些功能或特征或者这些功能或特征的一部分,但是,在一种实施例中,包装应用可以不包括传统操作系统的这些特征,诸如内核和内存处理及过程与线程的操作的调度。
[0035]在一种实施例中,包装应用还可以向该组应用103中的一个或多个web应用提供推送通知,而且在一种实施例中,可以通过该组应用103中最前面的应用上的用户界面允许为不在最前面的应用呈现推送通知。在一种实施例中,包装应用和该组应用103在由web浏览器的内存空间定义的内存空间中进行操作并且在由web浏览器的窗口定义的线程或过程中进行操作,其中包装应用和该组应用103在web浏览器的窗口中运行。
[0036]Web浏览器107可以是常规web浏览器,诸如来自微软的Internet Explorer或者来自位于加州Cupertino的Apple公司的Safari,或者Firefox或Opera或者其它已知的web浏览器。Web浏览器是处理用标记语言,诸如HTML,编码的网页的软件应用程序;网页由web浏览器通过一个或多个URL (统一资源定位符)检索。在一种实施例中,web浏览器配置为利用web浏览器中的布局引擎把网页的标记语言处理成网页的DOM (文档对象模型),并且进一步web浏览器可以配置为处理与网页关联的层叠样式表以呈现网页。在一种实施例中,web浏览器107可以使用一个或多个API108与操作系统109交互,而且,如本领域中已知的,这些API可以为开窗和联网功能,诸如TCP/IP等,支持对操作系统的调用。
[0037]图2示出了可以和图1中所示软件体系架构一起使用的方法的例子。在操作201中,主操作系统,诸如操作系统109,在数据处理系统110上被启动并执行,其中数据处理系统110可以是例如图6中所示的一个或多个客户端设备并且可以具有图16中所示的体系架构,图16在下面描述。接下来,在操作203中,web浏览器可以被启动,以便使web浏览器在主操作系统上执行;web浏览器可以是图1中所示在操作系统109上执行的web浏览器107。用户可以如本领域中已知的那样操作web浏览器,以访问网页、看电视节目或电影或者监察体育赛事和得分或者检查天气或股票或者如本领域中已知的常规web浏览器的其它使用。此外,用户可以决定使用web服务,诸如在这里描述的web邮件或其它web服务。如这里所描述的,这可以通过把web浏览器指向特定的URL来进行,该URL是用于一种或多种web服务的入口点。例如,在一种实施例中,用户可以把文本“icloud.com”输入web浏览器107的URL输入域。响应于这个命令的输入,诸如icloud.com URL,包装应用105被启动并且在web浏览器107上运行;这在图2中示为操作205。在图2的流程中,假设包装应用和运行在该包装应用上的该组应用103已经安装在数据处理系统上;例如,用户先前已经用过这些web应用而且它们已经如结合图5A-?所描述的那样下载并且已经高速缓存在web浏览器的高速缓存中。如这里所指出的,包装应用及该组应用103中的每个应用都可以用JavaScript来编写。在操作205中包装应用被启动之后,包装应用在操作207中在web浏览器的窗口中呈现登录窗口或用户界面;然后,用户可以输入系统所需要的登录数据,诸如像用户名和用户密码。然后,以结合图5A-?所描述的方式,系统利用例如设置服务,诸如图6中所示的设置服务607,认证用户。在操作209中,在一种实施例中,包装应用将通过单个登录过程为在该组应用103中执行的所有应用认证用户并且将响应于由用户或者由系统代表用户输入的正确登录数据而这么做。此外,在一种实施例中,当例如包装应用和设置应用在其中执行的web浏览器窗口关闭时,包装应用提供自动退出。在操作211中,在认证之后,在一种实施例中,web应用可以呈现代表可用应用的图标,这些应用是该组应用103中通过认证的用户可用的应用。在一种实施例中,这可以包括电子邮件应用、联系人或地址本应用、日历应用及这里描述或本领域中已知的其它应用或web应用。在操作211中,包装应用在web浏览器的窗口中呈现图标,而且用户可以选择其中一个图标来使该组应用103中对应的应用启动并由此而执行。可选地,包装应用可以启动该组应用103中上次使用过的应用并且可以附加地呈现可以用于在应用之间进行切换的图标,如以下进一步描述的。
[0038]图2示出了可以用于让图1中所示的软件堆栈准备好(be up)并运行的方法,而图3示出了一种实施例中使用那个软件堆栈的方法,这包括该组应用103中应用之间的切换,在一种实施例中,所述每个应用都在包装应用105中的一个iframe中执行,包装应用本身在web浏览器107上运行。在操作301中,包装应用,诸如包装应用105,在web浏览器的单个窗口中的用户界面中呈现代表该组应用103中可用应用的图标。这种用户界面的一个例子在图8A中和图8B中示出。呈现这种图标的备选用户界面还在图9和10中示出。当用户选择了那些图标之一时,这将使该组应用103中对应的应用如果没有启动的话就启动并且将使那个应用成为最前面的应用。例如,在操作303中,包装应用接收对其中一个图标的选择,这个图标在操作103中被称为第一应用。选择可以来自用户在该图标上放置光标或者用户利用用户的手指在该图标上轻击或者本领域中已知的其它输入。响应于操作305中的这个选择,如果第一应用先前没有启动的话,包装应用就启动它并且使那个第一应用成为最前面的应用。依赖于用户界面的实现,不是最前面的所有其它可用应用或者完全隐藏或者部分被遮蔽。在图11至15所示的例子中,不是最前面的其它可用应用完全隐藏而且用户可以通过选择图标或其它命令返回或切换到其它应用。在一种实施例中,那个图标可以被称为切换器图标,诸如图8A和8B及图11至15中所示的图标813。那个图标的选择将造成图8A或SB中所示的该组图标的呈现,或者每个图标代表用于通过认证的用户可用的该组应用。在第一应用成为最前面的应用之后,用户就可以与其交互。这在操作307中示出,其中第一应用接收并处理用户输入并且与一个或多个web服务器,诸如日历服务器或电子邮件服务器或联系人/地址本服务器等,交互。
[0039]图6示出了可以与一个或多个客户端设备交互的这种web服务器的例子。将理解,用户可以在一个时间点使用一个客户端设备,诸如用户办公室的用户的客户端设备,并且在另一个时间点使用另一个客户端设备,诸如用户家里的计算机,而且,在每种情况下,常规或标准的web浏览器都可以与web应用一起使用,来访问存储在一个或多个web服务器上的数据并且与那些数据交互,诸如图6中所示的那些。
[0040]在一种实施例中,如操作307中所示出的,第一应用在包装应用105中的iframe内运行,包装应用105本身在由web浏览器107提供的web浏览器的单个窗口中运行。在第一应用使用过程中的任何时间点,用户都可以决定切换到该组应用103中其它可用的应用之一,而且这在操作309中示出,其中,在一种实施例中,web浏览器接收切换应用的输入。例如,web浏览器可以接收针对切换图标813的输入并且可以经过输入到第一应用的调用,该调用又调用包装应用105,然后包装应用如在以上所述的操作301中那样呈现图标。例如,该组图标同样表示可用的该组应用而且可以在如图8A或SB所示的用户界面中或者在图9所示的备选用户界面或者图10所示的备选用户界面中呈现。如操作311中所示出的,包装应用可以响应于在操作309中接收到的切换输入而在先前显示第一应用的同一 web浏览器的单个窗口中呈现可用应用的图标。换句话说,图3的方法可以使用同一单个web浏览器窗口。在一种实施例中,当所述图标在选择切换器图标之后呈现时,包装应用造成第一应用的完全隐藏。例如,如果第一应用是如图11中所示的电子邮件应用而且如果用户选择切换器图标813,这造成图8A中所示该组图标的呈现而且在这组图标呈现的同时电子邮件应用1101不再在web浏览器的单个窗口中呈现而且它已经完全从视野中隐藏掉了。图9示出了一种备选的用户界面,其中先前使用的应用继续呈现,同时用于在应用之间切换或者选择应用的该组图标在web浏览器窗口中的一个区域中显示,这个区域可以被称为抽屉(drawer)区域;类似地,图10示出了用户界面的一个例子,其中先前使用的应用,诸如图3方法中的第一应用,在用于选择或在该组应用103中的应用之间切换的该组图标后面继续呈现。在操作313中,系统接收对另一个应用的选择,这个应用可以被称为第二应用,它是该组应用103中的一个应用。响应于这个选择,包装应用启动第二应用(如果先前没有启动的话)而且使第二应用成为最前面的应用。另外,包装应用将造成所有其它在执行的应用至少部分隐藏或被遮蔽,但是,在一种实施例中,那些其它应用仍然可以利用所保存的上下文和数据保持执行。因此,例如,如果用户输入一个新联系人的联系数据并且在输入数据的同时决定切换到日历应用或电子邮件应用,则新数据和那个新数据的上下文将在其至少部分被隐藏的同时仍然得以保存,而且那些隐藏的应用继续利用所保存的上下文和数据,包括文本输入焦点的上下文和上次输入的位置及输入的用户数据,执行。在一种实施例中,这甚至可以扩展到在上次执行的应用中所呈现的模态对话框,使得那些模态对话框的状态在该应用不是同一单个web浏览器窗口中最前面的应用的时候得以保留。而且,在操作315中,由操作311呈现的该组图标也将被除去,使得,在一种实施例中,用户只看到第二个应用,而其它应用至少部分地隐藏。
[0041]现在将参考图8B、11和12提供操作311、313和315的例子。在一种实施例中,操作311可以呈现图SB中所示的用户界面,该用户界面呈现通过认证的用户可用的一组应用103的图标。那些图标的呈现可以通过选择切换器图标813来发生。将假设用户先前使用如图11中所示的电子邮件web应用1101并且决定切换到该组应用103中的联系人web应用。这可以通过选择切换器图标813来执行。在一种备选实施例中,这可以通过通过下拉菜单或其它菜单或本领域中已知的其它用户接口选择该组应用103中可用应用的集合来执行。在用户先前使用了电子邮件应用1101之后,切换器图标813的选择造成图SB中所示图标的呈现。然后,用户可以选择图8B中所示的联系人图标,以造成图12中所示联系人应用1201的用户界面的呈现,在操作315的上下文中,联系人应用1201是由包装应用105启动的第二应用。在这个时候,用户可以通过选择关闭命令或者选择图8B中所示的关闭按钮807来关闭web浏览器窗口。作为替代,用户可以通过选择图SB中所示的退出按钮814决定登出或退出。作为响应,在操作317中,包装应用将导致每个执行的应用保存其数据并且随后将终止并拆卸每个启动的应用并且将为每个启动的应用使该用户登出。以这种方式,包装应用为用户提供处理所有启动的应用和终止所有启动的应用及为那些web应用中每一个提供登出web服务的单个点。在这种特定的实施例中,这简化了用户界面及用户与各种web服务的交互,因为不需要用户登出每个个别的web服务。
[0042]虽然图3中所示的方法示出了该组应用103中两个应用的使用,但是将认识到,更多的应用可以同时启动和使用而且,在一种实施例中,所有应用都在同一个web浏览器中给出,没有选项卡界面,并且其中每个应用都作为包装应用中的一个iframe或者在一个iframe中执行,其中包装应用在同一 web浏览器窗口中的web浏览器上运行。在一种实施例中,web浏览器窗口的内存空间也分配给包装应用及该组应用103中被限定到在分配给那个特定web浏览器窗口的内存空间中运行的每个应用。
[0043]图4示出了一个方法的例子,其中特定的调用在该组应用103中的一个或多个应用和包装应用105之间传送;这些调用可以通过一个或多个API104,API104已经在这里描述过了。特定API的具体例子也在这里包括的第一附录和第二附录中提供。图4中所示和描述的调用也在图5A-?中示出,而且特别地,在图5B的发起序列503和背景序列505中示出。特别地,图4中所示的方法示出了在根据图5A-?所示流程图的实现的一种实施例中在发起序列和背景序列中执行的一些调用。在操作401中,包装应用通过进行图4操作401中所示的调用来启动应用。在一种实施例中,这个调用又使被选应用的JavaScript在包装应用的一个iframe中执行,包装应用本身在web浏览器,诸如web浏览器107,上运行。在这种实施例中,启动的应用将通过对包装应用的调用通知包装应用该应用已就绪;图4中的操作403示出了这种调用的一个例子。然后,在操作405中,包装应用通知该应用它将成为最前面的应用;这种调用的一个例子在图4的操作405中示出。在一种实施例中,该应用将如发起序列503中所示的那样保持处于空闲状态,直到操作407,在操作407中,通过如图4操作407中所示的从包装应用到该应用的调用,包装应用通知该应用它现在是最前面的应用。在这个时候,用户可以与现在处于最前面的应用交互。例如,如果该应用是电子邮件应用,诸如图11中所示的电子邮件应用1101,则用户可以读电子邮件、回复电子邮件、转发电子邮件、仓Il建新电子邮件、仓Il建电子邮件的新文件夹、观看文件夹中的电子邮件,等等。在使用电子邮件应用1101的过程中,用户可以决定观看用户的日历或用户的地址本等,这可能使用户如操作409中那样选择另一个应用。在一种实施例中,这可以通过选择切换器图标813或者通过从下拉式菜单或其它菜单结构中的应用菜单中或者本领域中已知的其它用户接口选择另一个应用来执行。如结合操作313和315所描述的,这将造成其它应用如果先前没有启动的话就启动。而且,操作401、403、405和407可以对在操作409中选择的另一个应用重复。同时,包装应用105可以在操作411中通知先前启动并执行的应用它将被移动到后台,而且这种调用的一个例子在图4所示的操作411中提供。后台状态可以是完全或部分地被隐藏。结合图SB和11至15所示的实现涉及一种实施例,其中后台应用完全被隐藏,而最前面的应用看起来占据了 web浏览器的就算不是全部也是大部分的窗口。操作413显示通过移动到后台而被置成空闲状态的任何应用将继续被加载和可操作,而且其可执行代码及与该应用的可执行代码关联的上下文和数据仍然在内存中,这可以是由如在此所述的web浏览器规定的内存空间。这可以允许用户在由不同领域中不同web服务器托管的应用之间切换,而不用在不同web服务器上托管的每个应用之间切换的时候保存状态或登录或登出。这可以允许一个应用与不同主机或web服务器上有可能多个服务通信。例如,该组应用103中的日历web应用可以与日历web服务器通信,但是,在一种实施例中,也可以同时与联系人web服务器通信,以便利用联系人web服务器上该用户的地址本自动完成对一个日历事件的被邀请人。在一种实施例中,这可以通过包装应用105保证该组应用中的任何应用都将具有通过认证的用户来实现,直到这些web服务器中任何一个作为对任何请求的响应而另有指示。在一种实施例中,如果一个应用从web服务器接收到宣布凭证或认证数据无效的响应,则应用应当清洗本地数据和高速缓存并且通知包装应用该用户不再是通过认证的,在这种情况下,在一种实施例中,包装应用可以让该用户登出该组应用中的所有应用,由此需要该用户重新输入认证信息,诸如用户名和密码。
[0044]图5A-5D的流程图示出了运行web浏览器517的客户端设备与诸如一个或多个web服务器的几个其它系统之间的交互,其中web浏览器517可以是图1的web浏览器107。特别地,认证服务器515可以是图6中所示的设置服务607,而应用服务器521可以是图6中所示web服务器601A或601B或601C中任何一个。内容分发网络519可以是该组服务器601的一部分或者是独立的服务或web服务器,该内容分发网络519配置成提供运行在包装应用105上的web应用软件和该组应用103中应用的内容。将理解,应用服务器521是例如用于提供图11中所示电子邮件应用1101的电子邮件服务器或者,作为替代,应用服务器521可以是为图12所示的联系人应用1201提供数据的web服务器等。由此,应用服务器521可以是图6中的电子邮件服务器601A或者可以是图6中所示的日历服务器601B或者图6中所示的联系人服务器601C或者与web应用交互的其它web服务器。图5A-5D中所示的方法可以从用户把URL www.1cloud.com或者另一个URL输入web浏览器517中的URL文本输入域开始,其中web浏览器517可以是图1中所示的web浏览器107。如果该组应用和包装应用先前没有高速缓存在web浏览器的高速缓存中,则如图5A中所示,一个或多个GET请求可以由浏览器执行,来请求返回到浏览器的该组应用和包装应用。如图5A中所示。如图5A中所示的包装应用示出了登录用户界面,并且响应于正确的通过认证的登录,用户可以在响应于第一个GET请求而获得包装应用之后获得该该组应用。在用户给出有效的认证或登录数据之后,浏览器517与认证服务器515通信,其中认证服务器515可以是图6中所示的设置服务器607。特别地,参考图6,通过提供可以包括用户名和密码的登录信息,客户端设备605通过一个或多个网络,诸如互联网603,与设置服务607通信。响应于有效的登录信息,设置服务器607发回可以按一个或多个cookie的形式的认证令牌(可以标记为SSL和HTTP -因此只有JavaScript不能看到它们)及适当的电子邮件服务器和web应用103使用的其它服务器的一个或多个地址;在一种实施例中,所述地址可以被称为“无序的单位组(bag)”,如图5A和5C中所示。在从适当的web服务器接收到数据之后,该组应用103中的应用呈现其用户界面(例如,在该组应用103中电子邮件应用的情况下,如图11中所示电子邮件应用1101在web浏览器的窗口中示出)。这完成了图5A登录序列501中所示的登录过程。在一种实施例中,下载的应用和下载的包装应用可以在web浏览器的高速缓存中维持,使得它们不需要在浏览器重新启动或主操作系统重新启动或重新发起等时候重复地下载。在另一种实施例中,包装应用和该组应用103中的每一个应用可以在每次用户登录的时候下载。
[0045]图5A-?示出了包装应用,在图5A-5D中被称为“云OS (cloud OS)”,和该组应用103中的一个或多个应用之间的特定调用的例子。图5A-?还示出了利用可以被称为Cloudkit API的API进行的调用(例如,图5B中所示的“Cloudkit:GET/startup...”)而且这个API为该组应用提供软件框架。用于云OS包装应用的特定API的例子在第一个附录中提供。用于Cloudkit API的特定API的例子在第二个附录中提供。图5A-?还说明了由应用和web浏览器执行的操作或调用。图5C-?还提供了在401序列,示为序列507,和终止序列509中发生的调用和操作的例子。
[0046]图6示出了可以在使用这里所描述的web应用体系架构的同时通过一个或多个网络与一个或多个客户端设备操作的一个或多个web服务器的例子。连同包装应用105和web浏览器107 —起,该组应用103可以在耦合到一个或多个网络603的客户端设备605上执行,这一个或多个网络603又与一个或多个web服务器,诸如web服务器601A、601B或601C或者未示出的其它web服务器(诸如地图或导航服务器或iWork文档服务器或者用于其它web应用的web服务器),通信。客户端设备可以同时耦合到这些web服务器中的每一个,同时它们的对应应用中的每一个如在此所述的那样执行。一组web服务器,诸如图6中所示的web服务器,可以在不同的域中(例如,一个域用于电子邮件服务器,诸如icloudemail.com,而另一个域用于日历服务器,诸如icloudcalendar.com);对于支持CORS (跨源资源共享)的web浏览器,诸如Safari和Firefox, CORS可以用于跨域请求。对于其它web浏览器,iframe可以用于经postMessage与父web浏览器窗口通信的代理XHR (XML HTTP请求)。设置服务607可以是一个或多个设置服务器607,这些设置服务器可以按结合图5A-5D所示的认证服务器515所示的方式起作用。
[0047]图7说明了推送通知如何可以用于从一个或多个web服务器向运行在包装应用105的iframe中的特定应用发送通知的例子。推送通知可以由web服务器中的任何一个,诸如电子邮件服务器601A或者日历服务器601B或联系人服务器601C,向客户端设备,诸如客户端设备605,上的web浏览器705提供通知开始。Web浏览器可以通过调用,诸如通过API106,向包装应用,诸如运行在客户端设备上的web浏览器中的包装应用105,通信。然后,包装应用可以向与发送推送通知的适当web服务器交互的应用提供通知,如709中所
/Jn ο
[0048]图8A示出了根据本发明一种实施例、显示设备801上用户界面的例子。显示设备801可以是图16的显示器1670,它可以是数据处理系统硬件110的一部分。用户界面可以由图1中所示的软件堆栈创建。将认识到,图8A中未示出的其它窗口也可以显示在桌面802中的显示设备801上,如本领域中已知的。用户界面可以包括在显示设备801的屏幕顶部示出的菜单条803 ;将理解,菜单条的备选位置也可以使用,诸如在屏幕的底部或者在诸如窗口 804的每个窗口中。图8A中所示的例子与称为Mac OS X的Macintosh操作系统的用户界面相似,其中菜单条803在屏幕的顶部。Web浏览器当前在执行,它可以是在操作系统109上执行的web浏览器107,在一种实施例中,操作系统109可以是Macintosh操作系统;作为替代,其它操作系统也可以使用,诸如Windows等。Web浏览器呈现web浏览器窗口 804,包装应用105和该组应用103可以在其中执行。Web浏览器窗口 804包括URL文本输入域806和包括标题的标题条805,在一种实施例中,标题被包装应用105所拥有或控制,如这里所描述的。Web浏览器窗口 804还包括关闭按钮807及后退和前进按钮808和809。后退和前进按钮808和809可以是web浏览器中使用的常规的后退和前进按钮。Web浏览器窗口 804还显示可以如这里所描述那样使用的切换器图标813和登出图标814。Web浏览器窗口 804所呈现的用户界面包括一组图标,每个图标代表该组应用103中的一个应用。例如,图标810可以代表该组应用103中的邮件或电子邮件应用,图标811可以代表该组应用103中的联系人应用,而图标812可以代表该组应用103中的日历应用,等等。如在此所描述的,当用户选择那些图标中的一个时,包装应用105将造成对应于被选图标的被选应用的启动(如果先前没有启动的话)。
[0049]图11至15提供了在该组应用103中的具体应用或web应用的例子。特别地,图11示出了电子邮件应用,如由标题条805中的词“mail”所指示的。如前所述,通过关于web浏览器的一组调用(例如,通过API106),包装应用控制或拥有标题条805并且可以为当前最前面的应用提供正确的标题。图12示出了一种实施例中作为该组应用103的一部分的联系人或地址本应用的用户界面的例子。图13示出了一种实施例中作为该组应用103中一个应用的日历应用的用户界面的例子。
[0050]图14根据一种实施例示出了可以用于寻找设备,诸如智能电话,并且可以是该组应用103中一个应用的地图应用的例子。图15是允许用户访问文档集合和/或与其交互的用户界面的例子,其中文档可以是演示文档、文字处理文档和电子数据表;特别地,文档应用1501允许用户与由用户在一个或多个web服务器上存储的文档交互。
[0051]图16是说明可以在本发明的一些实施例中使用的示例性数据处理系统,诸如计算机系统,的框图。应当理解,虽然图16说明了计算机系统的各种组件,但它不是要代表互连组件的任何特定体系架构或方式,因为这种细节与本发明没有密切关系。将认识到,诸如具有更少或更多组件的其它计算机系统的其它数据处理系统也可以与本发明一起使用。[0052]如图16中所说明的,形式为数据处理系统的系统1600包括总线1650,它与处理系统1620、电源1625、内存1630和非易失性存储器1640(例如,硬驱、闪存、相变存储器(PCM)等)耦合。总线1650可以通过各种桥、控制器和/或适配器彼此连接,如本领域中众所周知的。处理系统1620可以从内存1630和/或非易失性存储器1640检索所存储的指令,并且执行这些指令,以执行如上所述的操作。总线1650把以上组件互连到一起而且还把那些组件互连到可选的扩展坞1660、显示控制器&显示设备1670、输入/输出设备1680 (例如,NIC (网络接口卡)、光标控制(例如,鼠标、触摸屏、触垫等)、键盘等)及可选的无线收发器1690 (例如,蓝牙、WiF1、红外线、蜂窝电话接收器等)。数据处理系统1600可以是手持式计算机、个人数字助理(PDA)、移动电话、便携式游戏系统、便携式媒体播放器、平板或手持式计算设备或者其它类型的消费者电子设备,其中平板或手持式计算设备可以包括移动电话、媒体播放器和/或游戏设备。作为另一个例子,数据处理系统1600可以是网络计算机或者另一个设备中的嵌入式处理设备。
[0053]在一些实施例中,可以使用一个或多个应用编程接口(API)。API是由程序代码组件或硬件组件(下文中称为“AP1-实现组件”)实现的接口,它允许不同的程序代码组件或硬件组件(下文中称为“AP1-调用组件”)访问和使用由AP1-实现组件提供的一个或多个函数、方法、过程、数据结构、类和/或其它服务。API可以定义在AP1-调用组件和AP1-实现组件之间传递的一个或多个参数。
[0054]API允许AP1-调用组件的开发者(可以是第三方开发者)充分利用由AP1-实现组件提供的规定特征。可以有一个AP1-调用组件或者可以有多于一个这种组件。API可以是计算机系统或程序库为了支持从应用对服务的请求而提供的源代码接口。操作系统(OS)可以有多个API,以允许运行在该OS上的应用调用那些API中的一个或多个,而且服务(诸如程序库)可以具有多个API,以允许使用该服务的应用调用那些API中的一个或多个。API可以用可以在构建应用时被解释或编译的编程语言来规定。
[0055]在有些实施例中,AP1-实现组件可以提供多于一个API,每个API提供访问由AP1-实现组件所实现的功能性不同方面的不同方面的不同视图或者具有这些不同方面的不同视图。例如,AP1-实现组件的一个API可以提供第一组功能并且可以暴露给第三方开发者,而该AP1-实现组件的另一个API可以被隐藏(不暴露)并且提供第一组功能的一个子集而且还提供另一组功能,诸如不在第一组功能中的测试或调试功能。在其它实施例中,AP1-实现组件自己可以经底层API调用一个或多个其它组件而且因此既是AP1-调用组件又是AP1-实现组件。
[0056]API定义AP1-调用组件在访问和使用AP1-实现组件的规定特征时所使用的语言和参数。例如,AP1-调用组件通过由API暴露的一个或多个API调用或启用(通过例如函数或方法调用来体现)来访问AP1-实现组件的规定特征并且经API调用或启用利用参数传递数据和控制信息。响应于来自AP1-调用组件的API调用,AP1-实现组件可以通过API返回值。虽然API定义了 API调用的语法和结果(例如,如何启用API调用和API调用做什么),但是API可以不揭示API调用如何实现由该API调用规定的功能。各种API调用经一个或多个应用编程接口在调用(AP1-调用组件)和AP1-实现组件之间传送。传送API调用可以包括发布、发起、启用、调用、接收、返回或者对函数调用或消息作出响应;换句话说,传送可以描述AP1-调用组件或AP1-实现组件任一方的动作。API的函数调用或其它启用可以通过参数列表或其它结构发送或接收一个或多个参数。参数可以是常量、关键字、数据结构、对象、对象类、变量、数据类型、指针、数组、列表或者指向函数或方法的指针或者引用要经API传递的数据或其它项的另一种途径。
[0057]此外,数据类型或类可以由API提供并且由AP1-实现组件实现。因此,AP1-调用组件可以通过使用API中提供的定义来声明变量、使用指向其的指针、使用或实例化这种类型或类的常量值。
[0058]总的来说,API可以用于访问由AP1-实现组件提供的服务或数据或者发起由AP1-实现组件提供的操作或计算的执行。作为例子,AP1-实现组件和AP1-调用组件每个都可以是操作系统、库、设备驱动器、AP1、应用程序或者其它模块中任何一个(应当理解,AP1-实现组件和AP1-调用组件可以是彼此相同或不同类型的模块)。在有些情况下,AP1-实现组件可以至少部分地在固件、微代码或者其它硬件逻辑中体现。在有些实施例中,API可以允许客户端程序使用由软件开发套件(SDK)库提供的服务。在其它实施例中,应用或其它客户端程序可以使用由应用框架提供的API。在这些实施例中,应用或客户端程序可以结合对由SDK提供的和由API提供的函数或方法的调用,或者使用在SDK中定义并且由API提供的数据类型或对象。在这些实施例中,应用框架可以为程序提供对由框架定义的各种事件作出响应的主事件循环。利用应用框架,API允许应用规定事件和对事件的响应。在有些实现中,API调用可以向应用报告硬件设备的能力或状态,包括与诸如输入能力和状态、输出能力和状态、处理能力、电源状态、存储能力和状态、通信能力等方面相关的那些,而且API可以部分地由固件、微代码或者其它部分地在硬件组件上执行的低级逻辑实现。
[0059]AP1-调用组件可以是本地组件(即,在与AP1-实现组件相同的数据处理系统上)或者是经网络通过API与AP1-实现组件通信的远程组件(即,在与AP1-实现组件不同的数据处理系统上)。应当理解,AP1-实现组件也可以充当AP1-调用组件(B卩,它可以对由不同AP1-实现组件暴露的API进行API调用)而且AP1-调用组件也可以通过实现暴露给不同AP1-调用组件的API来充当AP1-实现组件。
[0060]API可以允许用不同编程语言编写的多个AP1-调用组件与AP1-实现组件通信(因此,API可以包括用于在AP1-实现组件和AP1-调用组件之间翻译调用和返回的特征);但是,API可以用特定的编程语言来实现。在一种实施例中,AP1-调用组件可以调用来自不同提供商的API,诸如来自OS提供商的一组API和来自插件提供商的另一组API及来自另一组API的另一个提供商(例如,软件库的提供商)或创建者的另一组API。
[0061]图18是说明示例性API体系架构的框图,该体系架构可以在本发明的有些实施例中使用。如图18中所示出的,API体系架构1800包括实现API1820的AP1-实现组件1810 (例如,操作系统、库、设备驱动器、AP1、应用程序、软件或其它模块)。API1820规定了AP1-实现组件中可以由AP1-调用组件1830使用的一个或多个函数、方法、类、对象、协议、数据结构、格式和/或其它特征。API1820可以规定至少一个调用惯例,该惯例规定AP1-实现组件中的函数如何从AP1-调用组件接收参数及该函数如何向AP1-调用组件返回结果。AP1-调用组件1830 (例如,操作系统、库、设备驱动器、AP1、应用程序、软件或其它模块)通过API1820进行API调用,以访问和使用由API1820规定的AP1-实现组件1810的特征。响应于API调用,AP1-实现组件1810可以通过API1820向AP1-调用组件1830返回值。
[0062]将认识到,AP1-实现组件1810可以包括没有通过API1820规定并且AP1-调用组件1830不可用的附加的函数、方法、类、数据结构和/或其它特征。应当理解,AP1-调用组件1830可以在与AP1-实现组件1810相同的系统上,或者可以位于远端并且经网络利用API1820访问AP1-实现组件1810。虽然图18说明了与API1820交互的单个AP1-调用组件1830,但是应当理解,用与AP1-调用组件1830不同的语言(或相同的语言)编写的其它AP1-调用组件也可以使用API1820。
[0063]AP1-实现组件1810、API1820和AP1-调用组件1830可以存储在机器可读的非临时性存储介质中,这种介质包括用于以机器(例如,计算机或其它数据处理系统)可读的形式存储信息的任何机制。例如,机器可读介质包括磁盘、光盘、随机存取存储器;只读存储器、闪存设备等,而且可以是本地存储介质或通过一个或多个网络耦合到客户端设备的远端设备上的存储介质。
[0064]在图17 (“软件堆栈”)中,一种示例性实施例,应用可以利用几个服务API对服务I或2进行调用并且利用几个OS API对OS进行调用。
[0065]应当指出,服务2有两个API,其中一个(服务2APII)从应用I接收调用并向其返回值,而另一个(服务2API2)从应用2接收调用并向其返回值。服务I (它可以是例如软件库)对OS APIl进行调用并从其接收返回的值,而服务2 (它可以是例如软件库)对OS APIl和OS API2都进行调用并从其接收返回的值。应用2对OS API2进行调用并从其接收返回的值。
[0066]本说明书中对“一种实施例”或“一个实施例”的引用意味着联系该实施例所描述的特定特征、结构或特性包括在本发明的至少一种实施例中。短语“在一种实施例中”在本说明书中各个地方的出现不一定全都指同一个实施例。
[0067]在以上说明书中,已经参考其具体实施例描述了本发明。但是,很显然,在不背离本发明更广泛主旨与范围的情况下,可以进行各种修改与变化。相应地,说明书和附图应当从说明性而不是约束性的意义上来看待。
[0068]API 附录
[0069](包装应用)
[0070]
【权利要求】
1.一种包含可执行指令的机器可读非临时性存储介质,当在数据处理系统上被执行时,所述可执行指令使所述数据处理系统执行一种方法,所述方法包括: 执行第一操作系统(OS); 在所述第一 OS上执行web浏览器; 在所述web浏览器上执行包装应用,所述包装应用为至少第一应用提供生命周期管理; 在所述包装应用上执行所述第一应用; 当所述第一应用被启动以执行时,在所述包装应用和所述第一应用之间传送至少一个调用,及当所述第一应用被终止时,在所述包装应用和所述第一应用之间传送至少一个调用; 当所述第一应用被启动时,在所述web浏览器和所述包装应用之间传送至少一个调用。
2.如权利要求1所述的介质,其中传送至少一个调用包括发布、发起、启用或接收调用或消息中的一个,并且其中所述第一 OS是抢先式多任务OS,并且其中所述包装应用的内存空间是由所述web浏览器的内存空间定义的。
3.如权利要求2所述的介质,其中所述web浏览器是处理以标记语言编码的网页的软件应用程序,所述网页由所述web浏览器通过一个或多个URL (统一资源定位符)检索出,并且其中所述web浏览器被配置·为利用所述web浏览器中的布局引擎把所述网页的标记语言处理成所述网页的DOM (文档对象模型),并且被配置为处理与所述网页关联的层叠样式表以呈现所述网页。
4.如权利要求2所述的介质,其中一组应用在所述包装应用中执行并且该组应用包括其是电子邮件应用的第一应用、其是日历应用的第二应用和其是联系人或地址本应用的第三应用,并且其中当在最前面时,该组应用中的每个应用被呈现在所述web浏览器的同一单个窗口中。
5.如权利要求4所述的介质,其中所述包装应用对于该组应用作为操作系统进行操作,并且该组应用中的每个应用至少部分地用JavaScript编写。
6.如权利要求4所述的介质,其中该组应用中的每个应用都在所述网页的对应iframe中执行,并且通过所述包装应用的动作,用于该组应用中的每个应用的对应iframe被呈现为最前面的应用或者不被呈现为最前面的应用。
7.如权利要求6所述的介质,其中,响应于来自所述web浏览器的调用,所述包装应用为一组图标的显示生成数据,该组图标中的每个图标代表该组应用中的应用,所述调用是通过在所述web浏览器的所述同一单个窗口中选择第一图标所导致的。
8.如权利要求7所述的介质,其中所述第一图标的选择用于在应用之间进行切换并且使该组图标在所述web浏览器的所述同一单个窗口中呈现。
9.如权利要求8所述的介质,其中,在从最前面的应用切换到不在最前面的状态之后,利用保存的上下文和状态,该组应用中的每个应用都保留在执行状态。
10.如权利要求9所述的介质,其中所述上下文包括文本输入焦点的状态和位置及输入的用户数据,并且其中所述web浏览器的同一单个窗口不包括选项卡式窗口,并且其中所述包装应用拥有所述web浏览器的同一单个窗口的URL文本输入域和标题条。
11.如权利要求9所述的介质,其中所述包装应用为该组应用中的每个应用认证用户,并且其中当用户在该组应用中的应用之一中登出时或者在该组应用中的应用之一中访问到期时,所述包装应用让所述用户登出该组应用中的其余应用。
12.如权利要求9所述的介质,其中所述包装应用为该组应用中的每个应用单独地处理错误,并且在该组应用中的其它应用继续执行的同时允许该组应用中的一个应用重启。
13.如权利要求12所述的介质,其中,响应于向设置服务发送正确的用户认证数据,所述包装应用为该组应用中的每个应用接收用于web服务器的地址信息。
14.一种包含要由数据处理系统执行的可执行指令的机器可读非临时性存储介质,所述指令包括: 包装应用,被配置为在web浏览器上运行,所述web浏览器运行在所述数据处理系统的操作系统上; 一组应用,被配置为在所述包装应用上运行,该组应用提供来自一个或多个web服务器的数据,其中所述包装应用为该组应用中的每个应用提供生命周期管理并且提供该组应用中的应用之间的切换。
15.如权利要求14所述的介质,其中,当每个应用被启动时和当所述应用在最前面和不是最前面之间切换时,调用在所述包装应用和所述应用之间传送,并且其中生命周期管理包括该组应用中的每个应用的启动和关闭。
16.如权利要求15所述的介质,其中所述包装应用和该组应用被配置为在同一单个web浏览器窗口中执行,并且当不处于最前面的状态时,该组应用中的每个应用保持执行,并且其中,响应于来自所述web浏览器的调用,所述包装应用呈现一组图标,每个图标代表该组应用中的应用,所述调用是在所述同一单个web浏览器窗口中选择第一图标所导致的,并且所述第一图标用于在该组应用中的应用之间进行切换。`
17.一种机器实现的方法,包括: 执行第一操作系统(OS); 在所述第一 OS上执行web浏览器; 在所述web浏览器上执行包装应用,所述包装应用为至少第一应用提供生命周期管理; 在所述包装应用上执行所述第一应用; 当所述第一应用被启动以执行时,在所述包装应用和所述第一应用之间传送至少一个调用,及当所述第一应用被终止时,在所述包装应用和所述第一应用之间传送至少一个调用; 当所述第一应用被启动时,在所述web浏览器和所述包装应用之间传送至少一个调用,其中传送至少一个调用包括发布、发起、启用或接收调用或消息中的一个,并且其中所述第一OS是抢先式多任务OS,并且其中所述包装应用的内存空间是由所述web浏览器的内存空间定义的;并且其中所述web浏览器是处理以标记语言编码的网页的软件应用程序,所述网页由所述web浏览器通过一个或多个URL (统一资源定位符)检索出,并且其中所述web浏览器被配置为利用所述web浏览器中的布局引擎把所述网页的标记语言处理成所述网页的DOM (文档对象模型),并且被配置为处理与所述网页关联的层叠样式表以呈现所述网页。
18.如权利要求17所述的方法,其中一组应用在所述包装应用中执行并且该组应用包括其是电子邮件应用的第一应用、其是日历应用的第二应用和其是联系人或地址本应用的第三应用,并且其中当在最前面时,该组应用中的每个应用被呈现在所述web浏览器的同一单个窗口中,并且其中所述包装应用对于该组应用作为操作系统进行操作,并且该组应用中的每个应用至少部分地用JavaScript编写。
19.一种数据处理系统,包括: 用于执行第一操作系统(OS)的装置; 用于在所述第一 OS上执行web浏览器的装置; 用于在所述web浏览器上执行包装应用的装置,所述包装应用为至少第一应用提供生命周期管理; 用于在所述包装应用上执行所述第一应用的装置; 用于当所述第一应用被启动以执行时,在所述包装应用和所述第一应用之间传送至少一个调用,及当所述第一应用被终止时,在所述包装应用和所述第一应用之间传送至少一个调用的装置; 用于当所述第一应用被启动时,在所述web浏览器和所述包装应用之间传送至少一个调用的装置。
20.如权利要求19所述的数据处理系统,其中传送至少一个调用包括发布、发起、启用或接收调用或消息中的一 个,并且其中所述第一 OS是抢先式多任务OS,并且其中所述包装应用的内存空间是由所述web浏览器的内存空间定义的,并且其中所述web浏览器是处理以标记语言编码的网页的软件应用程序,所述网页由所述web浏览器通过一个或多个URL(统一资源定位符)检索出,并且其中所述web浏览器被配置为利用所述web浏览器中的布局引擎把所述网页的标记语言处理成所述网页的DOM (文档对象模型),并且被配置为处理与所述网页关联的层叠样式表以呈现所述网页。
【文档编号】G06F9/54GK103718161SQ201280037106
【公开日】2014年4月9日 申请日期:2012年7月6日 优先权日:2011年7月26日
【发明者】R·卡尔沃, O·瓦伊金斯塔德, W·凯克斯, C·E·埃德沃, J·C·平佐, M·弗罗斯特, J·W·常, M·麦克拉克伦, E·科罗 申请人:苹果公司