Javac 编译原理

2017/10/25

Java 语言有 Java 语言规范,Java 虚拟机有 Java 虚拟机规范,他们都有各自的语法解析规则,而且他们之间的解析规则是不同的,如何让 Java 语法规则适应 Java 虚拟机规则,这个任务由 Javac 编译器来完成。它的任务就是将 Java 语言规范转化为 Java 虚拟机语言规范,完成翻译工作。

Javac 是什么

Javac 是一种编译器,能将一种语言规范转化成另一种语言规范。通常编译器都是将人容易理解的语言规范编译成机器容易理解的语言规范。

Javac 编译器是将 Java 语言编译成对所有机器都友好的语言。这种语言不针对某个机器,包括不同种类,不同平台的机器。如何消除不同种类、不同平台机器之间的差异的,这个任务由 JVM 完成,Javac 的任务就是将 Java 源代码转化成 JVM 能够识别的语言,然后由 JVM 将 JVM 语言转化成当前这个机器能够识别的语言。

Javac 的任务就是将 Java 源码编译成 Java 字节码,也就是 JVM 能够识别的二进制码,这些二进制数字是有格式的,只有 JVM 能够正确识别他们代表的含意。

Javac 编译器的基本结构

Javac 主要有4个模块:

  • 词法分析器
  • 语法分析器
  • 语义分析器
  • 代码生成器

Javac 工作原理分析

词法分析器

语法分析器

语义分析器

代码生成器

待续

参考

  • 《Effective Java》(第2版) (美)Joshua Bloch 著
发表评论

Post Directory