【记录】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/