引入
Java的编译器先将其编译为class文件,也就是字节码,这一步称为Javac编译;然后将字节码交由jvm(java虚拟机)解释执行,因而很多地方说“java是一种半编译、半解释执行”的语言。当然现在由于JIT的出现,这种说法有部分是错误的。接下来的两篇博客,会简略介绍一下Javac 编译过程和JIT机制。
Javac编译过程
Javac编译器将.java文件编译成为.class文件的过程,这里的Javac编译器称为前端编译器;相对应的还有后端编译器,它在程序运行期间将字节码转变成机器码。
Javac编译(前端编译)包括 词法、语法分析 、填充符号表 、语义分析、字节码生成。
词法、语法分析
词法分析是将源代码的字符流转变为标记(Token)集合。单个字符是程序编写过程中的的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符等都可以成为标记。例如,下面这行代码
int num = a + 6;
这行代码包含了6个标记,分别是 int 、 num 、 = 、 a 、+ 、 6;
这里的整型标志int虽然由三个字符构成,但是它只是一个标记,