桥接模块系统和非模块系统技术方案

技术编号:15342846 阅读:123 留言:0更新日期:2017-05-17 00:16
生成桥接模块,以桥接模块系统中的标准模块与非模块系统中的非模块代码。桥接模块包括与命名空间相关联的显式依赖性,诸如对应于非模块代码的依赖性路径。桥接模块至少向标准模块暴露非模块代码的包。对使用标准模块、桥接模块和非模块代码的代码基执行操作。

【技术实现步骤摘要】
【国外来华专利技术】桥接模块系统和非模块系统
本公开内容涉及模块系统和非模块系统。具体而言,本公开内容涉及用于桥接模块系统和非模块系统的技术。
技术介绍
用于开发和维护软件的计算平台一般而言依赖两种类型的系统之一:模块系统和非模块系统。非模块系统是指其中不同代码片之间的依赖性未严格声明或限制的系统。行业定义的术语“JARhell”是指Java归档(JAR)文件在非模块系统中的示例使用,这导致例如对于类加载过程的问题。模块系统包括标准模块的集合并且定义标准模块的集合如何一起工作。标准模块的集合中的每个特定标准模块可以显式地定义对其它标准模块(或者其内容)的依赖性。但是,标准模块通常在显式地依赖任何非模块代码方面受限制。图1A示出了具有模块环境102的部件和非模块环境130的部件的系统100。非模块环境130包括非模块代码132-146。不同的非模块代码之间的依赖性不需要显式地声明。因而,当第一非模块代码依赖于第二非模块代码时,软件开发环境必须在与所有代码相关联的文件集合的所有文件中搜索第二非模块代码。不同的非模块代码之间的依赖性(可能没有显式声明)在图1A中利用箭头示出。例如,非模块代码132对非模块代码140的依赖性利用在非模块代码132开始并在非模块代码140结束的箭头示出。此外,非模块代码140对非模块代码142的依赖性利用在非模块代码140开始并分别在非模块代码142和非模块代码144结束的两个箭头示出。模块环境102包括标准模块(例如,标准模块104-112)的集合。诸如模块环境102的模块环境中不同标准模块之间的依赖性被模块显式声明。显式声明的依赖性在本文可以被称为“显式依赖性”。模块环境102中不同标准模块(或者其内容)之间的显式依赖性也利用箭头示出。例如,标准模块104对标准模块108的显式依赖性利用在标准模块104开始并在标准模块108结束的箭头示出。另外,标准模块108对标准模块110的显式依赖性利用在标准模块108开始并在标准模块110结束的箭头示出。如图1A中所示,在模块环境102和非模块环境130之间存在分区。具体而言,标准模块不能显式地依赖于非模块代码。例如,标准模块110不能显式地依赖于非模块代码132或非模块代码134。因此,包括标准模块的模块环境不能建立在包括非模块代码的非模块环境之上。本节中描述的做法是可以寻求的方法,但不一定是先前已经构想或寻求的做法。因此,除非另有说明,否则不应当假定在本节中描述的任何做法仅仅由于它们包括在本节中而被认为是现有技术。附图说明在附图的图示中通过例子而不是限制示出了各种实施例。应当指出的是,在本公开内容中对“实施例”或“一个实施例”的引用不一定指相同的实施例,并且它们意味着至少一个。在附图中:图1A示出了在模块环境中的标准模块和在非模块环境中的非标准模块;图1B和1C示出了根据一个或多个实施例的系统;图2示出了根据一个或多个实施例用于生成桥接模块的操作集合;图3A-3D示出了根据一个或多个实施例的详细例子;及图4示出了根据一个或多个实施例的系统。具体实施方式在下面的描述中,为了解释的目的,阐述了众多具体细节,以便提供对本公开内容的透彻理解。一个或多个实施例可以在没有这些具体细节的情况下实践。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些例子中,众所周知的结构和设备参照框图形式来描述,以避免不必要地模糊本专利技术。1.一般概述2.体系架构概述3.开发环境例子4.生成用于桥接模块环境和非模块环境的桥接模块5.示例实施例6.杂项;扩展7.硬件概述1.一般概述在实施例中,生成桥接模块,以桥接模块环境中的标准模块和非模块环境中的非模块代码。来自模块环境的标准模块可以显式依赖于桥接模块,但不能显式依赖于非模块代码。桥接模块可以依赖于非模块代码。例如,桥接模块可以显式地引用对应于非模块代码的命名空间。例如,桥接模块可以显式地依赖于对应于非模块代码的依赖性路径。桥接模块还可以依赖于其它桥接模块以及标准模块。在实施例中,生成桥接模块包括模块化非模块环境中的非模块代码。非模块代码的模块化可以响应于一个或多个触发事件而被执行。此外,模块化要求可被用于确定非模块代码是否可以被模块化。模块化非模块代码不一定包括对非模块代码本身的任何修改。模块化非模块代码包括生成对非模块代码的描述,以供其它模块使用。例如,模块化非模块代码包括经由模块描述符识别并向模块系统暴露非模块代码的包。包是通过桥接模块暴露给其它桥接模块、标准模块和其它非模块代码的。桥接模块的依赖性在模块描述符中显式地指出,但是,在至少一个实施例中,不暴露给其它部件。模块化代码还可以包括识别非模块代码的依赖性路径并且在对应桥接模块的模块描述符中包括该依赖性路径。在实施例中,操作是对至少对应于标准模块、桥接模块和非模块代码的组合集合的非编译或编译代码基执行的。例如,代码基可以被系统编译、验证或执行。本说明书中描述和/或权利要求中陈述的一个或多个实施例可能没有包括在一般概述这一节中。2.体系架构概述图1B和1C示出了根据一个或多个实施例的系统的例子。其它实施例可以包括比系统中所示和/或以下描述的更多或更少的设备和更多或更少的部件。被描述为对应于一个设备的硬件部件、软件部件和/或功能可以代替地对应于另一个设备。单独示出的部件可以被组合成单个部件或者在单个设备上实现。因而,权利要求的范围不应当被认为受本文的具体例子限制。系统101示出了与模块环境102和非模块环境130当中一个或二者相关联的部件。系统101中的部件可以依赖于系统101中的其它部件(依赖性限制在下面详细描述)。在例子中,如果第一部件需要由第二部件提供的包或服务,则第一部件依赖于第二部件。部件之间的依赖性可以或可以不显式指出。如本文所提到的,对特定部件的显式依赖性包括其它部件的声明和/或命名空间。命名空间将资源的名称(例如,Java类)映射到资源定义(例如,类定义)。在一个例子中,命名空间被实现为依赖性路径。依赖性路径可以包括实体的有序集合作为参数。每个实体可以包含并透明地暴露命名资源定义(例如,Java类定义)的集合。在另一个例子中,命名空间被实现为类加载器。类加载器是实体,包含并透明地暴露命名资源定义(例如,Java类定义)的集合。本文提到依赖性路径的实施例和例子可以同等地适用于任何其它命名空间,例如类加载器。在实施例中,依赖性路径识别可以但并非必须被依赖的非模块代码。依赖性路径可以在软件开发环境中被存储为环境变量或者存储在文件(例如,清单文件)中。在实施例中,依赖性路径对应于命名空间。命名空间可以包括对应于非模块代码的相应集合的标识符集合。标识符集合可以根据策略排序。在例子中,命名空间识别Java归档(JAR)文件的集合。在Java模块系统中,关键词“requires”被用来声明显式依赖性。关键词“requires”可以和识别另一部件或识别依赖性路径(例如,CLASSPATH)的参数一起使用。对依赖性路径的显式依赖性允许依赖于与该依赖性路径相关联的参数。在例子中,第一部件直接地或者经由依赖性路径依赖于第二部件。在图1B中为了示出第一部件依赖于第二部件,绘出从第一部件到第二部件的箭头。箭头头部指向直接地或者经由依赖性路径被第一部件依赖的本文档来自技高网...
桥接模块系统和非模块系统

【技术保护点】
一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括指令,所述指令当被一个或多个硬件处理器执行时,使得以下操作被执行,包括:识别第一非模块代码,其中第一非模块代码不对应于多个模块中的任何一个;生成用于第一非模块代码的第一模块;及其中生成操作包括:定义(a)对应于第一模块并且(b)包括基于与非模块代码的一个或多个集合对应的命名空间的显式依赖性的模块描述符。

【技术特征摘要】
【国外来华专利技术】2015.07.24 US 14/808,689;2015.07.24 US 14/808,5901.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括指令,所述指令当被一个或多个硬件处理器执行时,使得以下操作被执行,包括:识别第一非模块代码,其中第一非模块代码不对应于多个模块中的任何一个;生成用于第一非模块代码的第一模块;及其中生成操作包括:定义(a)对应于第一模块并且(b)包括基于与非模块代码的一个或多个集合对应的命名空间的显式依赖性的模块描述符。2.如权利要求1所述的介质,其中所述命名空间包括与非模块代码的所述一个或多个集合对应的依赖性路径。3.如权利要求1所述的介质,其中所述操作还包括:在生成第一模块之前,确定第一非模块代码与所述命名空间相关联,其中定义包括基于所述命名空间的显式依赖性的模块描述符是响应于确定第一非模块代码与所述命名空间相关联的;或者独立于第一非模块代码的任何内容或依赖性,确定要包括在模块描述符中的显式依赖性。4.如权利要求1所述的介质,其中,在模块描述符中,显式依赖性显式地参考所述命名空间或者显式地参考从与所述命名空间对应的非模块代码的所述一个或多个集合中选择的第二非模块代码。5.如权利要求1所述的介质,其中与所述命名空间对应的非模块代码的所述一个或多个集合包括不被第一非模块代码使用或要求的第二非模块代码,并且其中,在模块描述符中,所述命名空间允许第一模块访问第二非模块代码,即使第二非模块代码不被第一非模块代码使用或要求。6.如权利要求1所述的介质,其中对应于第一模块的模块描述符由系统响应于所述系统检测到触发事件的发生而定义。7.如权利要求1所述的介质,其中所述操作还包括:确定第一非模块代码不对应于所述多个模块中的任何一个;及其中生成用于第一非模块代码的第一模块是响应于至少确定第一非模块代码不对应于所述多个模块中的任何一个的。8.如权利要求1所述的介质,其中所述操作还包括:接收...

【专利技术属性】
技术研发人员:A·R·巴克利M·B·莱茵霍尔德J·J·吉博恩斯A·E·贝特曼M·L·钟
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1