JVM 并没有大家想的那样复杂,对于大多数学过Java的同学来说并不陌生。Java所运行的代码 都是在这个运行Java字节码的虚拟机上运行的。
JVM运行在操作系统之上,不与硬件设备直接交互。
Java之所以能够跨平台,是因为Java的源文件再通过编译器之后被翻译成.Class文件文件(字节码文件),.Class文件又被JVM中的解释器编译成机器码在不同的操作系统上运行,即使每个系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的。
一个平台上的二进制可执行文件不能在其他平台上工作,因为此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的!
JVM:够运行Java字节码(Java bytecode)的虚拟机。在JVM运行.Class文件
Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。
Java解释器:是JVM的一部分。(与系统解释器不同)Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。
java程序的具体运行过程
1.Java源文件被编译器编译成字节码文件。
2.JVM将字节码文件编译成相应操作系统的机器码。
3.机器码调用相应操作系统的本地方法库执行的相应方法。