3

聊一聊关于JDK、JRE 和 JVM 的区别

 2 years ago
source link: https://developer.51cto.com/article/712414.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

聊一聊关于JDK、JRE 和 JVM 的区别-51CTO.COM

聊一聊关于JDK、JRE 和 JVM 的区别
作者:y, xz 2022-06-27 08:24:34
JDK包括 Java 运行时环境 (JRE)、解释器/加载器 (Java)、编译器(javac)、归档器 (jar)、文档生成器 (Javadoc) 以及 Java 开发所需的其他工具。

Java Development Kit (JDK ) 是用于开发 Java 应用程序和小程序的软件开发环境。它包括 Java 运行时环境 (JRE)、解释器/加载器 (Java)、编译器(javac)、归档器 (jar)、文档生成器 (Javadoc) 以及 Java 开发所需的其他工具。

现在我们需要一个环境来运行我们的程序。此后,JRE代表“Java 运行时环境”,也可以写成“Java RTE”。Java 运行时环境提供了执行 Java 应用程序的最低要求;它由Java 虚拟机 (JVM)、核心类和支持文件组成。

86612e513d0e167b080148818745a78b99b625.jpg

现在让我们讨论一下JVM,它代表了 java 虚拟机。如下:

  • 指定 Java 虚拟机工作的规范。但实现提供者独立选择算法。它的实现由 Sun 和其他公司提供。
  • 实现是满足 JVM 规范要求的计算机程序。
  • 运行时实例每当您在命令提示符下编写 java 命令以运行 java 类时,就会创建一个 JVM 实例。

在继续讨论 JDK、JRE 和 JVM 之间的区别之前,让我们先简要讨论它们,并将它们与下面提出的图像相互关联。

e1f9bb736f038f524a627572d7a5e223eb1efa.png

不用感到困惑,因为我们将一一讨论它们。

(1) JDK(Java Development Kit)是一个提供开发和执行(运行) Java程序环境的工具包。JDK 是一个工具包(或包),包括两个东西

  • 开发工具(提供开发Java程序的环境)
  • JRE(执行您的 java 程序)。

(2) JRE(Java Runtime Environment)是一个安装包,它提供了一个环境,只在你的机器上运行(而不是开发) java程序(或应用程序)。JRE 仅供那些只想运行作为系统最终用户的 Java 程序的人使用。

(3) JVM(Java 虚拟机) 是 JDK 和 JRE 中非常重要的一部分,因为它包含或内置在两者中。无论你使用 JRE 还是 JDK 运行的 Java 程序都会进入 JVM,而 JVM 负责逐行执行 Java 程序,因此它也被称为解释器。

现在让我们讨论 JRE 的组件,以了解它的重要性并了解它的实际工作原理。为此,让我们讨论组件。

JRE的组件如下:

  • 部署技术,包括部署、Java Web Start 和 Java 插件。
  • 用户界面工具包,包括抽象窗口工具包 (AWT)、Swing、Java 2D、可访问性、图像 I/O、打印服务、声音、拖放( DnD)和输入法。
  • 集成库,包括接口定义语言 (IDL)、Java 数据库连接 (JDBC)、Java 命名和目录接口 (JNDI)、远程方法调用 (RMI)、基于 Internet Inter-Orb 协议的远程方法调用 (RMI-IIOP)和脚本。
  • 其他基础库,包括国际支持、输入/输出 (I/O)、扩展机制、Beans、Java 管理扩展 (JMX)、Java 本机接口 (JNI)、数学、网络、覆盖机制、安全性、序列化和Java XML 处理 (XML JAXP)。
  • Lang 和 util 基础库,包括lang 和 util、管理、版本控制、zip、仪器、反射、集合、并发实用程序、Java 存档 (JAR)、日志记录、首选项 API、参考对象和正则表达式。
  • Java 虚拟机 (JVM),包括Java HotSpot 客户端和服务器虚拟机。

在对组件有足够的了解之后,现在让我们讨论一下 JRE 的工作原理。为了理解 JRE 是如何工作的,让我们考虑下面的一个例子:

考虑一个保存为 ‘ Example.java’的 java 源文件。该文件被编译成一组字节码,存储在“ .class ”文件中。这里将是“
Example.class ”。

注意:从上面可以解释编译时的媒体操作计算。

以下操作在运行时发生,如下所示:

(1) 类加载器

(2) 字节码验证器

(3) 口译员

  • 执行字节码
  • 对底层硬件进行适当的调用

现在让我们简要讨论一下 JVM 是如何工作的。如下:

JVM 在 Java 程序运行时成为 JRE 的一个实例。它被广泛称为运行时解释器。JVM 在很大程度上有助于从使用 JDK 程序库的程序员抽象内部实现。

它主要负责三项活动。 

  • Loading
  • Linking
  • Initialization

同样,现在让我们讨论一下 JRE 的工作原理,如下所示:

  • JVM(Java 虚拟机)充当运行 Java 应用程序的运行时引擎。JVM 是实际调用java 代码中存在的main方法的那个。JVM 是 JRE(Java 运行时环境)的一部分。
  • Java 应用程序称为 WORA(一次编写,随处运行)。这意味着程序员可以在一个系统上开发 Java 代码,并且可以期望它在任何其他支持 Java 的系统上运行而无需任何调整。由于 JVM,这一切皆有可能。
  • 当我们编译文件时*.java,Java 编译器会生成与*.java文件中存在的相同类名的*.class文件(包含字节码) 。当我们运行这个*.class文件时,它会进入各个步骤。这些步骤一起描述了整个 JVM。

Recommend

  • 118
    • mjg123.github.io 6 years ago
    • Cache

    Fast JVM startup with JDK 9

    Fast JVM startup with JDK 9 Oct 2, 2017 Recently I’ve been working on a project where the executi...

  • 29
    • www.cnblogs.com 4 years ago
    • Cache

    聊一聊JSONP和图像Ping的区别

    JSONP 在讲 JSONP 之前需要再来回顾一下在页面上使用 script 引入外部的 js 文件时到底引入了什么? 先建立一个 index.js 文件。 console.log(123) 再建立一个 index.html 文件。 <!D...

  • 14

    java-version.com: What's new in Java 16? 15? Keep up to date! Change the JRE / JDK in Eclipse on Mac OS X and access the sources...

  • 7
    • my.oschina.net 3 years ago
    • Cache

    JDK、JRE、JVM,是什么关系?

    持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥博客:https://bugstack....

  • 7
    • www.fly63.com 2 years ago
    • Cache

    JDK、JRE与JVM的区别

    什么是 JDK?JDK 的英文全称是 Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。Java 开发人员可以在 Windows、macOS、Solaris 和 Linux 上使用,是一个跨平台编程语言。JDK 帮助他们编写和运行 Java 程序。可以在同一台计算机...

  • 8
    • rovo98.github.io 2 years ago
    • Cache

    JDK, JRE, JVM | 深入了解

    JDK, JRE, JVM | 深入了解 Posted on 2019-03-20 In Java Views: 1 了解 JDK, JRE, JVM 之间的区别,JVM 是如何工作的?什么是

  • 6
    • www.geeksforgeeks.org 2 years ago
    • Cache

    Difference between JVM, JRE & JDK

    Difference between JVM, JRE & JDKDifference between JVM, JRE & JDKLoaded: 0.49%00:03Remaining Time -20:23...

  • 4

    Java Foreign Memory API and Foreign Linker API JDK-16 interfaces for JVM connection Since the existence of Java, there’s been a need to access libraries and foreign memory wr...

  • 5

    大数据必学Java基础(九):JDK,JRE,JVM的区别 原创 Lansonli 2022-07-23...

  • 5
    • ionutbalosin.com 1 year ago
    • Cache

    JVM Performance Comparison for JDK 17

    JVM Performance Comparison for JDK 17 Authors Ionut Balosin Website: www.ionutbalosin.com Twitter: @ionutbalosin Mastodon: [email protected] Florin Blanaru Twit...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK