JVM、JRE、JDK三者之间的关系

 JVM、JRE和JDK是与Java开发和运行相关的三个重要概念。 

 再了解三者之前让我们先来了解下java源文件的执行顺序: 

  1. 使用编辑器或IDE(集成开发环境)编写Java源文件.即demo.java
  2. 程序必须编译为字节码文件,javac(Java编译器)编译源文件为demo.class文件.
  3. 类文件可在任何平台/操作系统上由JVM(Java虚拟机)执行(能一次编译,到处运行就是因为JVM)。
  4. JVM将字节码文件翻译为机器可以执行的机器码(0,1二进制)。

一、JVM

        JVM(Java Virtual Machine,Java虚拟机): JVM是Java程序运行的环境,它是Java平台的核心组成部分。它负责解释并执行Java字节码(由Java源代码编译而成),提供了对硬件和操作系统的抽象,使得Java程序可以在不同的系统上运行。JVM还提供了垃圾回收、内存管理、安全性等功能,以确保Java程序的可靠性和安全性。JVM之所以称为虚拟机,是因为它提供了一个不依赖于底层操作系统和机器硬件体系结构的机器接口,在执行字节码时,把字节码解释成具体平台上的机器指令执行。所以java可以一次编写到处运行。

二、JRE(运行环境)

        JRE(Java Runtime Environment,Java运行时环境): JRE是Java应用程序的运行时环境,它包含了JVM以及Java基础类库和所需的运行时资源。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。JRE提供了Java程序运行所需的一切,包括类加载、字节码解释、垃圾回收等功能。如果只需要运行Java应用程序而不需要进行开发,只需安装JRE即可。

三、JDK(开发环境)

        JDK(Java Development Kit,Java开发工具包): JDK是用于开发Java应用程序的工具包,它包含了JRE以及编译器、调试器、开发工具和其他一些辅助工具。JDK提供了开发Java应用程序所需的一切,包括编译、调试、文档生成、性能分析等工具。如果需要进行Java应用程序的开发,需要安装JDK。

区别:

  • JVM是Java程序运行的虚拟机,提供了对字节码的解释和执行。
  • JRE是Java应用程序的运行时环境,包含了JVM和运行时所需的类库等资源。
  • JDK是用于开发Java应用程序的工具包,包含了JRE以及开发工具、编译器等。

简而言之,JVM负责运行Java程序,JRE提供运行Java程序所需的一切,而JDK是开发Java程序所需的工具包。

JVM<JRE<JDK。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/68792.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣:59. 螺旋矩阵 II(Python3)

题目&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全…

日期切换

组件&#xff1a;<template><div class"time-picker"><el-radio-group size"small" v-model"timeType" change"changePickerType"><el-radio-button label"hour" v-if"isShow">时</el…

Open_PN笔记

>>>仅用作学习用途 1.准备好需要用到的工具 官网下载地址&#xff1a; openvpn 客户端下载地址&#xff1a; https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.5-I601.exe EasyRSA下载地址&#xff1a; https://githu…

Koan自动重装和Cobbler_web

Koan是Cobbler的辅助工具&#xff0c;可以实现很多功能&#xff0c;使用koan配合Cobbler可以实现快速重装Linux系统&#xff1a; 1、安装koan&#xff1a; yum install -y epel-releaseyum install -y koan 安装截图&#xff1a; 2、在客户机上&#xff0c;用koan选择要重装的…

可以重复烧写的语音ic有哪些特征和优势

目录 一、简介可擦写的语音芯片&#xff0c;其实就是MCUflash的架构&#xff0c;无其他说法&#xff0c;就这一种说法。这个就是它最大的特征尤其是SOP8的封装类型的芯片&#xff0c;是区别于OTP类型的另一个品类&#xff0c;基本上OTP的语音芯片适用的场景。他都可以满足和替代…

文件系统目录结构

1. 目录结构 linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录/ &#xff0c;然后在此目录下再创建其他的目录。 在linux中&#xff0c;一切皆文件(Linux将所有的设备、文件、进程等都当做文件来处理) 2. 目录作用具体介绍 目录名解析/b…

js玩儿爬虫

前言 提到爬虫可能大多都会想到python&#xff0c;其实爬虫的实现并不限制任何语言。 下面我们就使用js来实现&#xff0c;后端为express&#xff0c;前端为vue3。 实现功能 话不多说&#xff0c;先看结果&#xff1a; 这是项目链接&#xff1a;https://gitee.com/xi1213/w…

【云原生】kubernetes中容器的资源限制

目录 1 metrics-server 2 指定内存请求和限制 3 指定 CPU 请求和限制 资源限制 在k8s中对于容器资源限制主要分为以下两类: 内存资源限制: 内存请求&#xff08;request&#xff09;和内存限制&#xff08;limit&#xff09;分配给一个容器。 我们保障容器拥有它请求数量的…

【Spring专题】Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)

目录 前言阅读指引阅读建议 课程内容一、生成BeanDefinition1.1 简单回顾1.2 概念回顾1.3 核心方法讲解 二、方法讲解2.1 ClassPathBeanDefinitionScanner#scan2.2 ClassPathBeanDefinitionScanner#doScan2.3 ClassPathScanningCandidateComponentProvider#findCandidateCompon…

SpringBoot 整合JDBC

SpringData简介 Sping Data 官网&#xff1a;https://spring.io/projects/spring-data数据库相关的启动器 &#xff1a;可以参考官方文档&#xff1a;https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter 整合JDBC 创建测试项目测试数据…

访企聚力促创新:长安大学来访闪马智能

7月31日&#xff0c;长安大学运输工程学院院长葛颖恩教授、学院副书记李婷以及学办主任董彬一行来访闪马智能&#xff0c;闪马智能创始人兼CEO彭垚、城市交通行业总经理兼营销副总裁詹诚以及公共交通行业总经理熊天圣等出席了本次交流会。 长安大学运输工程学院院长葛颖恩教授…

人人都是系统装机高手,利用windows官方的工具,安装超简单

前言 电脑出故障了或者C盘文件饱满、电脑系统卡顿&#xff0c;第一个想法就是重装系统&#xff0c;在网上搜一下&#xff0c;各种重装系统的镜像层出不穷&#xff0c;该怎么去选择呢&#xff1f;我适合很多方法&#xff0c;最后选择了微软官方的系统安装工具。因为系统纯净&am…

LeetCode209. 长度最小的子数组

题目&#xff1a;LeetCode209. 长度最小的子数组 描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子…

渠道订货管理:品牌商建立渠道连接的纽带

当品牌商&#xff08;厂商&#xff09;渠道拓展到一定规模&#xff0c;处理不同渠道交易数据&#xff0c;面对信息流、物流、资金流链路&#xff0c;提升厂商端、经销商端、终端门店的订货体验就会变得尤为重要&#xff0c;特别是一些实力级厂商&#xff0c;渠道下沉能够掌握终…

[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

题目链接&#xff1a; 数制转换https://www.nowcoder.com/share/jump/437195121691734210665 描述 求任意两个不同进制非负整数的转换&#xff08;2进制&#xff5e;16进制&#xff09;&#xff0c;所给整数在long所能表达的范围之内。 不同进制的表示符号为&#xff08;0&a…

Paragon NTFS15安装包下载免费版ntfs磁盘读写工具

Paragon NTFS for Mac 15 简体中文标准版轻量级的快捷菜单&#xff0c;可执行挂载、卸载和验证操作。软件设计优秀&#xff0c;与 macOS 无缝衔接&#xff0c;操作简单。轻量级的快捷菜单&#xff0c;可执行挂载、卸载和验证操作。软件设计优秀&#xff0c;与 macOS 无缝衔接&a…

安卓13不再支持PPTP怎么办?新的连接解决方案分享

随着Android 13的发布&#xff0c;我们迎来了一个令人兴奋的新品时刻。然而&#xff0c;对于一些用户而言&#xff0c;这也意味着必须面对一个重要的问题&#xff1a;Android 13不再支持PPTP协议。如果你是一个习惯使用PPTP协议来连接换地址的用户&#xff0c;那么你可能需要重…

【BASH】回顾与知识点梳理(二十二)

【BASH】回顾与知识点梳理 二十二 二十二. Linux 账号管理22.1 Linux 的账号与群组使用者标识符&#xff1a; UID 与 GID使用者账号/etc/passwd 文件结构/etc/shadow 文件结构 关于群组&#xff1a; 有效与初始群组、groups, newgrp/etc/group 文件结构有效群组(effective grou…

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2&#xff08;Web&#xff09;与 Vue3&#xff08;VSCode、lDEA&#xff09;中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码&#xff0c;还能为后续升级 Vue3 减少一定阻碍。 那么&#xff0c;同时兼容 Vue…

爬虫017_urllib库_get请求的quote方法_urlencode方法_---python工作笔记036

按行来看get请求方式 比如这个地址 上面这个地址复制粘贴过来以后 可以看到周杰伦变成了一堆的Unicode编码了 所以这个时候我们看,我们说https这里,用了UA反爬,所以这里 我们构建一个自定义的Request对象,里面要包含Us