【记录】Java程序的编译过程?由.java 到.class的过程?

Javac是一种编译器,它的任务就是将Java源代码语言转化为JVM能够识别的一种语言,然后由JVM将JVM语言再转化成当前这个机器能够识别的机器语言

词法分析器:读取源代码,一个字节一个自己的读取出来,找出这个词法中if,else,while等

   结论:就是分析源码哪些是标点符号,哪些是动词,哪些是名词,并转化成Token流形式

语法分析器:分析Token流,检查是否符合Java语言规范

   结论:检查Token流是否符合JAVA语言规范,有没有语法错误。

      例如:if后面是否跟着boolean表达式

语义分析器:主要工作就是将比较复杂的语法语义转化成简单的语法,

      就如难懂的文言文转化为大家都懂的百话文,或者是注释一下一些不懂的成语。

     结论:就是将复杂的语法转化为简单语法。例如:foreach转化为for循环的过程

代码生成器:将注解语法树生转化成字节码的过程

     结论:代码生成器的结果就是生成符合java虚拟机规范的字节码

以上为本人总结。

参考链接:https://blog.csdn.net/fuzhongmin05/article/details/54880257/

原文地址:https://www.cnblogs.com/wbl001/p/10929482.html