Java 架构和组件解释 [2022]

已发表: 2021-01-04

在成为 Java 程序员之前,您必须了解该语言的各个方面。 Java 最重要的方面之一是 Java 体系结构。 这方面的另一个技术主题是了解 JVM 的组件。 因此,我们将在这篇文章中涵盖这两个关键主题。

本文假设您对 Java 的基础知识有一个大致的了解。 即使您不熟悉 Java 的基础知识,也可以在下面的评论部分提出您可能遇到的任何问题。 让我们开始吧:

目录

Java 架构解释

Java有两个过程,编译和解释。 Java 编译器将 Java 中存在的代码转换为字节码。 Java 虚拟机 (JVM)将字节码转换为机器直接执行的机器码。

我们可以通过以下步骤来描述这个过程:

  • 源代码转到 Java 编译器
  • Java 编译器将其转换为字节码
  • 字节码进入 Java 虚拟机
  • 最后,它进入操作系统(操作系统)

现在我们对 Java 架构的工作原理有了一点了解,我们可以看看它的不同组件:

JVM(Java虚拟机)

Java 的创建者希望它是 WORA(一次编写,随处运行)。 这意味着您可以在任何平台上运行它的应用程序,但赋予 Java 这种品质的东西是 JVM。 JVM 提供了执行 Java 代码的环境。 它解释字节码并将其转换为机器码,以便机器可以运行 Java 程序。

JVM 加载验证并执行代码。 它还为代码提供运行时环境,以便它可以在机器中运行。

JRE(Java 运行时环境)

JRE 构建了一个运行时环境,您可以在其中执行 Java 程序。 它采用 Java 代码并将其与所需的库相结合。 JRE 还启动 JVM 以供其执行。 Java 运行时环境具有所需的软件和库,因此您可以运行这些程序。

JDK(Java 开发工具包)

您将使用 JDK 来开发 Java 应用程序和程序。 它是一个软件开发环境,包含多种开发工具,包括 JRE、编译器、解释器、文档生成器和存档器。

JVM的组件

现在您已经熟悉了 Java 架构,让我们看一下 JVM 的组件,以便我们更好地理解它。 由于 JVM 执行 Java 最重要的任务之一,它有许多部分用于此目的。 我们将详细讨论每个元素:

类加载器子系统

ClassLoader 是 Java 虚拟机的一个子系统,用于加载类文件。 它是架构的第一个组件,因为它加载程序以便可以执行其他任务。 它还链接和初始化类文件。 我们可以将其工作分为以下三个部分:

正在加载

该组件加载类。 它具有用于加载属于引导类路径的类的引导类加载器。 Extension ClassLoader 加载位于 ext 文件夹内的类,Application ClassLoader 加载提到的环境变量和类似文件的路径。

链接

在这里,子系统有一个验证器来验证字节码是否正确。 如果字节码不正确,则会产生验证错误。 链接部分分配所有静态变量内存并分配默认值。 它还用原始的符号引用替换了内存的符号引用。

初始化

在 ClassLoading 的这一部分中,系统将静态变量分配给原始值并执行静态块。

运行时数据区

JVM 的这一部分包含以下组件:

方法区

方法区存储所有类级别的数据。 每个 JVM 只有一个方法区。

堆区

堆区域存储所有对象及其实例数组和变量。 与方法区一样,JVM 也只有一个堆区。

堆栈区

本节为每个威胁创建唯一的运行时堆栈,并为堆栈内存(也称为堆栈帧)中的每个方法调用创建一个条目。 它有一个与方法相关的局部变量数组、作为中间操作的工作空间的操作数堆栈以及与方法相关的所有符号保持存储的帧数据。 除非有异常,否则帧数据会维护 catch 块信息。

PC 寄存器

每个线程都有单独的 PC 寄存器来保存运行指令的地址。 一旦一条指令完成执行,PC 寄存器就会用下一条指令更新自己。

本机方法堆栈

顾名思义,此部分包含有关本机方法的信息。 它为每种威胁创建了一个独特的本机方法堆栈。

您应该注意,运行时数据区的前两个组件(方法区和堆区)是共享资源,而堆栈区不是。

执行引擎

执行引擎执行字节码。 它一块一块地读取和执行它。 它还具有不同的组件:

口译员

该组件快速解释字节码,但执行速度有点慢。 当系统多次调用一个方法时,它有一个显着的缺点,并且每次都需要新的解释。 解释器的这个缺点极大地损害了过程的效率。

JIT 编译器

JIT 编译器没有解释器的缺点。 因此,当执行引擎发现重复代码时,它会使用 JIT 编译器而不是解释器。 JIT 编译器在编译后将字节码转换为本机代码。 系统直接使用本机代码。

JIT 编译器具有用于生成中间代码的中间代码生成器和用于优化中间代码的代码优化器。 它还有一个生成本机 doe 的目标代码生成器和一个查找热点的配置文件。

垃圾收集器

执行引擎的最后一个组件是垃圾收集器,它收集并清除未引用的对象。 您可以通过调用 system.gc() 来触发它,但这并不能保证它的执行。

除了这些组件之外,JVM 还具有 JNI(Java 本机接口)和本机方法库。 前者与后者交互,并为执行提供必要的 Native Libraries。

从世界顶级大学获得软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

最后的想法

我们努力使这篇文章保持简洁和有用,我们相信您发现这篇文章内容丰富。 如果您对 JVM 的组件或 Java 架构有任何疑问,您可以通过评论联系我们来向我们提问。

您可以在我们的博客上了解有关 Java 及其应用程序的更多信息。 我们有许多有用的指南和文章,涵盖了这种强大的编程语言的各个方面。

如果您有兴趣了解有关 Java、OOP 和全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训, 9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

为未来的职业做准备

立即申请软件工程硕士