为什么Java是“一次编写,随处运行”?
JVM(Java虚拟机)充当运行Java应用程序的运行时引擎。 JVM 是实际调用Java代码中存在的 main 方法的那个。 JVM 是 JRE(Java运行时环境)的一部分。
Java应用程序被称为WORA(Write Once Run Anywhere) 。这意味着程序员可以在一个系统上开发Java代码,并且可以期望它在任何其他支持 Java 的系统上运行而无需任何调整。由于 JVM,这一切皆有可能。
Java是怎样的 WORA:
在传统的编程语言如 C、C++ 中,程序在编译时,通常会转换为特定底层硬件能够理解的代码,所以如果我们尝试在另一台硬件不同的机器上运行相同的代码,这会导致理解不同的代码。一个错误,所以你必须重新编译代码才能被新硬件理解。
在Java中,程序不是转换为硬件直接理解的代码,而是转换为字节码(.class文件),由JVM解释,因此编译后生成字节码文件,可以在任何地方(任何机器)运行它具有JVM( Java虚拟机),因此它具有Write Once and Run Anywhere的性质。
示例: WORA 的实际实现使用一个简单的Java程序来检查一个数字是偶数还是奇数。
import java.util.Scanner;
class GFG {
public static void main(String args[])
{
int num;
System.out.println("Enter a number:");
Scanner input = new Scanner(System.in);
num = input.nextInt();
if (num % 2 == 0)
System.out.println(num + " is even");
else
System.out.println(num + " is odd");
}
}
- 对于编译(在 Windows 10 上完成):
javac GFG.java
- 编译后在对应的文件夹下会有一个class文件,命名为:
GFG.class
- 将编译时生成的字节码 (.class) 复制到macOS 10.14.3并运行它时,我们会得到以下输出。
结论:
总而言之, Java在编译时会创建一个字节码(.class 文件) ,它可以在任何支持 JVM 的机器上运行。所以一旦编译它不需要在它运行的每台机器上重新编译,JVM 将字节码转换为底层硬件可以理解。