JAVA语言虚拟编译实现方法、系统及装置制造方法及图纸

技术编号:25801943 阅读:26 留言:0更新日期:2020-09-29 18:35
本发明专利技术公开了一种JAVA语言虚拟编译实现方法、系统及装置,所述方法包括:将一般java类内容转变为虚拟类文件;进行java类和虚拟类文件的装载。采用本发明专利技术实施例,在不考虑java编程语言运行时刻的源代码的特定编译领域,通过精简引用类文件中的具体内容实现,来提升编译效率,减少引用类文件体积从而降低编译环境的性能负担、存储负担及传输负担。

【技术实现步骤摘要】
JAVA语言虚拟编译实现方法、系统及装置
本专利技术涉及计算机
,尤其是涉及一种JAVA语言虚拟编译实现方法、系统及装置。
技术介绍
java语言作为一种强类型的编译语言,在每个项目的编译过程中,必须将源代码内的引用类型所对应的实际类文件(.class),进行加载和声明检查才能完成编译工作。而作为已通过java编译的引用类(class),是必须在项目环境下,以文件形式真实存在,才能够被编译器进行编译装载,及下一步加载到虚拟机运行的。随着源代码不同编译场景需求的日益增强,及相关技术的普及,编译作为处理源代码的一种手段,已不局限在生成最终执行程序的一般应用流程中;源代码安全检查、源代码规范检查及源代码成分分析等,作为编译需求的拓展场景,正处处体现着编译技术作为构建特定产品的功能独立性。因此,如何提升编译效率,减少引用类文件体积从而降低编译环境的性能负担、存储负担及传输负担是目前亟须解决的技术问题。
技术实现思路
本专利技术的目的在于提供一种JAVA语言虚拟编译实现方法、系统及装置,旨在解决现有技术中的上述问题。本专利技术提供一种JAVA语言虚拟编译实现方法,包括:将一般java类内容转变为虚拟类文件;进行java类和虚拟类文件的装载。本专利技术提供一种JAVA语言虚拟编译实现系统,包括:转换模块,用于将一般java类内容转变为虚拟类文件;装载模块,用于进行java类和虚拟类文件的装载。本专利技术实施例还提供一种JAVA语言虚拟编译实现装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述JAVA语言虚拟编译实现方法的步骤。本专利技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现上述JAVA语言虚拟编译实现方法的步骤。采用本专利技术实施例,在不考虑java编程语言运行时刻的源代码的特定编译领域,通过精简引用类文件中的具体内容实现,来提升编译效率,减少引用类文件体积从而降低编译环境的性能负担、存储负担及传输负担。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例的JAVA语言虚拟编译实现方法的流程图;图2是本专利技术实施例的将一般java类内容转变为虚拟类文件的流程图;图3是本专利技术实施例的进行java类和虚拟类文件的装载的流程图;图4是本专利技术实施例的JAVA语言虚拟编译实现系统的示意图;图5是本专利技术实施例的JAVA语言虚拟编译实现装置的示意图。具体实施方式下面将结合实施例对本专利技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“坚直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本专利技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。此外,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。方法实施例java编程语言的类文件(.class),在申请人实现本专利技术的过程中,认为主要有两部分内容构成:1、声明部分包含本类及内外部类信息描述、类属性声明和类方法声明等,用于支持源代码编译过程中,对引用本类声明的内容进行类型检查。2、类中具体逻辑内容实现,包括类中静态逻辑块、属性赋值表达式、方法具体内容实现等。经过对编译技术研究发现,编译过程主要分为三个阶段,即:词法分析、语法分析和语义分析。词法、语法分析基本围绕源代码来进行,目标是将源代码生成树状的语法数据结构;语义分析在语法数据结构基础上,通过引用类中的声明信息,将语法上引用内容进行类型明确。如代码中非基础类型的类型使用,需要明确来源,外部引用方法的使用则需要确定其声明详情。而语义分析过程所需的引用文件——类文件中,仅仅使用了类中声明部分,而具体的逻辑实现内容则在编译中不需要被引用,是作为软件项目运行时刻进行功能实现的。综上所述,通过删除引用类文件中具体的功能逻辑内容,保留声明信息来精简引用类文件大小,在保证支持特定编译场景过程的同时,尽可能降低源代码在执行编译步骤中的性能需求负担、磁盘存储负担及文件传输负担。根据本专利技术实施例,提供了一种JAVA语言虚拟编译实现方法,图1是本专利技术实施例的JAVA语言虚拟编译实现方法的流程图,如图1所示,根据本专利技术实施例的JAVA语言虚拟编译实现方法具体包括:步骤301,将一般java类内容转变为虚拟类文件;步骤301具体包括:将java类文件装载为对象化数据,创建相应的虚拟类文件;读取当前类声明信息,将当前类声明信息写入虚拟类文件中;其中,当前类声明信息中作用于编译支持的主要内容包括:生成当前类文件的java编译器版本、修饰符、当前类父类描述、当前类签名信息、以及当前类要实现的接口列表;若存在内部类则读取内部类声明信息,将内部类声明信息写入虚拟类文件中;其中,内部类声明信息包括:内部类名称、继承的父类描述、其外部类描述、内部类签名信息、以及实现的接口列表;读取java类属性,将java类属性写入虚拟类文件中;其中,java类属性包括:修饰符和类型描述,其中,赋值部分根据编译场景的需求确定是否包括。读取类方法,将类方法写入虚拟类文件中,其中,类方法包括:方法签名、修饰符、返回值类型、方法名称、参数类型列表、以及本文档来自技高网...

【技术保护点】
1.一种JAVA语言虚拟编译实现方法,其特征在于,包括:/n将一般java类内容转变为虚拟类文件;/n进行java类和虚拟类文件的装载。/n

【技术特征摘要】
1.一种JAVA语言虚拟编译实现方法,其特征在于,包括:
将一般java类内容转变为虚拟类文件;
进行java类和虚拟类文件的装载。


2.根据权利要求1所述的方法,其特征在于,将一般java类内容转变为虚拟类文件具体包括:
将java类文件装载为对象化数据,创建相应的虚拟类文件;
读取当前类声明信息,将所述当前类声明信息写入所述虚拟类文件中;
若存在内部类则读取内部类声明信息,将所述内部类声明信息写入所述虚拟类文件中;
读取java类属性,将所述java类属性写入所述虚拟类文件中;
读取类方法,将所述类方法写入所述虚拟类文件中。


3.根据权利要求2所述的方法,其特征在于,
所述当前类声明信息中作用于编译支持的主要内容包括:生成当前类文件的java编译器版本、修饰符、当前类父类描述、当前类签名信息、以及当前类要实现的接口列表;
所述内部类声明信息包括:内部类名称、继承的父类描述、其外部类描述、内部类签名信息、以及实现的接口列表;
所述java类属性包括:修饰符和类型描述,其中,赋值部分根据编译场景的需求确定是否包括;
所述类方法包括:方法签名、修饰符、返回值类型、方法名称、参数类型列表、以及抛出的异常类型列表。


4.根据权利要求1所述的方法,其特征在于,进行java类和虚拟类文件的装载具体包括:
步骤1,判断加载的是原生java类文件还是所述虚拟类文件,如果判断为原生java类文件,执行步骤3,如果判断为虚拟类文件,执行步骤2;
步骤2,采用自定义虚拟类装载器,根据所述虚拟类文件的数据写入过程,进行流程逆向处理获取原java类中各类声明信息,将类文件的各类声明信息重新组装为java类对象,并作为一个java类的对象化数据装载到类声明缓存中,供后续编译步骤中语义分析程序使用;
步骤3,采用默认java类装载器,完整读取java类文件中的声明信息和具体功能实现内容,并作为一个java类的对象化数据装载到类声明缓存中,供后续编译步骤中语义分析程序使用。


5.一种JAVA语言虚拟编译实现系统,其特征在于,包括:
转换模块,用于将一般java类内容转变为虚拟类文件;
装载模块,用于进行java类和虚拟类文件的装载。


6.根据权利要求5所述的...

【专利技术属性】
技术研发人员:高新亮王宏王小东
申请(专利权)人:思客云北京软件技术有限公司
类型:发明
国别省市:北京;11

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

1