Java—了解编译原理 (前端编译)
Posted 一朵花花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java—了解编译原理 (前端编译)相关的知识,希望对你有一定的参考价值。
Java前端编译
把Java源码文件编译成class文件的过程:. java → . class
1.词法分析
词法分析阶段是编译过程的第一个阶段
这个阶段的任务是将代码中的语句分割成一个一个的字符,从左到右一个字符一个字符地读入源程序,将字符序列转换为标记序列 (Token序列)
但是:词法分析器通常不会关心标记之间的关系 (语法分析的范畴)
2.语法分析
用词法分析产生的字符,构造一棵"语法树",即:将单词序列组合成各类语法短语,如"程序",“语句”,“表达式” 等,语法分析程序通过遍历"语法树"来检测源程序在结构上是否正确
3.语义分析
代码优化阶段,编译过程的一个逻辑阶段
语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息,其中一个重要部分就是类型检查
4.生成中间代码
在Java中,由 javac 按照 Java 语言的语法对源文件进行检测,是否违反语法规范
若符合,则按照字节码文件规范生成相对应的字节码文件,而这个字节码文件就是一种中间代码
字节码文件,有统一的格式
前端编译优缺点:
优点 | 缺点 |
---|---|
阶段的优化是指程序编码方面的 | 对代码运行效率几乎没有任何优化措施 |
编译成的 class 文件可以直接给JVM解释器解释执行,省去编译时间,加快启动速度 | 解释执行效率较低,所以需要结合下面的JIT编译 |
Java后端编译
通过Java虚拟机 (JVM) 内置的即时编译器 (Just In Time Compiler,JIT编译器);在运行时把Class文件字节码编译成本地机器码的过程
这个后面在进行详细讲解~~
以上是关于Java—了解编译原理 (前端编译)的主要内容,如果未能解决你的问题,请参考以下文章