javac编译器的知识点

javac是什么,是命令?其实是一种编译器,将人可读的java程序语言转化成java虚拟机可读的字节码文件。这里要说名下为什么java是门高级语言呢,相对于C,C++,汇编语言等,它们的源码可以直接编译成目标机器码,从而CPU能直接执行,但是JAVA语言确是运行在JAVA虚拟机上的,JAVA虚拟机把经过javac编译后的字节码文件转转化成针对每台不同主机识别的机器语言,所以java语言才实现了与平台无关性,简言之就是 javac把java代码编译成java字节码,JVM负责将java字节码(.class文件)zhua转成cpu可执行的目标文件。

Java编译器介绍:

首先要想编译一个文件,首先得把该文件一个字节一个字节的读进来,找到那些是java的关键词,比如if  else for  while等等啦,这个步骤就是语法分析,语法分析后把语法不对的进行错误提示,反馈给我们。正确的语法分析结果,会得到一个符合java语言规范的抽象语法树,它是有结构性的,把主要词法用结构性的形式组织在一起。

语法分析后进入语义分析,就是将复杂的语法转换成简单的语法,比如foreach转换成for结构,这样抽象语法树更加丰满也更接近于目标语言的语法规则。

最后通过字节码生成器转换成字节码文件,相当于汉译英,英译汉,这是数据结构也发生了变化,但是这样JVM就可以识别这份字节码文件了。

 

你可能感兴趣的:(javac编译器的知识点)