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

news2024/10/7 10:23:45

总结

JDK包含JRE,JRE包含JVM。

JDK (Java Development Kit)----Java开发工具包,用于Java程序的开发。
JRE (Java Runtime Environment)----Java运行时环境,只能运行.class文件,不能编译。
JVM (Java Virtual Machine)----Java虚拟机,Java运行时环境。

JDK

JDK (Java Development Kit),Java开发工具包,用于Java程序的开发,针对开发者。

JDK是整个Java的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

Java API是Java的应用程序接口,里面有很多已经写好的Java Class,包括一些重要的语言结构以及基本图形,网络和文件I/O等等,我们可以直接调用使用。

JRE

JRE (Java Runtime Environment),Java运行时环境,只能运行.class文件,不能编译,针对用户。

JRE,包含了一个JVM(Java虚拟机),与Java核心类库与其所支持的文件。与JDK不同,它不包含开发工具—-编译器、调试器和其它工具。

JRE,是运行Java程序必不可少的,编写好的Java程序必须要JRE才能运行,如果想运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JVM

JVM (Java Virtual Machine),Java虚拟机,Java运行时环境。

Java虚拟机,是一种虚构出来的计算机,是通过在实际的计算机上模拟仿真各种计算机功能来实现的。

JVM功能:将字节码文件(扩展名为.class的文件)解释成具体系统平台的机器指令。

JVM,是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。 


JAVA一次编译到处运行

Java一次编译到处运行,是通过JVM屏蔽了底层系统(windows linux Max等等)的差异来实现的。java程序运行在JVM(java虚拟机)中,而JVM运行在操作系统之上,JVM内部做了不同操作系统之间的适配,所以,操作系统之间的差异性并不会影响输出结果的一致性。

三者之间的关系

  1. 有JVM就可以解释执行字节码文件(.class)。
  2. JVM解释执行这些字节码文件的时候需要调用类库,如果没有这些类库JVM就不能正确的执行字节码文件,JVM+类库=JRE。
  3. 有了JRE就可以正确的执行java程序了,但是光有JRE不能开发Java程序,所以JRE+开发工具=JDK,有了JDK,就可同时开发,执行JRE。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决 前端显示后端返回的null值为 1的问题

一 、问题描述 一个产品信息,有一个输入框的数据是后端返回回显出来的 但是后端返回这个字段时候,这个字段为空值,在后端就根本在data中没有返回这个字段任何信息 如返回的data {name : 123,age: 18} 因为age 为空,实际后端返回…

云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

前言: 云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)_晚风_END的博客-CSDN博客 前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,…

pt19盒模型布局

CSS 盒模型 内容尺寸overflow(占用内容框) 一般情况下,为元素设置width/height,指定的是内容框的大小 内容溢出:内容超出元素的尺寸范围,称为溢出。默认情况下溢出部分仍然可见,可以使用overflow调整溢出部分的显示…

【枚举】CF1833 D

Problem - D - Codeforces 题意: 给定一个序列,让你找一个区间,翻转区间内的数,交换前缀和后缀,让结果数组的字典序最大 思路: 观察样例可知,r是可以直接确定的,l是不确定的&…

使用Docker构建Nginx镜像并部署Web应用

文章目录 1. 简介2. 准备工作3. 编写Dockerfile4. 编写nginx.conf5. 构建镜像6. 查看镜像是否构建成功7. 运行容器8. 访问Web应用9. 总结 1. 简介 Docker是一个开源的容器化平台,它可以帮助我们快速构建、发布和运行应用程序,实现应用程序的环境隔离和依…

DevOps初识

博主入职了,正在学习一些在学校没有接触过的东西,在此进行记录~~~~ 背景 随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发—测试—发布)模式已经不能满足快速交付的需求。打破开发和运维的壁垒,聪…

K8S初级入门系列之三-Pod的基本概念和操作

一、前言 Pod的原意是豌豆荚的意思,一个豆荚里面包含了很多豆子。在K8S中,Pod也是类似的意思,只不过这里的豆子就是容器。在K8S初级入门系列之一-概述中,我们对Pod有个初步的了解。 1、Pod是K8S编排和调度的最小基础单元。 了解容…

ChatGPT助力校招----面试问题分享(十二)

1 ChatGPT每日一题:运算放大器与比较器的区别 问题:运算放大器与比较器的区别 ChatGPT:运算放大器和比较器都是电子电路中常用的模拟电路元件,但它们的设计和应用略有不同。下面是两者的主要区别: 功能不同&#xf…

微服务——Nacos配置管理

目录 Nacos配置管理——实现配置管理 配置管理实践 Nacos配置管理——微服务配置拉取 Nacos配置管理——配置热更新 方式一: ​编辑 方式二(推荐方式): Nacos配置管理——多环境配置共享 优先级问题 Nacos配置管理——nacos集群搭建 总结​编辑 Nacos配置管理——实现配置管…

Linux 云服务器上部署 web 项目

目录 1)安装 jdk 2)安装 tomcat 3) 设置安全组 4)安装mysql 5) 建库建表 6) 打包部署 1)安装 jdk 使用包管理器进行安装 常用的包管理器 yum (centos 自带的包管理器) apt pacman 我们使用 yum 来进行安装程序 yum list 查看当前的软件包有哪些 命令: yum list | gre…

Oracle 列出一天内每5分钟一条数据

select trunc(sysdate) (rownum-1) / (24*60/5) time from dual connect by rownum < 24*60/5效果如图&#xff0c; 类似的 列出一年内每天、每个月也是用connect by搭配rownum使用

记一次Mysql慢SQL优化过程

缘起 最近有个同事让我看看一个测试环境的SQL&#xff0c;因为这个SQL执行了几十秒&#xff0c;导致接口超时了。 sql为(里面表名已经使用test_table开头的表名脱敏&#xff0c;返回的字段使用*脱敏&#xff0c;别名未修改)&#xff1a; select* fromtest_table1 e join test…

分布式文件存储与数据缓存 FastDFS

一、FastDFS概述 1.1 什么是分布式文件系统 单机时代 初创时期由于时间紧迫&#xff0c;在各种资源有限的情况下&#xff0c;通常就直接在项目目录下建立静态文件夹&#xff0c;用于用户存放项目中的文件资源。如果按不同类型再细分&#xff0c;可以在项目目录下再建立不同的…

【Linux -- systemctl管理服务】

Linux – systemctl管理服务 文章目录 Linux -- systemctl管理服务一、通过systemctl管理单一服务(service unit)二、通过systemctl查看系统上所有的服务三、通过systemctl管理不同的操作环境(target unit)四、通过systemctl分析各服务之间的依赖性总结 一、通过systemctl管理单…

ssh打开远程vscode

如果想要远程打开其他终端的vscode&#xff0c;首先要知道远程终端的ip地址和用户名称以及用户密码 1、打开本地vscode 2、点击左下角蓝色区域 3、页面上部出现如下图&#xff0c;点击ssh&#xff0c;我这里已经连接&#xff0c;所以是connect to host 4、选择Add New SSH Host…

系统架构设计师-软件架构设计(1)

目录 一、软件架构的概念 1、架构的本质 2、架构的作用 二、架构发展历史 三、架构的 “4 1” 视图 1、逻辑视图&#xff08;Logical View&#xff09; 2、开发视图&#xff08;Development View&#xff09; 3、进程视图&#xff08;Process View&#xff09; 4、物理视图…

Python操作文件:从入门到“悟”

一、打开文件 Python里面打开文件可以使用内置的open函数。 open函数的定义如下&#xff1a; def open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue): # known special case of open常用参数介绍&#xff1a; file&#xff1a;指定要打…

苹果账号被禁用怎么办

转载&#xff1a;苹果账号被禁用怎么办 目录 禁用的原因 解除Apple ID禁用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKQ1ILhC-1689932607373)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw)]​编辑 …

win10电脑便签常驻桌面怎么设置?

你是否曾经因为繁忙的工作而忘记了一些重要的事项&#xff1f;相信很多人都会回答&#xff1a;忘记过&#xff01;其实在快节奏的职场中&#xff0c;我们经常需要记录一些重要的信息&#xff0c;例如会议时间、约见客户时间、今天需要完成的工作任务等。而为了能够方便地记录和…

【简单认识MySQL函数和高级语句】

文章目录 一.常用查询1.按关键字排序&#xff08;ORDER BY 语句&#xff09;1、语法格式2、 ASC和DESC的排序概念3、举例1、按分数排序&#xff0c;默认不指定是升序排列2、分数按降序排列3、order by 还可以结合where进行条件过滤&#xff0c;筛选地址是南京的学生按分数降序排…