【Java基础学习打卡08】Java语言跨平台原理

195 阅读4分钟

前言

Java 语言编程的一大优势便是跨平台,本文将介绍 Java 语言是如何实现跨平台的。


一、Java程序运行机制

计算机高级语言按照程序的执行方式可以分为 编译型语言解释型语言

  • 编译型语言: 编写的程序源代码需要通过编译器生成机器语言目标文件,在计算机上直接执行目标文件。编译型语言的代表是 C、C++ 等。
  • 解释型语言: 源代码被解释器逐行解释并执行,因此无需编译器生成目标文件。解释型语言的代表是 Python、Ruby 等。

Java 语言则是一种特殊的高级语言,因为它既有编译型语言的特征,也有解释型语言的特征。Java 程序代码要先经过编译,在解释两个步骤。(先编译,后解释)

Java程序运行机制.png

  1. 编写 Java 代码:开发人员使用 Java 语言编写 Java 代码,并将其保存到 .java 的源文件中。
  2. Java 编译器编译源代码:将 .java 源文件编译成平台无关的字节码文件,其扩展名为 .class。Java 编译器会执行词法分析、语法分析、语义分析、代码生成等过程,将源代码转换为字节码文件。
  3. Java 虚拟机加载并解释字节码:Java 虚拟机(JVM)是 Java 语言实现跨平台的关键,其作用是加载并解释编译生成的字节码文件。JVM 首先会将字节码文件加载进来,生成相应的类对象,然后解释执行其中的指令,最终把执行结果输出。

二、Java虚拟机

Java 虚拟机(Java Virtual Machine,缩写为JVM)是一个虚拟的计算机,它提供了一个标准的运行环境来执行 Java 程序。

Java 虚拟机是一个虚拟的计算机,它模拟了一台计算机的全部或部分功能。与实际计算机一样,由硬件和操作系统两部分构成。不同的是,JVM的计算机硬件和操作系统都是虚拟的,不存在于物理世界中,而是由软件实现的。

JVM.png

JVM 由以下三个子系统构成:

  • 类加载器子系统(Class Loader Subsystem):负责加载字节码文件,并将其转化为 JVM 可识别的数据结构。类加载器根据名称或其他特殊属性加载字节码文件,然后生成类的实例。
  • 运行时数据区(Runtime data area):包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。这些组成了 Java 程序运行期间所需的内存区域。
  • 执行引擎(Execution Engine):负责解释并执行字节码文件。JVM 提供了两个执行引擎:解释器和 JIT(Just In Time)编译器。解释器逐条解释字节码指令进行执行,而 JIT 编译器则会在程序运行时对热点代码进行编译优化并使得程序运行更快。

JVM 具有跨平台、节约内存、自动垃圾回收等特性。它是 Java 平台的核心和关键技术之一。

三、Java跨平台

平台:操作系统平台(比如,Windows、Linux、macOs)。

操作系统平台.png

Java 跨平台:Java 程序可以在任意操作系统运行相同的代码,而且不需要对代码进行任何修改。

Java跨平台.png

Java 跨平台的工作原理是,Java 编写的源代码( .java 文件)首先被编译成字节码(.class 文件)。然后,字节码可以在任何装有 JVM 的平台上运行。JVM 利用字节码提供了一种抽象的、与操作系统无关的计算机程序的运行环境。由于 Java 虚拟机的存在,Java 程序就可以在 Windows、Linux、Mac 等各种操作系统上运行。

Java 的跨平台优势是广泛应用于企业级应用和互联网应用的一个重要原因。Java 的跨平台性意味着,开发者无需多种技能,可以针对不同操作系统轻松创建和部署应用程序。Java 实现跨平台的能力对于开发者和用户来说都是非常有价值的。


总结

重点是了解 Java 语言跨平台原理。