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