关于JVM和JDK

【Java那些年系列-启航篇 03】JDK、JRE和JVM之间是什么关系? JDK是Java开发者的主要工具包,它包含了JRE(Java运行环境)以及Java开发工具,如编译器(javac)和调试器(jdb)等。JDK主要用于开发Java应用程序,它提供了编译、运行和调试Java程序所需的所有工具。:JRE是Java程序的运行环境,它包含了JVM(Java虚拟机)以及Java类库。JRE的主要作用是提供Java程序运行所需的运行时环境,使得开发者能够在不同的操作系统上运行Java程序。:JVM是Java程序的核心运行环境,它负责解释和执行Java字节码。 阅读详情

什么是 Java 开发工具包?

image.png

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 网站下载。

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

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

JDK、JRE 和 JVM 的区别是什么? JDK、JRE 和 JVM 是 Java 技术栈中的三个核心概念,它们共同支撑了 Java 的“一次编写,到处运行”能力,但各自有不同的角色和功能。JRE 是运行 Java 应用程序的最小环境,包含 JVM 和运行 Java 程序所需的核心类库(如 java.lang、java.util 等)。JVM 是 Java 程序运行的核心环境,负责将编译后的字节码(.class 文件)解释或编译为机器码并执行。JVM 是 Java 程序运行的“引擎”,负责执行字节码,但本身不包含开发或运行所需的工具和库。 阅读详情

相关推荐

JVM 、JRE 、JDK 和SDK之间的关系

有很多人搞了很长时间的Android了还没有弄清楚JVM 、JRE 、JDK 、SDK的关系,下面对这几个术语进行了详细的阐述。         1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与

sagane的专栏 2492

AGP 8.0 适配 ---- jvm target compatibility

这个属性与Gradle JDK的版本设置是不同的。AGP升级的过程,主要是Gradle JDK的版本的修改,所以为了尽量不影响代码功能,我们应该为java和kotlin代码指定具体的jvmTarget,这个Gradle JDK的升级,只需要适配编译脚本的jdk兼容性,而不需要考虑代码的jdk兼容性。Gradle JDK的选择决定了在构建过程中使用的Java版本。大家从上图可以看出,每次Android编译系统AGP的升级,尤其是大版本的变动,都会导致Jdk的升级,而jdk升级,很容易导致编译出错。

zhuzhumouse的专栏 3166

一下子就弄懂JDK、JRE、JVM和SDK到底是什么了

文章目录总结官方解释 总结 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试

流楚丶格念的博客 6873

Java开发环境简介(JDK、JRE、JVM)

Java开发环境简介(JDK、JRE、JVM)

林隐的博客 2万+

1.3、云计算HCIP融合存储产品及部署

目标:描述Oceanstor V3系列存储产品系统组成及产品定位 描述Oceanstor V3硬件结构及软件架构 掌握存储系统与主机系统之间的连接 一、存储型号 低端型存储:Oceanstor 2200 2600 2800 V3/V5 终端型存储:Oceanstor 5300 5500 5600 5800 6800 V3/V5 高端型存储:Oceanstor 18000 二、Oceanstor V3系列存储系统定位 OceanStor V3系列存储系统是华为根据存储产品应用现状和存储

weixin_43666279的博客 1655

机器学习之支持向量机SVM及代码示例

一、线性可分SVMSVM算法最初是用来处理二分类问题的,是一种有监督学习的分类算法。对于线性可分的二分类问题,我们可以找到无穷多个超平面,将两类样本进行区分。(超平面:一维中是一个点;二维中是一条线;三维中是一个面……)在上面的多个超平面中,它们都可以成功将样本集划分两边,但哪一个超平面更好?一般来说,当样本点离超平面越近,样本的标签为某类型的概率应该为0.5左右,确信度比较低,而样本点离超平面越远

cxmscb的博客 5万+

一文理解JDK、JRE、JVM

JRE(Java Runtime Environment):JRE 是 Java 运行时环境,它包含了 Java 虚拟机(JVM)和 Java 类库。JRE 提供了 Java 应用程序运行所需的环境,包括虚拟机、类加载器等。JVM(Java Virtual Machine):JVM 是 Java 虚拟机,它是 Java 代码运行在计算机上的实现。JDK(Java Development Kit):JDK 是 Java 开发工具包,它包含了 Java 编译器、Java 运行时环境(JRE)和一些开发工具。

huanchen2018的博客 1769

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

JDK、JRE、JVM的区别以及JVM详解

Jdk与Jre与Jvm,Jvm详解 1、Jdk Jdk(Java development kit): Jdk是Java语言的软件开发工具包,是Java程序开发的核心所在。程序员如果需要学习Java语言的相关编程,都需要搭建好安装好Jdk,Jdk中包含了Java的运行环境(Jre)、Java工具和Java基础的类库。 Jre(Java Runtime Enviroment):Java的运行环境,Jre的内部具有一个Java虚拟机(Jvm)以及Java核心类库和支持文件。但不包含开发工具(Jdk)–编译器、调试

weixin_48790183的博客 6697

Discrete Optimization (Coursera) 学习笔记 Week 1 introduction (开个帖子)

Week 1 Introduction 这位教授Pascal Van Hentenryck 真的算是优化领域神级别的人物了吧?截一张Google scholar的图大家感受一下… 居然在Coursera上看到了他开的课:Discrete Optimization。试听了几节后,发现讲得很有激情,而且深入浅出。遂决定花暑假跟完这一门课。 这门课每周花两三个小时介绍基础概念,然后得花十几个小时写作业(coding)… 一开始以为Coursera上的课的作业应该不会太难,然后第一次作业(knapsack)我就被

ZJ_11701的博客 659

小新学习K8s第一天之K8s基础概念

kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。kubernetes服务,支持和工具随处可见。作用:用于自动部署,扩展和管理“容器化应用程序”的开源系统。可以理解成k8s是负责自动化运维管理多个容器化程序(比如docker)的集群,是一个生态及其丰富的容器编排框架工具。

pangdongqiqi的博客 1229

弄懂JDK、JRE和JVM到底是什么

JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java

雨日微风 5万+

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 993

JDK 和JVM

现代 JDK 已内置 JRE。

2401_82686243的博客 1185

语言大模型之Tokenization的深入理解

Tokenization(分词)是自然语言处理(NLP)中一个非常重要的步骤,它的目标是将文本转换为模型可以理解的格式。对于像GPT、BERT等大型预训练模型来说,tokenization决定了文本如何转化为数字表示,从而影响模型在不同任务中的表现。接下来我会深入介绍tokenization的过程、不同的tokenization方法,以及它与模型微调(fine-tuning)之间的关系。

JustinMars的博客 345

Windows部署OpenClaw报错不断?这篇环境配置指南帮你解决难题

想在Windows上部署OpenClaw却频频报错?🔧 本文详细梳理了OpenClaw部署必需环境的安装步骤和官方下载地址 📦,提供完整的验证清单和常见问题排查方法,帮你一次性搞定所有环境配置,顺利部署OpenClaw ✅

XiaoqiangClub的博客 6660

JDK、JRE 和 JVM 的区别

JDK、JRE 和 JVM 的区别

听海边涛声 909

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JDK、JRE 和 JVM 的区别和联系

JRE 还包括其他的 Java API,用于访问不同领域的功能和服务,如数据库访问(JDBC)、XML 处理(Java XML API)、安全性(Java Security API)等。:JDK 提供了各种开发工具,包括调试器(jdb)、文档生成工具(javadoc)、性能分析器、反编译器等,这些工具帮助开发人员编写、测试和优化 Java 代码。:JDK 包括了 Java 编程语言的核心类库,这些库包含了许多常用的类和方法,用于各种任务,如字符串处理、集合操作、文件操作、输入输出等。

qq_51118755的博客 3128

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Jdk和Jre和JVM的区别

Java虚拟机(Java Virtual Machine, JVM)是Java运行环境的核心组件,它是一种虚拟机,专门用于运行Java字节码。JVM提供了一种独立于操作系统和硬件的运行环境,使得Java程序可以在不同的平台上运行而无需修改。这种“编写一次,到处运行”的特性得益于JVM的设计。Java运行时环境(Java Runtime Environment, JRE)是Java程序运行所需的运行环境。JRE包括JVM和Java类库以及其他支持文件。

Flying_Fish_roe的博客 1037

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JDK, JRE, 和 JVM 的解释

在Java编程中,JDK(Java Development Kit,Java开发工具包)、JRE(Java Runtime Environment,Java运行环境)和JVM(Java Virtual Machine,Java虚拟机)是三个核心概念,它们在Java应用程序的开发、部署和运行中扮演着不可或缺的角色。JDK提供了开发Java程序所需的工具和库,JRE提供了运行Java程序所需的环境,而JVM则是Java程序的执行引擎。而JRE是运行Java程序所需的最小环境,它包含了JVM和Java核心类库。

wangnvshibeib的博客 663

JDK、JRE和JVM三者的关系和安装

JDK、JRE和JVM三者的关系和安装

Serven的博客 1万+

Java JVM、JRE和JDK

Java JVM、JRE和JDK

sanmansan的博客 598

JDK、JRE 和 JVM的区别

组成:1. JRE 2. 编译器(`javac`)3. 调试工具(如 `jdb`) 4. 其他开发工具(如 `javadoc`、`jar` 等)组成:1. JVM 2. Java 标准库(如 `java.lang`、`java.util` 等)。定义:JRE 是运行 Java 程序所需的环境,包含 JVM 和运行 Java 应用程序所需的核心类库。定义:JVM 是 Java 程序的运行环境,负责执行 Java 字节码(.class 文件)。用途:JDK 用于开发和编译 Java 程序。

weixin_46455584的博客 540

JDK,JRE和JVM之间的区别

JVM JVM是什么? JVM(java虚拟机)是一个抽象机器。 它是一个提供可以执行Java字节码的运行时环境的规范。 它是指定Java虚拟机工作的规范。但具体实现是JRE。 运行时实例只要在命令提示符上编写java命令来运行java类,就会创建JVM实例。 JVM可用于许多硬件和软件平台。JVM,JRE和JDK是平台相关的,因为每个OS的配置不同。但是,Java是平台无关的...

Samuel·宣的博客 3474

jdk,jre,jvm三者的联系和区别

文章目录一、什么是JDK?二、什么是JRE?三、什么是JVM?总结 一、什么是JDK? JDK(java develpment kit) Java开发工具包 提供给开发人员来使用的开发Java程序,包含了Java开发常用的一些工具类、依赖包和类库,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。 二、什么是JRE? JRE (Java runtime environment ) Java 运行时环境。 JRE是一个软件包,它捆绑了libraries(jar)和JVM,以及用Java编写的应用程

qq_47125845的博客 469
上一篇: 面试官:如何用一段代码证明JVM加载类是懒加载模式
下一篇: 最全的Spring知识总结成长为阿里Java架构师(附学习路线图)
MIC_java01
博客等级 码龄4年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值