首先,你要理解字节码的实质;其次,我会再解释字节码怎样产生的和java为什么要先生成字节码。
1.字节码是一种比机器码更抽象的中间码,是由一序列一个字节长度的op代码组成的,可以认为是包含一个执行程序的二进制文件。比如我们的class文件。
2.同一段机器语言在不同的系统上运行时,执行结果可能不同,所以若把java文件直接编译成系统可直接执行的机器语言,java语言就无法实现跨平台的特性了;因此,java虚拟机并不是把java文件直接编译成机器语言,而是通过java编译器将java文件编译成介于机器语言和高级语言之间的由字节单位的op代码组成的中间码,但字节码已经是二进制文件了并包含了一个执行程序。 当我们要运行class文件的时候,因为系统不能直接执行字节码文件,所以字节码是通过java虚拟机的解释器对其进行解释后,由虚拟机告诉系统该做些什么的。
到现在,你应该能明白字节码了吧。简单的说,就是我们用javac命令编译java文件后生成的可执行的class文件。 |