1.Java虚拟机是一个可以执行Java字节码的虚拟机进程。
2.用Java编写的程序(存放在扩展名为java的文件中)经过编译器(即JDK根目录bin文件夹中的javac.exe文件)编译成字节码文件(即扩展名为class的文件),这个字节码文件不是针对具体平台的,而是针对抽象的Java虚拟机的,在Java虚拟机上运行,在不同类型的平台上安装不同的Java虚拟机,这些不同的Java虚拟机屏蔽了各个不同平台的差异,从而使编译过的Java程序具有平台无关性,即Java虚拟机在执行字节码时,把字节码解析成具体平台上的机器指令执行。具体工作原理如下图:
Java语言是一种先编译后解释型语言!
注意:
在进行Java编程时,首先要通过文本编辑器写出程序源代码,并转换为“*.java”格式,再通过相关软件编译,将源代码转换为字节码并生成“*.class”格式文件,但此时文件中的内容并非是二进制的。这之后还需要通过解释其解释器转化为二进制代码传送给操作系统执行。
相比于C语言,虽然Java不是二进制输入,但编译成功后的代码可以在各大操作平台上执行,不需要更改,有着“一次编译,处处运行”的跨平台性优点。而C语言编译成功后,放到另一个操作平台上却不能正常运行,需要重新编写编译在运行。