Java 源代码和字节码的区别
当我们开始学习Java时,经常会遇到源代码和字节码这两个术语。当程序员编写Java代码时,它是一种机器无法理解的形式。这段代码被称为源代码,它可以被人类轻松阅读和修改,但机器无法理解。因此,在执行代码之前,我们需要将其转换为一种机器可读的格式,称为机器代码。然而,Java首先将源代码转换为一个中间代码称为字节码,然后再转换为机器代码。让我们讨论一下Java中源代码和字节码之间的区别。
源代码 vs 字节码
源代码
它是程序员使用编程语言(如Java、Python、C++等)编写的原始代码。源代码包含指令、语句、变量、注释和其他构成完整程序的元素。这段代码对人类来说很容易读取和修改,但对计算机来说并不直接可理解。Java编程语言的源代码扩展名为“.java”。
以下是Java源代码的示例:
示例
public class Example {
public static void main(String[] args) {
System.out.println("Tutorialspoint Welcomes you!!");
}
}
输出
Tutorialspoint Welcomes you!!
字节码
它是在源代码成功编译后生成的中间代码。这段代码不是由人类编写的,而是由存在于Java虚拟机中的Javac编译器编写的。它是由二进制、十六进制或宏指令组成的中间级代码。我们需要Java虚拟机是因为字节码也不能直接由计算机执行,但它可以由这个虚拟机处理,将其转换为机器码。
由于可移植的字节码,Java编程语言是平台无关的。一旦Java源代码由Javac编译器编译,它就可以在安装了Java虚拟机的任何系统上运行。
下面的快照代表由Javac编译器生成的前一个示例程序的字节码:
Java编程语言的字节码扩展名为’.class’。
源代码和字节码的区别
从上面的讨论中可以得出以下表格总结了源代码和字节码的区别:
源代码 | 字节码 |
---|---|
程序员编写的 | 由Javac编译器生成的 |
人类可以阅读和理解代码 | Java虚拟机可以读取和理解 |
使用编程语言以人可读的格式编写的一组指令 | 使用虚拟机以机器可读的格式编写的一组指令 |
在执行之前,源代码需要转换为字节码 | 在执行之前,字节码需要转换为机器码 |
高级语言 | 在源代码和机器代码之间的中间语言 |
源代码可以包含指令,语句,变量和注释 | 字节码可以包含二进制,十六进制或宏指令 |
结论
在Java中,源代码和字节码是机器指令的不同层次的表示。Java字节码是由Javac编译器编译的Java源代码的中间表示,而源代码是程序员用高级语言编写的原始代码。