关于JVM和JDK,讲清楚它们的关系

北京治疗白癜风最好的医院 https://m-mip.39.net/disease/yldt/bjzkbdfyy/

什么是Java开发工具包?

关于JVM和JDK

JavaDevelopmentKit(JDK)是一个跨平台的软件开发环境,它提供了开发基于Java的软件应用程序和小程序所需的工具和库的集合。

它是Java中使用的核心包,与JVM(Java虚拟机)和JRE(Java运行时环境)一起使用。

初学者经常对JRE和JDK感到困惑,如果您只对在您的机器上运行Java程序感兴趣,那么您可以使用JavaRuntimeEnvironment轻松完成。

但是,如果您想开发基于Java的软件应用程序,那么与JRE一起您可能需要一些额外的必要工具,即JDK。

JDK包含:

Java运行时环境(JRE):JDK和JRE允许程序员创建可由JRE运行的核心Java程序,其中包含JVM和类库。

类库:类库是一组动态可加载的库,Java程序员可以在运行时访问它们。

编译器(javac):Javac是该语言中的主要编译器。它是一个Java应用程序,它从开发人员那里获取文本文件并将它们转换为Java类文件。它是包含Java字节码的最常见的编译器输出类型。

调试器:帮助开发人员测试和调试Java代码

JavaDoc:SunMicrosystems创建了JavaDoc,它是Java文档。它可用于从HTML文件中的源代码生成API文档。

JDK中的JavaRuntimeEnvironment通常被称为PrivateRuntime,因为它不同于普通的JRE,并且包含额外的材料。JDKPrivateRuntime包括JVM和生产中使用的所有类库,以及对开发人员有益的其他库,例如国际化和IDL库。

一些最流行的JDK是:

OracleJDK:最流行的JDK和Java11的主要发行商,

OpenJDK:准备使用:JDK15、JDK14和JMC,

AzulSystemsZing:适用于Linux操作系统的高效且低延迟的JDK,

AzulSystems:基于Zulu品牌,适用于Linux、Windows、MacOSX、

IBMJ9JDK:适用于AIX、Linux、Windows和许多其他操作系统,

AmazonCorretto:免费构建OpenJDK和长期支持的最新选项。

什么是JVM?

Java虚拟机(JVM)是一种规范,它提供了一个运行时环境,可以在其中执行Java字节码。正如其名称所暗示的那样,JVM用作“虚拟”机器或处理器。Java虚拟机(JVM)主要负责Java的平台独立性。因为JVM知道平台的特定指令长度和其他特性,所以这是可能的。

JVM执行以下操作:

代码已加载。

检查代码

代码被执行。

其他编程语言的编译器通常会为特定操作系统输出代码,而Java编译器只为Java虚拟机生成字节码。Java程序在JVM进程中作为线程执行。JVM负责加载、验证、解释和执行您的类文件。当您运行java之类的命令时,JVM会加载该类的类定义并调用其main函数。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

JVM包含:

类加载器:这个子系统主要负责加载类文件。加载、链接和初始化是它的三个基本功能。

方法区:它包含一个类结构,包括信息、Java方法和一个常量运行时池。

堆内存:堆存储所有对象、实例变量和数组。这个内存可以在多个线程中找到。

JVM语言堆栈:JVM语言中的堆栈存储局部变量及其部分结果。每个线程都有自己的JVM语言堆栈,它是与线程同时创建的。调用方法时会创建一个新框架,并在调用该方法后将其销毁。

PC寄存器:PC寄存器存储当前执行的Java虚拟机指令的地址。在Java中,每个线程都有自己的一组PC寄存器。

NativeMethodStacks:NativeMethodStacks-本地代码指令存储在本地方法堆栈中,它依赖于本地库。它使用本机堆或任何类型的堆栈分配内存。

执行引擎:它是一种用于测试硬件、软件或整个系统的软件。测试执行引擎永远不会存储有关被测试产品的数据。

NativeMethod接口:这是一个称为NativeMethodInterface的编程框架。它使库和本机程序能够与在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的乐趣。

此外,您还应该了解一件事:SunMicrosystems在年收购Oracle的OpenJDK后,于年将其JavaDevelopmentKit(JDK)替换为它;因此,今天它们基本上是同一个东西——只是它们的创造者给的另一个名字!但是,这并不意味着您找不到它们之间的任何差异;例如:

?Java开发工具包(JDK)由三个组件组成:Java运行时环境(JRE)、Java类库和Java编译器。

Java开发工具包(JDK)由三个组件组成:Java运行时环境(JRE)、Java类库和Java编译器。

JRE是安装在计算机系统上并用于运行以Java编程语言编写的程序的软件组件。JRE可以作为单独的包或集成开发环境(IDE)的一部分从Oracle网站下载。

类库提供用于应用程序开发的类。

编译器通过一系列包括解析和编译的阶段,将用一种语言编写的源代码翻译成另一种语言的等效目标代码。

————————————————

作者:MIC_java01

来源:


转载请注明:http://www.aierlanlan.com/rzdk/3817.html