JVM、JRE、JDK区别和联系

JVM(java virtual machine):Java虚拟机主要包括类加载器、执行引擎、本地接口和运行时数据区,其中运行时数据区是JVM的主要部分。JVM的主要作用是将class文件中的二进制数据加载到运行时数据区的方法区,在堆区生成相应的java.lang.Class对象,并结合本地接口,通过执行引擎执行java程序。 编写的java源程序(.java格式的文件)需要被编译为类文件(.class格式的文件),才能被java虚拟机识别(JVM只能识别class文件),JVM识别class文件中的字节码指令并调用操作系统向上的API完成动作。JVM是与平台(平台就是指计算机的操作系统,如:Windows、Linux、Mac等操作系统)有关的,不同的平台具有不同的JVM,所以,JVM不具有跨平台性。同一段代码在编译后生成的字节码是一样的,同一段字节码在不同的JVM实现上会映射到不同系统的API调用,从而实现代码的不加修改即可跨平台运行。因此,Java代码能够跨平台运行的核心在于JVM。class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。但是,只有JVM还不能完成class文件的执行,因为在解释class的时候,JVM需要调用解释所需要的类库lib,而jre包含lib类库。

JRE(Java Runtime Environment):Java运行时环境,是运行基于Java语言编写的程序所不可缺少的运行环境。JRE主要包含jvm的标准实现和Java的一些基本类库两个部分,它相对于jvm来说,多出来的是一些Java基本类库。在jre的安装目录下面有两个文件夹bin和lib,可以简单认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib加在一起就称为jre。如果只是运行java程序,而不开发java程序(即不写java代码),可以在操作系统上只安装JRE,而不用安装JDK。比如在服务器上只是部署并运行java程序,而不开发java程序,只需要在服务器上安装JRE,将开发好的java程序部署到服务器上,启动运行即可。

JDK(Java Development Kit):java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果需要运行java程序,只需安装JRE即可。如果需要编写java程序,就需要安装JDK。由于JDK中包含了JRE,如果计算机中安装了JDK,不仅可以开发java程序,还可以运行java程序。JRE可以单独安装,一般不建议单独安装JRE,只需安装JDK即可。

Java 的编译器、解释器

JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。

Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的"机器语言"。javac.exe可以简单看成是Java编译器。

Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。

相关推荐
点心的游戏开发世界9 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
phltxy9 小时前
C语言操作符详解
java·c语言·算法
步行cgn10 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl10 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
事圆则缓11 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i11 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路11 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
嘿嘿-6612 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
统计学小王子12 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研13 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while