JDK、JRE 和 JVM 有什么用,它们是怎样运行的

简介: 以下是JDK的重要组件:• JDK 和 JRE:程序员通过使用JDK 创建由 JRE 运行的 Java 程序,其中包括 JVM 和类库。• 类库:是一组可动态加载的库,Java 程序在运行时调用。• 编译器:是一个Java程序,开发人员的文本文件通过编译器编译成Java类文件。编译器给出的常见输出形式,包含Java字节码。在 Java 中,主要的编译器是 Javac。• 调试器:调试器是一个 Java 程序,开发人员通过调试器测试和调试 Java 程序。• JavaDoc: JavaDoc 是 Sun Microsystems 为 Java 制作的文档。JavaDoc 可用于从源程序

JDK如何运作?

JDK 功能

以下是JDK的重要组件:

  • JDK 和 JRE:程序员通过使用JDK 创建由 JRE 运行的 Java 程序,其中包括 JVM 和类库。
  • 类库:是一组可动态加载的库,Java 程序在运行时调用。
  • 编译器:是一个Java程序,开发人员的文本文件通过编译器编译成Java类文件。编译器给出的常见输出形式,包含Java字节码。在 Java 中,主要的编译器是 Javac。
  • 调试器:调试器是一个 Java 程序,开发人员通过调试器测试和调试 Java 程序。
  • JavaDoc: JavaDoc 是 Sun Microsystems 为 Java 制作的文档。JavaDoc 可用于从源程序生成 HTML 文件中的 API 文档

JRE如何运作?

JRE 功能

JRE 有一个 JVM 实例、库类和开发工具。编写和编译 Java 代码后,编译器会生成一个包含字节码的类文件。

以下是 JRE 的重要组成部分:

  • 类加载器:类加载器加载运行 Java 程序所需的各种类。JVM 使用三个类加载器,称为引导类加载器、扩展类加载器和系统类加载器。
  • 字节码验证器:字节码验证器验证字节码,使代码不会干扰解释器。
  • 解释器:一旦加载类并验证代码,解释器就会逐行读取代码。
  • 运行时间:运行时间是主要用于编程的系统,用于描述特定程序运行的时间段。
  • 硬件:一旦你编译了 Java 本机代码,它就会在特定的硬件平台上运行。

这样,Java 程序就在 JRE 中运行。

JVM如何运作?

JVM 功能

以下是 JVM 的重要组件:

1) 类加载器

类加载器是用于加载类文件的子系统。它执行三个主要功能:加载、链接和初始化。

2) 方法区

JVM 方法区存储类的结构,如元数据、Java 方法的代码和常量运行时池。

3) 堆

所有对象、数组和实例变量都存储在堆中。此内存在多个线程之间共享。

4)JVM语言栈

Java 语言堆栈存储局部变量及其部分结果。每个线程都有自己的 JVM 语言堆栈,在创建线程时同时创建。调用方法时会创建一个新框架,并在方法调用过程完成时将其删除。

5) PC 寄存器

PC 寄存器存储当前正在执行的 Java 虚拟机指令的地址。在 Java 中,每个线程都有其单独的 PC 寄存器。

6) 原生方法栈

本机方法栈保存本机代码的指令依赖于本机库。它在本机堆上分配内存或使用任何类型的堆栈。

7) 执行引擎

它是一种用于测试软件、硬件或完整系统的软件。测试执行引擎从不携带任何关于被测产品的信息。

8) 原生方法API

本机方法接口是一个编程框架。它允许在 JVM 中运行的 Java 代码由库和本机应用程序调用。

9) 原生API库

本机库是执行引擎所需的本机库(C、C++)的集合。

JDK、JRE 和 JVM 的区别

以下是 JDK、JRE 和 JVM 之间的主要区别:

JDK

JRE

虚拟机

JDK 英文全称是 Java Development Kit。

JRE 英文全称是 Java 运行时环境。

JVM英文全称是Java虚拟机。

JDK 是一个用 Java 开发应用程序的软件开发工具包。

它是一个软件包,为 Java 类库提供运行 Java 代码所需的组件。

JVM 执行 Java 字节码并提供执行它的环境。

JDK 依赖于平台。

JRE 也依赖于平台。

JVM 高度依赖于平台。

它包含用于开发、调试和监控 Java 代码的工具。

它包含 JVM 执行程序所需的类库和其他支持文件。

JVM 中不包含软件开发工具。

它是 JRE 的超集

它是 JDK 的子集。

JVM 是 JRE 的子集。

JDK 使开发人员能够创建可由 JRE 和 JVM 执行和运行的 Java 程序。

JRE 是创建 JVM 的 Java 部分。

它是执行源代码的 Java 平台组件。

JDK 附带安装程序。

JRE 只包含执行源代码的环境。

JVM 捆绑在软件 JDK 和 JRE 中。

JDK 附带安装程序。

JRE 只包含执行源代码的环境。

JVM 捆绑在软件 JDK 和 JRE 中。

目录
相关文章
|
4月前
|
存储 算法 Java
jvm性能优化(一)-基于JDK1.8
jvm性能优化(一)-基于JDK1.8
|
4月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
91 2
|
4月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
396 3
|
2月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
92 1
|
2月前
|
Java 编译器 API
深入解析:JDK与JVM的区别及联系
在Java开发和运行环境中,JDK(Java Development Kit)和JVM(Java Virtual Machine)是两个核心概念,它们在Java程序的开发、编译和运行过程中扮演着不同的角色。本文将深入解析JDK与JVM的区别及其内在联系,为Java开发者提供清晰的技术干货。
37 1
|
2月前
|
小程序 Java 程序员
JDK 和 JRE 有什么区别
JDK(Java Development Kit)是Java开发工具包,包含编译器、调试器等开发工具,用于开发Java程序。JRE(Java Runtime Environment)是Java运行环境,包含Java虚拟机和类库,用于运行Java程序。简言之,JDK用于编写Java程序,JRE用于运行这些程序。
65 1
|
3月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
87 3
|
5月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
371 0
|
5月前
|
Java 编译器 开发工具
JDK vs JRE:面试大揭秘,一文让你彻底解锁Java开发和运行的秘密!
【8月更文挑战第24天】JDK(Java Development Kit)与JRE(Java Runtime Environment)是Java环境中两个核心概念。JDK作为开发工具包,不仅包含JRE,还提供编译器等开发工具,支持Java程序的开发与编译;而JRE仅包含运行Java程序所需的组件如JVM和核心类库。一个简单的"Hello, World!"示例展示了两者用途:需借助JDK编译程序,再利用JRE或JDK中的运行环境执行。因此,开发者应基于实际需求选择安装JDK或JRE。
71 0
|
5月前
|
缓存 Java 编译器
JRE、JDK、JVM 和 JIT 之间的区别详解
【8月更文挑战第22天】
213 0