【jvm|关于JVM和JDK】什么是 Java 开发工具包?
文章图片
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 是:
- 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 和长期支持的最新选项。
Java 虚拟机 (JVM) 是一种规范,它提供了一个运行时环境,可以在其中执行 Java 字节码。正如其名称所暗示的那样,JVM 用作“虚拟”机器或处理器。 Java 虚拟机 (JVM) 主要负责 Java 的平台独立性。因为 JVM 知道平台的特定指令长度和其他特性,所以这是可能的。 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 是 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 编译器。
JRE 是安装在计算机系统上并用于运行以 Java 编程语言编写的程序的软件组件。 JRE 可以作为单独的包或集成开发环境 (IDE) 的一部分从 Oracle 网站下载。
类库提供用于应用程序开发的类。
编译器通过一系列包括解析和编译的阶段,将用一种语言编写的源代码翻译成另一种语言的等效目标代码。
推荐阅读
- java|Spring Boot干货系列((一)优雅的入门篇 | 掘金技术征文)
- java|Java 中台技术盘点,这些技术你了解还远远不够
- java|朱晔的互联网架构实践心得S2E2(写业务代码最容易掉的10种坑 | 掘金年度征文...)
- Spring|猿创征文|Spring Boot运行原理及功能实现方式
- Python数学建模|Python数学建模入门【1】
- Python数学建模|Python数学建模入门【3】
- 笔记|15天完成民猫电商毕设——消息模块收尾(12th day)
- 前端|微信公众号支付(JSAPI)
- Java|从头搭建一个SpringBoot项目,至少应该引入哪些配置()