用于移动应用的系统和方法

文档序号:9602476阅读:483来源:国知局
用于移动应用的系统和方法
【专利说明】
[0001] 对相关申请的交叉引用
[0002] 本申请涉及于2013年4月26日提交的美国临时申请序列No. 61/816, 461、于2013 年8月28日提交的美国临时申请序列No. 61/871,075,其中每一个都通过引用整体被并入 本文并且要求其优先权。
技术领域
[0003] 所公开的主题涉及用于提高移动应用的性能的技术。
【背景技术】
[0004] 某些移动应用可以用诸如Java或.NET的语言来编写。开发者可以利用诸如Java 或.NET的语言来编写应用、将应用编译为字节代码,并且利用兼容的虚拟机(VM)在许多平 台上运行该应用。诸如Java或.NET的语言允许开发者避免某些低级问题,诸如存储器管 理。此外,诸如Java或.NET的语言还可以提供可移植性和安全性特征,这些特征例如使浏 览器能够运行不受信任的小程序。
[0005] 但是,诸如Java或.NET的语言还会需要比本机代码所需的更高的开销。例如,与 本机执行相比,字节代码解释会涉及超过10倍的速度减小。虽然诸如即时编译(JIT)的现 有技术可以通过将字节代码编译为本机代码格式来提高性能,但是JIT会花时间来执行并 且减小应用响应时间。此外,由于移动环境中的CRJ和电池约束以及更快地对用户作出响 应的需求,诸如JIT的某些现有技术会具有减少的功能性,诸如全局优化。此外,提前编译 (Α0Τ)可以代替JIT而被使用。由于缺乏运行时信息,由Α0Τ产生的代码会比原始字节代码 需要更多的文件系统空间。照此,存在提高移动应用的性能的需求。

【发明内容】

[0006] 本文公开了用于提高移动应用的性能的系统和方法。
[0007] 在所公开主题的一方面,公开了用于经网络将应用以被目标设备使用的本机代码 格式提供给目标设备的技术。示例性方法可以包括接收对该应用的请求,该请求包括目标 设备信息。该方法还可以确定该应用是否之前已经被高速缓存,并且如果还没有的话,就将 该应用作为字节代码下载并且利用提前编译器将该字节代码处理成本机代码格式。该方法 还可以经该网络将本机代码格式的该应用提供给目标设备。
[0008] 在一些实施例中,该方法还可以包括接收请求,该请求包括诸如设备类型、操作系 统版本和平台版本的目标设备信息。在一些实施例中,该方法还可以包括,如果该本机代码 格式的应用还未被高速缓存的话,就高速缓存该应用。
[0009] 所公开的主题还提供用于经网络将应用以被目标设备使用的本机代码格式提供 给目标设备的装置。示例性装置可以包括处理器和存储器。该装置还可以包括存储在存储 器中的计算机程序指令,该指令在被处理器执行时使处理器执行某些操作。这些操作可以 包括接收对该应用的请求,其中该请求可以包括目标设备信息。该指令还可以包括确定该 应用是否已经被高速缓存,并且如果该应用还未被高速缓存的话,就将该应用作为字节代 码下载并且利用提前编译器将该字节代码处理成本机代码格式。该指令还可以包括经该网 络将本机代码格式的该应用提供给目标设备。
[0010] 在一些实施例中,处理是由应用开发者服务器执行的。在一些实施例中,处理是由 应用中介(broker)服务器执行的。在其它实施例中,处理是由目标设备执行的。在一些实 施例中,目标设备可以执行字节代码和本机代码当中的至少一种。
【附图说明】
[0011] 图1示出了根据所公开的主题的示例性系统。
[0012] 图2示出了根据所公开的主题、用于经网络将应用以本机代码格式提供给目标设 备的示例性方法。
[0013] 图3示出了根据所公开的主题、用于经网络将应用以本机代码格式提供给目标设 备的备选示例性方法。
[0014] 图4示出了根据所公开的主题的示例性系统体系架构。
[0015] 图5A和图5B示出了根据所公开的主题的示例性解释器。
[0016] 图6示出了根据所公开的主题的示例性解释器的进一步细节。
[0017] 图7示出了根据所公开的主题的示例性翻译器。
【具体实施方式】
[0018] 给出了用于提高移动应用的性能的技术。示例性技术包括接收对应用的请求,其 中该请求可以包括目标设备信息。方法还可以确定,例如,本机代码格式的应用是否之前已 经被高速缓存,并且如果应用还未被高速缓存的话,就将应用作为字节代码下载或者要求 目标设备上传字节代码。该方法还提供利用提前编译器将该字节代码处理成本机代码格 式。该方法还可以经该网络将本机代码格式的应用提供给目标设备。
[0019] 图1示出了根据所公开的主题的示例性系统。参照图1,当用户101想要下载应用 时,她的设备101可以向应用加速器103发送请求。应当理解的是,设备101可以是目标设 备101。请求可以经网络107被发送。请求可包括诸如设备类型和系统版本的信息。
[0020] 应用加速器103可以确定这是否是第一次对给定的环境请求该应用。如果是第一 次,则应用加速器103可以从应用源105下载该应用。可以理解的是,应用源105可以是应 用中介105。所下载的应用可以是字节代码版本。在一种实施例中,预处理后的字节代码 (例如依赖于平台的字节代码)可以从应用中介105或应用源105被接收。然后,应用加 速器103可以将该应用编译为可在用户的设备101中执行的本机代码格式。在一种实施例 中,应用加速器103可以将应用的字节代码的一部分处理成本机代码格式。在另一种实施 例中,应用加速器103可以执行诸如概要分析(profiling)的技术,以确定应用中要转换为 本机代码的部分。在一个例子中,应用的选定部分可以被选择并且用于应用的该选定部分 的字节代码可以被转换为本机代码。在一种实施例中,应用加速器103可以接收例如通用 字节代码或预处理后的字节代码。本机代码可以包括优化后的代码。然后,应用加速器103 可以高速缓存该应用的本机版本。这可以使应用加速器103能够摊销(amortize)编译成 本并且更快地响应来自相同设备类型和操作系统版本的后续请求。应当理解的是,应用加 速器103可以驻留在设备101中或在设备101外面。
[0021 ] 在示例性软件分发模型中,开发者可以在可移除介质中或者通过在线网站装运他 们的软件。在这种模型中,字节代码可以为意欲在许多不同平台上运行的软件提供出色的 可移植性,因为开发者难以跟踪不同的用户设备并且非专业用户难以选择正确的软件版 本。但是,在目前的应用分发模型中,应用源105或应用中介可以确定关于应用的信息,例 如,用户正在从其下载应用的设备101和系统版本。例如,从Android的应用商店(Google Play)下载应用的协议指定设备类型101和Android SDK版本,Google Play使用设备类型 101和Android SDK版本来过滤掉与设备不兼容的应用。
[0022] 在一种实施例中,给定设备和系统配置,应用源105可以随后Α0Τ-编译字节代码 并为特定设备类型将字节代码应用优化成本机代码,同时对开发者和用户二者都保持透 明。在一个例子中,字节代码的可移植性会随着中介管理或者应用源管理的可移植性而消 失。此外,某些移动平台可以在系统级别强化安全性。例如,Android可以为每个被安装的 应用分配不同的用户标识符(UID),从而隔离应用的数据与执行。这会使由字节代码提供的 安全性不那么有吸引力。而且,由于用户已经信任应用源105不向应用添加恶意,因此它们 可以让应用源105代表它们在装运Α0Τ-编译的本机代码之前验证字节代码。
[0023] 在一种实施例中,目标设备101可以加载并执行例如以下二者:(1)从应用源105 下载的字节代码格式(例如通用字节代码格式)和(2)从应用加速器103下载的本机代码 格式。这可以使目标设备101能够选择性地将字节代码应用翻译成本机代码格式。在另一 种示例实施例中,用户可以手动选择要优化哪些应用。在一个例子中,用户应用可以在设备 101上显示被优化的应用并且可以允许用户选择优化其它应用。在另一种示例实施例中,程 序可以被提供,以确定哪些应用可以自动被优化。该决定可以根据不同的标准做出。例如, 标准可以包括但不限于应用使用的频次。标准还可以包括Α0Τ的效率。
[0024] 在一种实施例中,从应用源105中下载的字节代码可以在Α0Τ编译之前被预处理 成依赖于平台的字节代码。预处理字节代码可以包括但不限于预链接、预验证和预优化等 等。通过允许使用诸如链接信息的特定于设备的运行时信息,使用预处理后的字节代码作 为Α0Τ编译的输入可以使编译器能够与JIT编译器一样产生例如高效的本机代码。在一种 实施例中,目标设备101的平台信息可以被用来确定如何预处理字节代码。平台信息可以 包括但不限于,诸如操作系统版本和框架版本以及预先安装的应用的版本等等信息。在一 个例子中,应用加速器103可以使用平台信息在编译之前为目标设备101产生预处理的字 节代码。如果应用加速器103不具有足够的信息来为目标设备101预处理字节代码,则应 用加速器103可以要求目标设备101将目标设备101上预处理后的字节代码上传到应用加 速器103。
[0025] 在一些实施例中,应用分发路径中的机器之一,诸如开发机器或应用中介服务器 105,可以执行处理。在一些实施例中,分发路径之外的机器可以执行处理。在一些实施例 中,处理可以在目标设备101上执行。
[0026] 为了本公开内容的目的,应用加速器103可以包括随机存取存储器(RAM)、诸如直 接存取存储设备(例如,硬盘驱动或软盘驱动)、顺序存取存储设备(例如,带式盘驱动)、 紧凑盘、CD-ROM、DVD、RAM、R0M、电可擦除可编程只读存储器(EE
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1