📜  Java平台如何独立

📅  最后修改于: 2020-02-10 15:19:32             🧑  作者: Mango

与平台无关的含义是,Java编译的代码(字节码)可以在所有操作系统上运行。
程序是以人类可读的语言编写的。它可能包含机器无法理解的单词,短语等。为了使机器能够理解源代码,它必须采用机器可以理解的语言,通常是机器级别的语言。因此,这就是编译器的作用。编译器将高级语言(人类语言)转换为机器可以理解的格式。因此,编译器是将另一个程序的源代码从编程语言转换为可执行代码的程序。
该可执行代码可以是可以直接由CPU执行的一系列机器指令,也可以是由虚拟机解释的中间表示。Java的中间表示形式是Java字节码。
Java程序的逐步执行:

  • 每当使用JAVA编写程序时,Javac都会对其进行编译。
  • JAVA编译器的结果是.class文件或字节码,而不是机器本机代码(与C编译器不同)。
  • 生成的字节码是不可执行的代码,需要解释器才能在计算机上执行。该解释器是JVM,因此Bytecode由JVM执行。
  • 最后,程序运行以提供所需的输出。


对于C或C++(与平台无关的语言),编译器会生成一个与OS相关的.exe文件。当我们尝试在其他操作系统上运行此.exe文件时,该文件无法运行,因为它与操作系统相关,因此与其他操作系统不兼容。
 

Java与平台无关,但JVM与平台有关

在Java中,这里的要点是JVM取决于操作系统,因此,如果您运行的是Mac OS X,则将拥有与运行Windows或其他操作系统的JVM不同的JVM。可以通过尝试为您的特定计算机下载JVM来验证这一事实。在尝试下载JVM时,将为您提供与不同操作系统相对应的JVM列表,并且您显然会选择针对该操作系统的JVM。因此,我们可以得出结论,JVM是平台相关的,这就是Java能够成为“平台无关”的原因。
重要事项:

  • 就Java而言,正是Bytecode的魔力使它独立于平台
  • 这增加了JAVA语言中的一个重要功能,称为可移植性。每个系统都有自己的JVM,该JVM在安装jdk软件时自动安装。对于每个操作系统,都可以使用单独的JVM,该JVM能够读取.class文件或字节码。
  • 需要注意的重要一点是,尽管JAVA是平台无关的语言,但JVM是平台无关的。不同的JVM是为不同的OS设计的,字节码能够在不同的OS上运行。