JavaWeb系列读书笔记(三)Java编译原理

Javac是一种编译器,编译器简单来说就是个翻译器,将一种语言翻译成另外一种语言,往往是将高级的语言翻译成对机器友好的底层语言。但是不同机器之间有差别,为了实现在各机器能识别语言,这个工作交个JVM来完成。而Javac得任务就是将Java源码转化为JVM能识别得语言。

Java源码(.java)->Javac->Java字节码(.class 二进制)->JVM->当前机器能识别得机器语言

Javac的过程

1.源码
2.Token流(词法分析)
3.语法树(语法分析)
4.注解语法树(语义分析)
5.字节码(代码生成)

词法分析:

Javac的接口类是com.sun.tools.javac.parser.Lexer 默认实现类为 xxxxx.Scanner
Scanner会逐个读取Java源文件的单个字符,然后解析出符合Java语言规范的Token序列

语法分析:
将token流更加结构化成为一个语法树

语义分析
对语法树进一步细化,去掉无用代码,变量自动转化,代码检查,去除语法糖等

代码生成
遍历语法树,生成最终的字节码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文基于周志明的《深入理解java虚拟机 JVM高级特性与最佳实践》所写。特此推荐。 列举了这3类编译过程中一些比...
    阳光的技术小栈阅读 458评论 0 0
  • 寒波未消尽,柔雨润春来。 枯枝生嫩叶,萎园似花开。 天广含薄雾,喜燕迎暖流。 骄阳随风起,露滴入青苔。
    何乐楠阅读 352评论 0 0
  • 只是没看 一会儿没看 转眼便是一天 只是没见 还是没见 不曾想又是一年 谁能保持不变 谁又能记得诺言 我们还是输给...
    站在风口上的猪阅读 240评论 0 0
  • 在许多个安静的角落 走过许多安静的日子 他乡的鸟鸣清脆 现世的光阴安稳
    杜鹃阅读 195评论 0 1

友情链接更多精彩内容