编译器:高级语言与机器语言之间的桥梁
JVM解释器:充当字节码文件与操作系统之间的桥梁
首先与Java之外的编译器区分一下
例如c语言的编译器——直接面向计算机
把源代码翻译成计算机能够理解的机器语言
本质:高级语言到机器语言
Java编译器javac——面向JVM虚拟机
把源代码翻译成JVM能够理解的语言,也就是字节码,文件格式是.class(用二进制记录)
本质:高级语言到字节码(机器语言)
JVM解释器——面向安装了此Java虚拟机的计算机
把Java虚拟机理解的语言(字节码)翻译成安装了此Java虚拟机的计算机能够理解的语言(机器语言)
本质:字节码(机器语言)到机器语言
因为java程序既要编译也要经过JVM的解释运行,所以说Java被称为半解释语言
字节码:字节码文件.class在计算的体系结构中本质上对应的是一种机器语言(而这里的机器叫作JVM),所以JVM本身是可以直接运行这里的.class文件,用二进制记录。
Java程序运行步骤**:
一、源文件由编译器编译成字节码
二、字节码由java虚拟机解释运行。