【Java】:JDK、JRE、和JVM之间的关系

Java是一门半编译型、半解释型语言 。先通过javac编译程序把源文件进行编译,编译后生成的 .class 文件是由字节码组成的与平台无关 、面向JVM 的文件。最后启动Java虚拟机 来运行 .class 文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

JDK与JRE简介

JDK(Java Develop Kit) ,是Java开发工具包。开发Java程序必须有Java开发环境,即JDK开发工具包,这个工具包包含了编译、运行、调试等关键命令。

其基本组件有:

  • javac------编译器,将源程序转成字节码。
  • jar------打包工具,将相关的类文件打包成一个文件。
  • javadoc------文档生成器,从源码注释中提取文档。
  • jdb------debugeer,查错工具。

JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为Private Runtine,包含了用于产品环境的各种库类,以及给开发人员使用的补充库。

JVM简介

JVM(Java Virtual Machine),是一种用于计算设备的规范,它是一个虚拟出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现。

JVM为何会存在?

Java的一个非常重要的特点就是与平台的无关性,而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入虚拟机后,Java在不同的平台上运行时就不需要再重新编译。

Java使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java编译程序只需要生成在Java虚拟机上运行的代码(字节码),就可以在多种平台上不加修改地运行。

Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行,这就是Java能够"一次编译,到处运行"的原因。

JVM对其实现的某些方面给出了具体的定义,特别是对Java的可执行代码,即字节码(Bytecode)的格式给出了明确的规格。

JVM运行原理如图:

JDK、JRE、和JVM之间的关系

JDK中包含了JRE,JRE又包含JVM。

相关推荐
kimnoic3 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
别动我齐刘海4 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
必须得开心呀4 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
code2cat5 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe5 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码5 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling6 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用6 小时前
Java Web 7-10
java·servlet
沫璃染墨6 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss