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

总结

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。
相关推荐
金銀銅鐵22 分钟前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
catchadmin25 分钟前
PHP 8.7 协程新提案 让跨协程代码共享请求身份
开发语言·php
福建佰胜张工1 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
念何架构之路1 小时前
go-grpc设计思想
开发语言·后端·golang
catoop1 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x1 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
酷炫码神2 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
驭渊的小故事2 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客2 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1883 小时前
记录本地安装nacos服务的方法及异常
java·开发语言