您的位置:首页 > 编程语言 > Java开发

Java程序的编译过程

2017-03-28 10:02 148 查看
一.java的编译阶段大致分为两个阶段:

早期: 将java程序源码编译成字节码 ,“前端编译器”javac

晚期: 从字节码生成本地机器码的过程, “后端编译器”JIT编译器

1.早期大致分为三个过程

<1>解析和与填充符号表的过程

a. 词法,语法分析

词法分析:将源代码的字符流转变为标记(Token)集合,单个字符是编写过程的最小元素,而标记是编译过程的最小元素。

语法分析:根据Token序列构造抽象语法树(AST)过程。AST的每个节点都代表着程序代码中的一个语法结构(包,类型,修饰符,运算符,接口,返回值类型,代码注释etc)。

b.符号表

是由一组符号地址和符号信息构成的表格(类似于哈希表中K-V值对的形式)。

<2>插入式注解处理器的注解处理过程

a.注解处理器

相当于一组编译器的插件,在插件里面可以对AST进行读取,修改,添加任意元素,如果插件对处理注解期间对AST进行了修改,编译器将回到解析以及填充符号表的过程重新处理。直到处理器没有在对AST进行修改为止。每次循环称为一个回环过程如下图所示:



<3>语义分析以及字节码的生成

1.标注检查

2.数据及控制流分析

3.解语法糖

在计算机语言中添加某种语法,使用语法糖能够增加程序的可读性,从而减少代码出错的机会
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm底层原理