📜  为什么Java是“一次编写,随处运行”?

📅  最后修改于: 2022-05-13 01:55:38.511000             🧑  作者: Mango

为什么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程序在Windows上编译并在macOS上运行

结论:
总而言之, Java在编译时会创建一个字节码(.class 文件) ,它可以在任何支持 JVM 的机器上运行。所以一旦编译它不需要在它运行的每台机器上重新编译,JVM 将字节码转换为底层硬件可以理解。