java源代码编译机制

来源:互联网 发布:redmine软件 编辑:程序博客网 时间:2024/05/18 13:26

JVM规范中定义了class文件的格式 但是没有定义源代码如何编译为class文件,所以各大厂商在实现jdk时符合规范将其编译为class文件,下面以SUN JDK来做分析。

基本流程如下:

{java源文件}------->{分析和注入到符号表(Parse and Enter)}------>{注释处理(Annotation Processing)}--------->{语义分析和生成class文件(Analyse and Generate)}-->{0101}

下面对各个流程进行说明:

1、分析和注入到符号表

分析过程主要做的是,词法和语法分析。

注入过程主要是将符号表输入到符号表。,通常包括类得超类和接口、根据需要添加默认的构造器,将类中出现的符号输入到自己的符号表中等。

2、注视处理

主要处理用户自己的注释annotation,可能带来的好处就是基于annotation来生成附加的代码或进行一些特殊的处理,从而省去一些代码的编写,例如get和set方法的编写,通过注释 ,编译之后会自动生成。

3语义分析和生成class文件

主要是对名字和表达式等元素与变量、方法、类型等联系到一起,检查变量使用前是否已声明、检查泛型、类型匹配,检查所有的语句都可到达等,以及需要checked异常都捕捉到或者被抛出,检查有返回值得方法确定有返回值,检查变量不重复赋值,取出无用的代码 如:if(false){//....},还有就是泛型转换为普通的java类型,还有自动拆箱和装箱转换等。最后开始生成class文件。

原创粉丝点击