jvm|关于JVM和JDK

【jvm|关于JVM和JDK】什么是 Java 开发工具包?
jvm|关于JVM和JDK
文章图片

Java Development Kit (JDK) 是一个跨平台的软件开发环境,它提供了开发基于 Java 的软件应用程序和小程序所需的工具和库的集合。它是 Java 中使用的核心包,与 JVM(Java 虚拟机)和 JRE(Java 运行时环境)一起使用。初学者经常对 JRE 和 JDK 感到困惑,如果您只对在您的机器上运行 Java 程序感兴趣,那么您可以使用 Java Runtime Environment 轻松完成。但是,如果您想开发基于 Java 的软件应用程序,那么与 JRE 一起您可能需要一些额外的必要工具,即 JDK。
JDK包含:

  • Java 运行时环境 (JRE):JDK 和 JRE 允许程序员创建可由 JRE 运行的核心 Java 程序,其中包含 JVM 和类库。
  • 类库:类库是一组动态可加载的库,Java 程序员可以在运行时访问它们。
  • 编译器 (javac):Javac 是该语言中的主要编译器。它是一个 Java 应用程序,它从开发人员那里获取文本文件并将它们转换为 Java 类文件。它是包含 Java 字节码的最常见的编译器输出类型。
  • 调试器:帮助开发人员测试和调试 Java 代码
  • JavaDoc:Sun Microsystems 创建了 JavaDoc,它是 Java 文档。它可用于从 HTML 文件中的源代码生成 API 文档。
JDK 中的 Java Runtime Environment 通常被称为 Private Runtime,因为它不同于普通的 JRE,并且包含额外的材料。 JDK Private Runtime 包括 JVM 和生产中使用的所有类库,以及对开发人员有益的其他库,例如国际化和 IDL 库。
一些最流行的 JDK 是:
  • Oracle JDK:最流行的JDK和Java11的主要发行商,
  • OpenJDK:准备使用:JDK 15、JDK 14 和 JMC,
  • Azul Systems Zing:适用于 Linux 操作系统的高效且低延迟的 JDK,
  • Azul Systems:基于 Zulu 品牌,适用于 Linux、Windows、Mac OS X、
  • IBM J9 JDK:适用于 AIX、Linux、Windows 和许多其他操作系统,
  • Amazon Corretto:免费构建 OpenJDK 和长期支持的最新选项。
什么是 JVM?
Java 虚拟机 (JVM) 是一种规范,它提供了一个运行时环境,可以在其中执行 Java 字节码。正如其名称所暗示的那样,JVM 用作“虚拟”机器或处理器。 Java 虚拟机 (JVM) 主要负责 Java 的平台独立性。因为 JVM 知道平台的特定指令长度和其他特性,所以这是可能的。 JVM 执行以下操作:
  • 代码已加载。
  • 检查代码
  • 代码被执行。
其他编程语言的编译器通常会为特定操作系统输出代码,而 Java 编译器只为 Java 虚拟机生成字节码。 Java 程序在 JVM 进程中作为线程执行。 JVM 负责加载、验证、解释和执行您的类文件。当您运行 java 之类的命令时,JVM 会加载该类的类定义并调用其 main 函数。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
JVM 包含:
  • 类加载器:这个子系统主要负责加载类文件。加载、链接和初始化是它的三个基本功能。
  • 方法区:它包含一个类结构,包括信息、Java 方法和一个常量运行时池。
  • 堆内存:堆存储所有对象、实例变量和数组。这个内存可以在多个线程中找到。
  • JVM 语言堆栈:JVM 语言中的堆栈存储局部变量及其部分结果。每个线程都有自己的 JVM 语言堆栈,它是与线程同时创建的。调用方法时会创建一个新框架,并在调用该方法后将其销毁。
  • PC 寄存器:PC 寄存器存储当前执行的 Java 虚拟机指令的地址。在 Java 中,每个线程都有自己的一组 PC 寄存器。
  • Native Method Stacks:Native Method Stacks - 本地代码指令存储在本地方法堆栈中,它依赖于本地库。它使用本机堆或任何类型的堆栈分配内存。
  • 执行引擎:它是一种用于测试硬件、软件或整个系统的软件。测试执行引擎永远不会存储有关被测试产品的数据。
  • Native Method 接口:这是一个称为 Native Method Interface 的编程框架。它使库和本机程序能够与在 JVM 中运行的 Java 代码进行交互。
  • 本机方法库:它是执行引擎所需的本机库(C、C++)的集合。
JDK 和 JVM 如何协同工作?
JDK 是 JRE 的超集,包含 JRE 的所有开发工具,例如编译器和调试器。为了运行 Java 小程序和应用程序,Java 运行时环境 (JRE) 包含库、Java 虚拟机 (JVM) 和其他组件。
JVM 是 JDK 和 JRE 的关键组件。无论您使用 JRE 还是 JDK 运行的 Java 应用程序都会进入负责逐行执行的 JVM。因此,它也被称为翻译器。三者之间的关系如下图所示。
JDK 与 JRE 与 JVM 比较表。
  • JDK 包括 JRE。
  • JRE 包括 JVM。
  • 但是,JDK 还包含 Java 运行时环境 (JRE)。不同之处在于前者有一些额外的工具和应用程序,如调试器或集成开发环境 (IDE),而后者用于在您的计算机上运行应用程序。您需要他们两个来充分享受使用 Java 的乐趣。
  • 此外,您还应该了解一件事:Sun Microsystems 在 2009 年收购 Oracle 的 OpenJDK 后,于 2010 年将其 Java Development Kit (JDK) 替换为它;因此,今天它们基本上是同一个东西——只是它们的创造者给的另一个名字!但是,这并不意味着您找不到它们之间的任何差异;例如:
?Java 开发工具包 (JDK) 由三个组件组成:Java 运行时环境 (JRE)、Java 类库和 Java 编译器。
Java 开发工具包 (JDK) 由三个组件组成:Java 运行时环境 (JRE)、Java 类库和 Java 编译器。
JRE 是安装在计算机系统上并用于运行以 Java 编程语言编写的程序的软件组件。 JRE 可以作为单独的包或集成开发环境 (IDE) 的一部分从 Oracle 网站下载。
类库提供用于应用程序开发的类。
编译器通过一系列包括解析和编译的阶段,将用一种语言编写的源代码翻译成另一种语言的等效目标代码。

    推荐阅读