前言:
本文是Java虚拟机系列第一篇,主要讲解Java虚拟机的概念,字节码、机器码、编译器、解释器的概念
1.Java虚拟机(JVM)
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令(机器码)执行。这就是Java的能够“一次编译,到处运行”的原因。
上面这段话摘自百度百科——https://baike.baidu.com/item/JVM/2902369?fr=aladdin 这段话概括性比较强,也包含了本篇文章的主干知识点:
1.JVM/Java虚拟机
2.机器码、字节码
3.编译器和解释器
2.机器码和字节码
首先,我们知道一段程序要想在电脑上运行,必须“翻译”成电脑能够听懂的,由0,1组成的二进制代码,这种类型的代码即称为机器码,机器码是计算机可以直接执行的、速度最快的代码。
在Java中,编写好的程序即通常的.java文件需要经过编译器编译成.class文件,这段.class文件是一段包含着虚拟机指令、程序和数据片段的二进制文件,即字节码,为什么叫字节码?因为这种类型的代码以一个字节8bit为最小单位储存。
3.编译器和解释器
编译器
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。
解释器
将相对高级的程序代码解释成电脑可以直接运行的机器码。
以Java为例:
电脑是不能直接执行Java程序的,一个.java程序要想被执行,首先需要编译器将高级的.java程序文件编译成.class字节码片段,字节码经过JVM(解释器)的处理后生成电脑可以直接执行的机器码,至此java程序才能得以正确运行。