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

技术编号:31310065 阅读:23 留言:0更新日期:2021-12-12 21:38
本公开涉及桥接模块系统和非模块系统。生成桥接模块,以桥接模块系统中的标准模块与非模块系统中的非模块代码。桥接模块包括与命名空间相关联的显式依赖性,诸如对应于非模块代码的依赖性路径。桥接模块至少向标准模块暴露非模块代码的包。对使用标准模块、桥接模块和非模块代码的代码基执行操作。非模块代码的代码基执行操作。非模块代码的代码基执行操作。

【技术实现步骤摘要】
桥接模块系统和非模块系统
[0001]本申请是申请日为2016年4月28日、申请号为201680001886.9、名称为“桥接模块系统和非模块系统”的专利技术专利申请的分案申请。


[0002]本公开内容涉及模块系统和非模块系统。具体而言,本公开内容涉及用于桥接模块系统和非模块系统的技术。

技术介绍

[0003]用于开发和维护软件的计算平台一般而言依赖两种类型的系统之一:模块系统和非模块系统。
[0004]非模块系统是指其中不同代码片之间的依赖性未严格声明或限制的系统。行业定义的术语“JAR hell”是指Java归档(JAR)文件在非模块系统中的示例使用,这导致例如对于类加载过程的问题。
[0005]模块系统包括标准模块的集合并且定义标准模块的集合如何一起工作。标准模块的集合中的每个特定标准模块可以显式地定义对其它标准模块(或者其内容)的依赖性。但是,标准模块通常在显式地依赖任何非模块代码方面受限制。
[0006]图1A示出了具有模块环境102的部件和非模块环境130的部件的系统100。非模块环境130包括非模块代码132

146。不同的非模块代码之间的依赖性不需要显式地声明。因而,当第一非模块代码依赖于第二非模块代码时,软件开发环境必须在与所有代码相关联的文件集合的所有文件中搜索第二非模块代码。不同的非模块代码之间的依赖性(可能没有显式声明)在图1A中利用箭头示出。例如,非模块代码132对非模块代码140的依赖性利用在非模块代码132开始并在非模块代码140结束的箭头示出。此外,非模块代码140对非模块代码142的依赖性利用在非模块代码140开始并分别在非模块代码142和非模块代码144结束的两个箭头示出。
[0007]模块环境102包括标准模块(例如,标准模块104

112)的集合。诸如模块环境102的模块环境中不同标准模块之间的依赖性被模块显式声明。显式声明的依赖性在本文可以被称为“显式依赖性”。模块环境102中不同标准模块(或者其内容)之间的显式依赖性也利用箭头示出。例如,标准模块104对标准模块108的显式依赖性利用在标准模块104开始并在标准模块108结束的箭头示出。另外,标准模块108对标准模块110的显式依赖性利用在标准模块108开始并在标准模块110结束的箭头示出。
[0008]如图1A中所示,在模块环境102和非模块环境130之间存在分区。具体而言,标准模块不能显式地依赖于非模块代码。例如,标准模块110不能显式地依赖于非模块代码132或非模块代码134。因此,包括标准模块的模块环境不能建立在包括非模块代码的非模块环境之上。
[0009]本节中描述的做法是可以寻求的方法,但不一定是先前已经构想或寻求的做法。因此,除非另有说明,否则不应当假定在本节中描述的任何做法仅仅由于它们包括在本节
中而被认为是现有技术。
附图说明
[0010]在附图的图示中通过例子而不是限制示出了各种实施例。应当指出的是,在本公开内容中对“实施例”或“一个实施例”的引用不一定指相同的实施例,并且它们意味着至少一个。在附图中:
[0011]图1A示出了在模块环境中的标准模块和在非模块环境中的非标准模块;
[0012]图1B和1C示出了根据一个或多个实施例的系统;
[0013]图2示出了根据一个或多个实施例用于生成桥接模块的操作集合;
[0014]图3A

3D示出了根据一个或多个实施例的详细例子;及
[0015]图4示出了根据一个或多个实施例的系统。
具体实施方式
[0016]在下面的描述中,为了解释的目的,阐述了众多具体细节,以便提供对本公开内容的透彻理解。一个或多个实施例可以在没有这些具体细节的情况下实践。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些例子中,众所周知的结构和设备参照框图形式来描述,以避免不必要地模糊本专利技术。
[0017]1.一般概述
[0018]2.体系架构概述
[0019]3.开发环境例子
[0020]4.生成用于桥接模块环境和非模块环境的桥接模块
[0021]5.示例实施例
[0022]6.杂项;扩展
[0023]7.硬件概述
[0024]1.一般概述
[0025]在实施例中,生成桥接模块,以桥接模块环境中的标准模块和非模块环境中的非模块代码。来自模块环境的标准模块可以显式依赖于桥接模块,但不能显式依赖于非模块代码。桥接模块可以依赖于非模块代码。例如,桥接模块可以显式地引用对应于非模块代码的命名空间。例如,桥接模块可以显式地依赖于对应于非模块代码的依赖性路径。桥接模块还可以依赖于其它桥接模块以及标准模块。
[0026]在实施例中,生成桥接模块包括模块化非模块环境中的非模块代码。非模块代码的模块化可以响应于一个或多个触发事件而被执行。此外,模块化要求可被用于确定非模块代码是否可以被模块化。
[0027]模块化非模块代码不一定包括对非模块代码本身的任何修改。模块化非模块代码包括生成对非模块代码的描述,以供其它模块使用。例如,模块化非模块代码包括经由模块描述符识别并向模块系统暴露非模块代码的包。包是通过桥接模块暴露给其它桥接模块、标准模块和其它非模块代码的。桥接模块的依赖性在模块描述符中显式地指出,但是,在至少一个实施例中,不暴露给其它部件。模块化代码还可以包括识别非模块代码的依赖性路径并且在对应桥接模块的模块描述符中包括该依赖性路径。
[0028]在实施例中,操作是对至少对应于标准模块、桥接模块和非模块代码的组合集合的非编译或编译代码基执行的。例如,代码基可以被系统编译、验证或执行。
[0029]本说明书中描述和/或权利要求中陈述的一个或多个实施例可能没有包括在一般概述这一节中。
[0030]2.体系架构概述
[0031]图1B和1C示出了根据一个或多个实施例的系统的例子。其它实施例可以包括比系统中所示和/或以下描述的更多或更少的设备和更多或更少的部件。被描述为对应于一个设备的硬件部件、软件部件和/或功能可以代替地对应于另一个设备。单独示出的部件可以被组合成单个部件或者在单个设备上实现。因而,权利要求的范围不应当被认为受本文的具体例子限制。
[0032]系统101示出了与模块环境102和非模块环境130当中一个或二者相关联的部件。系统101中的部件可以依赖于系统101中的其它部件(依赖性限制在下面详细描述)。在例子中,如果第一部件需要由第二部件提供的包或服务,则第一部件依赖于第二部件。
[0033]部件之间的依赖性可以或可以不显式指出。如本文所提到的,对特定部件的显式依赖性包括其它部件的声明和/或命名空间。命名空间将资源的名称(例如,Java类)映射到资源定义(例如,类定义)。在一个例子中,命名空间被实现为依赖性路径。依赖性路径可以包括实体的有序集合作为参数。每个实体可以包含并透明地暴露命名资源本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括指令,所述指令当被一个或多个硬件处理器执行时,使得以下操作被执行,包括:识别代码基,所述代码基包括:第一非模块代码,第一非模块代码不与任何模块描述符相关联;第二非模块代码,第二非模块代码不与任何模块描述符相关联;第一模块,第一模块与第一模块描述符相关联,其中第一模块描述符在包括基于与第二非模块代码对应的命名空间的显式依赖性方面受限制;生成用于第一非模块代码的第二模块;及其中生成操作包括:定义第二模块描述符,所述第二模块描述符(a)对应于第二模块并且(b)包括基于与第二非模块代码对应的所述命名空间的所述显式依赖性;其中定义第二模块以包括所述显式依赖性是响应于确定第一非模块代码与所述命名空间相关联的,或者其中定义第二模块以包括所述显式依赖性是独立于第一非模块代码的任何内容或依赖性的。2.如权利要求1所述的介质,其中所述命名空间包括与第二非模块代码对应的依赖性路径。3.如权利要求1所述的介质,其中,在第二模块描述符中,所述显式依赖性显式地参考所述命名空间或者显式地参考与所述命名空间对应的第三非模块代码。4.如权利要求1所述的介质,其中第二非模块代码不被第一非模块代码使用或要求,并且其中,在第二模块描述符中,所述命名空间允许第二模块访问第二非模块代码,即使第二非模块代码不被第一非模块代码使用或要求。5.如权利要求1所述的介质,其中对应于第二模块的第二模块描述符由系统响应于所述系统检测到触发事件的发生而定义。6.如权利要求1所述的介质,其中所述操作还包括:确定第一非模块代码不对应于所述代码基中的所述多个模块中的任何一个;及其中生成用于第一非模块代码的第二模块是至少响应于确定第一非模块代码不对应于所述代码基中的所述多个模块中的任何一个的。7.如权利要求1所述的介质,其中所述操作还包括:接收以下至少一个:(a)用于执行模块操作的第一命令,该命令包括第一非模块代码作为参数;(b)包括MODULEPATH关键字的第二命令,该第二命令参考用于第一非模块代码的标识符作为参数,或者(c)要求第一非模块代码的模块化的第三命令;及其中生成用于第一非模块代码的第二模块是响应于接收第一命令、第二命令或第三命令当中的至少一个的。8.如权利要求1所述的介质,其中所述代码基还包括(a)在显式地依赖于与非模块代码的一个或多个集合对应的所述命名空间方面受限制的标准模块的第一集合,和(b)在显式地依赖于与非模块代码的所述一个或多个集合对应的所述命名空间方面不受限制的桥接模块的第二集合。9.如权利要求1所述的介质,其中第二模块是桥接模块,并且其中所述操作还包括:在生成所述桥接模块之后:利用对所述桥接模块的显式依赖性成功地证实特定的标准模块;及
其中该特定的标准模块在包括对所述命名空间的显式依赖性方面受限制。10.如权利要求1所述的介质,其中所述操作还包括:基于以下一个或多个来定义包括特定显式依赖性的第二模块描述符:多个模块中允许由第二模块的显式依赖性的每个模块;所述多个模块中对执行由标准模块组成的应用所必需的每个模块;所述多个模块中每个能够观察到的标准模块;由开发者列举的每个标准模块;及除第二模块之外的每个桥接模块。11.如权利要求1所述的介质,其中所述操作还包括:定义第二模块描述符,以允许第一非模块代码中的每个包被任何标准模块、任何桥接模块和任何非模块代码访问。12.如权利要求1所述的介质,其中生成用于第一非模块代码的第二模块至少响应于:确定第一非模块代码不包含任何重复的包;确定第一非模块代码不依赖于多个模块中受限制的模块集合中任何一个;及确定第一非模块代码不查找在所述多个模块中的其它模块中的类或资源。13.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括指令,所述指令当被一个或多个硬件处理器执行时,使得以下操作被执行,包括:识别代码基,所述代码基包括:第一非模块代码,第一非模块代码不与任何模块描述符相关联;第二非模块代码,第二非模块代码不与任何模块描述符相关联;第一模块,第一模块与第一模块描述符相关联,其中第一模块描述符在包括基于与第二非模块代码对应的命名空间的显式依赖性方面受限制;生成用于第一非模块代码的第二模块;及其中生成操作包括:定义第二模块...

【专利技术属性】
技术研发人员:A
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:

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

1