为应用从中间语言代码生成本机代码的制作方法

文档序号:8460715阅读:330来源:国知局
为应用从中间语言代码生成本机代码的制作方法
【专利说明】
【背景技术】
[0001]各种移动设备还支持这样的应用,其能够以不能够被直接地执行但是当使用及时编译(JIT编译)在移动设备上编译时能够被执行的表示下载。尽管代码的JIT编译已被用来在计算机上运行应用,但是使用JIT编译来运行应用具有局限性,包括当应用运行时编译所需的附加时间以及在编译期间做出的潜在地非最佳的决定。

【发明内容】

[0002]在本文中所描述的其它创新当中,本公开内容呈现了用于通过从中间语言形式的代码生成本机代码来安装、执行和/或更新受管理应用的工具和技术的各种代表性实施例。根据一个示范性技术,计算设备接收由在线提供商针对应用所生成的机器相关中间语言代码(MDIL代码)。计算设备通过生成针对应用的本机映像(包括通过将MDIL代码的一部分与计算设备上的一个或多个库绑定)来将应用安装在计算设备上。并且,本机映像被存储在计算设备上以用于在加载应用以执行时使用。
[0003]根据示范性工具,计算设备从在线提供商接收针对应用的安装包,其中安装包包括机器相关中间语言文件(MDIL文件)的集合。附加地,计算设备的绑定器(binder)被提供MDIL文件的集合中的至少一个文件以及要被绑定到该至少一个文件的一个或多个库。绑定器通过使用一个或多个库来绑定至少一个MDIL文件的MDIL代码而生成针对应用的本机映像。
[0004]在另一示范性技术中,在线提供商从针对应用的初步代码生成MDIL代码。计算机系统通过将应用的初步代码编译成MDIL代码来为应用生成MDIL文件的集合,然后对MDIL文件的集合的相应文件签名以便指示相应文件被信任为来自在线市场。计算机系统生成识别MDIL文件的集合的相应文件的绑定列表,并且还生成针对应用的包括针对该应用的MDIL文件的集合和绑定列表的安装包。计算机系统然后在在线市场提供安装包以用于下载。
[0005]当它接收到安装包时,计算设备接收MDIL代码并且生成针对应用的本机映像以便将应用安装在计算设备上。附加地,计算设备的运行时引擎和/或由所安装的应用使用的一个或多个库能够在对计算设备的更新期间在计算设备上被更新,并且作为响应应用被自动地更新。应用通过使用被更新的一个或多个库来生成针对应用的更新的本机映像而被更新。经更新的本机映像被生成,使得它可使用计算设备上的经更新的运行时引擎运行。在经更新的本机映像被生成之后,应用通过加载经更新的本机映像而不是先前生成的本机映像而被运行。
[0006]本
【发明内容】
被提供来以简化的形式引入在下面被进一步描述的构思的选择。本
【发明内容】
不旨在识别所要求保护的主题的关键特征或必要特征,它也不旨在被用来限制所要求保护的主题的范围。技术的前面的和其它的目标、特征以及优点从参考附图进行的以下具体描述将变得更明显。
【附图说明】
[0007]图1是图示了示范性在线提供商/市场以及示范性计算设备的图,所述示范性计算设备加载通过绑定机器相关中间语言代码(MDIL代码)所安装的应用的本机映像。
[0008]图2是绑定应用的MDIL代码以便将应用安装在计算设备上的示范性方法的流程图。
[0009]图3是图示了示范性在线提供商/市场以及示范性计算设备的图,所述示范性计算设备能够通过从由在线提供商/市场(或其它在线提供商/市场)提供和生成的中间语言形式的代码生成一个或多个本机映像来安装一个或多个受管理应用。
[0010]图4是用于使用MDIL形式的代码通过本机代码生成来安装和更新应用的示范性方法的流程图。
[0011]图5是生成针对应用的安装包的示范性方法的流程图,其中安装包能够被提供以用于下载。
[0012]图6是能够为一个或多个安装的应用生成一个或多个更新的本机映像的计算设备的图。
[0013]图7是用于通过从MDIL形式的代码生成针对应用的本机映像来更新应用的示范性方法的流程图。
[0014]图8是描绘了所公开的实施例中的至少一些能够采用其被实施的示范性移动设备的不意图。
[0015]图9是图示了针对所公开的实施例中的至少一些的适合的实施环境的一般性例子的示意图。
[0016]图10是图示了针对所公开的实施例中的至少一些的适合的计算环境的一般性例子的示意图。
【具体实施方式】
[0017]本公开内容呈现了用于通过从中间语言形式的代码生成本机代码来安装、执行和/或更新受管理应用的工具和技术的各种代表性实施例。例如,计算设备接收由在线提供商针对应用所生成的MDIL代码。计算设备通过生成针对应用的本机映像来安装应用。作为本机映像的生成的一部分,计算设备将MDIL代码的一部分与计算设备上的一个或多个库绑定。计算设备存储本机映像以用于在加载应用以执行时使用。以这种方式,应用的性能能够受益于该应用的至少一部分的先前的离线编译(以便产生适于设备的MDIL代码)。同时,当存在对由应用使用的库和/或针对应用的MDIL代码的改变时这个方法能够便于应用的更新。
[0018]取决于实施方案,本文中所描述的技术和工具的各种特征能够被相结合地或单独地使用。本文中所描述的技术和工具的不同特征影响处理的不同阶段,包括摄取、安装、执行、应用更新以及设备更新。术语摄取一般地指代开发者将应用上传到在线提供商的过程,所述在线提供商处理应用以用于在一个或多个类型的计算设备上的高效执行,验证应用,并且使应用可用于下载。术语安装一般地指代适配应用以便在特定计算设备上运行的过程,所述特定计算设备将应用转换为更适合于在设备上迅速且安全执行的形式(例如,在绑定期间通过解析(resolve)对库和其它资源的引用来将MDIL代码转换为本机指令、存储能够被加载以用于执行的本机映像、将应用标记为可信等)。在执行期间,针对应用的可信本机映像能够被迅速地加载并且运行。术语应用更新一般地指代应用被更新(例如,针对应用的MDIL代码)的过程,其能够牵涉应用在设备上的重新安装。术语计算设备更新一般地指代跟随在运行时引擎之后由应用所引用的库或其它资源已被更新的过程,其典型地牵涉重新绑定取决于已改变的库或其它资源的应用。
[0019]用于通过从MDIL形式的代码生成本机代码来安装和加载应用的示范性系统
图1是图示了示范性在线提供商/市场以及示范性计算设备100的图,所述示范性计算设备加载通过绑定MDIL代码120所安装的应用的本机映像110。在图1中,针对应用的初步代码130被在线提供商140接收。例如,初步代码130可以是作为源代码或诸如微软中间语言(MSIL)这样的中间语言形式的代码的针对应用的代码。在135处,初步代码被提供给编译器150,所述编译器150将初步代码130编译成针对应用的MDIL代码120。初步代码130可以是MDIL代码120之外的针对应用的代码的更高级别表示。例如,初步代码130采用在比MDIL代码120更高的级别下的中间语言(IL),所述MDIL代码120是在更接近于机器代码的级别下。MDIL代码120可以是机器相关的,使得它包括基于处理器指令集的本机代码。处理器指令集可以是针对ARM处理器、x86处理器或其它处理器的指令集。MDIL代码120还能够包括具有符号引用的未解析的伪指令,所述符号引用能够被解析以便通过绑定来生成本机代码。
[0020]针对应用的MDIL代码120在计算设备100处被接收。作为应用的安装的一部分,MDIL代码120被提供给绑定器160,所述绑定器160将MDIL代码120绑定到设备上的一个或多个库170。一个或多个库170可以是针对类、类型等的代码库和/或框架库。通过在计算设备100上绑定MDIL代码120,绑定器160生成应用的本机映像110。本机映像110包括针对应用的本机代码并且被存储在设备处。在180处,本机映像被加载来执行应用。
[0021]用于绑定MDIL代码以便将应用安装在计算设备上的示范性方法
图2是绑定应用的MDIL代码以便将应用安装在计算设备上的示范性方法200的流程图。在各种实施方案中,图2的所图示的方法块可以被合并、划分成子块或者省略。
[0022]在图2中,在210处计算设备从在线提供商接收针对应用的MDIL代码。例如,计算设备能够接收包括针对应用的代码的一个或多个文件,其中代码采用为机器相关的IL的形式,诸如如美国专利申请公开N0.: US 2011/0258615中所描述的机器相关中间语言的形式的或另一机器相关中间语言的形式的代码。因为MDIL代码在计算设备处从在线提供商被接收,所以MDIL代码可以是从通过在线提供商或在云中别处的编译生成的。例如,在线提供商编译针对应用的初步代码以便生成针对应用的MDIL代码。
[0023]在一些实施方案中,针对应用的安装包被接收并且该安装包包括针对应用的MDIL代码。针对应用的安装包能够包括诸如针对应用的资源文件这样的针对应用的其它信息。针对应用的MDIL代码能够被存储在计算设备上以用于应用的安装并且用于应用的后续更新。
[0024]在220处,应用通过生成应用的本机映像(这包括绑定应用的MDIL代码)而被安装在计算设备上。例如,绑定器能够将MDIL代码绑定到在计算设备上可用的一个或多个库以便生成针对应用的可执行的本机映像。应用可以是使用诸如.NET框架的公共语言运行时这样的运行时或执行引擎或使用其它运行时引擎执行的受管理应用。运行时引擎和/或执行引擎可以是应用最终在其上运行的软件层。在一些实施方案中,受管理应用是使用包括一个或多个共享库和一个或多个受管理代码运行时环境的框架来执行的应用。例如,库是在应用当中被共享的基类库。在一些实施方案中,计算设备上的库可以是本机和/或机器代码中的库的映像,其能够被加载到存储器中以用于由也被加载到存储器中的受管理应用使用。在一些实施方案中,所生成的本机映像能够由绑定器生成,使得本机映像可由被用来在计算设备上运行应用的运行时引擎或执行引擎运行。例如,绑定器能够在绑定期间使用和/或引用针对应用的运行时引擎,以便绑定适于使用运行时引擎执行。
[0025]在一些实施方案中,绑定器的绑定解析MDIL代码并且生成针对应用的本机代码,其被包括在针对应用的本机映像中。本机代码可以是可在特定处理器上执行并且使用来自处理器指令集的指令的机器代码。处理器指令集可以是针对ARM处理器、x86处理器或其它处理器的指令集。在一些实施方案中,在生成本机映像时,对于针对应用接收到的文件的集合中的每个MDIL文件,相应的MDIL文件以及将被绑定到文件的MDIL代码的一个或
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1