一、什么是java虚拟机?
java虚拟机是执行字节码文件(.class)的虚拟机进程。
java源程序(.java)被编译器编译成字节码文件(.class)。然后字节码文件,将由java虚拟机,解释成机器码(不同平台的机器码不同)。利用机器码操作硬件和操作系统
二、为什么java被称为平台无关的编程语言?
因为不同的平台装有不同的JVM,它们能够将相同的.class文件,解释成不同平台所需要的机器码。正是因为有JVM的存在,java被称为平台无关的编程语言
三、详细解释(可以不看)
1)什么是平台?
CPU和操作系统的总称。
CPU进行计算和控制计算机系统,所以每种CPU都有自己的指令集
操作系统:控制程序执行的程序,充当程序和硬件之间的中介
2)什么是平台无关(跨平台)?
平台无关,不是说源程序(.java)和平台无关,能运行在各个不同的平台;而是说源程序编译后的.class文件,能在不同的平台上运行(只要不同的平台装有不同的JVM)
那来个平台相关的例子:VC编译出来的C语言可执行文件exe,能够在windows上运行,不能在linux上运行。
也就是说java源程序不是直接编译成机器码,而是二次编译的。第一次java源程序被javac编译成.class文件(这个文件和平台无关)。第二次,.class文件被JVM中的解释器编译,解释执行为不同平台所需要的机器码