【Java基础系列】JDK、JRE和JVM之间到底是什么关系

84 阅读3分钟

JDK

全称Java Development Kit Java,Java开发工具,是Java语言的软件开发工具包,是整个Java开发的核心,它包含了Java开发工具,Java的运行时环境以及Java基础类库。

JDK包含的开发工具有:

  • javac——编译工具,用于将Java源程序编译成.class字节码文件
  • jar——打包工具,将相关的类文件打包成一个jar格式的文件
  • javadoc——文档生成器,从源码注释中提取文档
  • jdb——debugger,查错工具
  • java——运行编译后的java程序(.class后缀的)
  • javah——产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件
  • javap——Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义
  • Jconsole——Java进行系统调试和监控的工具
  • jps——查看Java虚拟机进程列表
  • appletviewer——小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器

JDK的几个版本:

  • SE(JavaSE),standard edition,标准版
  • EE(J2EE),enterprise edition,企业版
  • ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序

JDK版本历史:

版本名称发行日期
JDK 1.1.4Sparkler(宝石)1997-09-12
JDK 1.1.5Pumpkin(南瓜)1997-12-13
JDK 1.1.6Abigail(阿比盖尔–女子名)1998-04-24
JDK 1.1.7Brutus(布鲁图–古罗马政治家和将军)1998-09-28
JDK 1.1.8Chelsea(切尔西–城市名)1999-04-08
J2SE 1.2Playground(运动场)1998-12-04
J2SE 1.2.1none(无)1999-03-30
J2SE 1.2.2Cricket(蟋蟀)1999-07-08
J2SE 1.3Kestrel(美洲红隼)2000-05-08
J2SE 1.3.1Ladybird(瓢虫)2001-05-17
J2SE 1.4.0Merlin(灰背隼)2002-02-13
J2SE 1.4.1grasshopper(蚱蜢)2002-09-16
J2SE 1.4.2Mantis(螳螂)2003-06-26
J2SE 5.02004-09
Java SE 5.0 (1.5.0)Tiger(老虎)2004-09-30
Java SE 6.0 (1.6.0)Mustang(野马)2006-04
Java SE 7.0 (1.7.0)Dolphin(海豚)2011-07-28
Java SE 8.0 (1.8.0)Spider(蜘蛛)2014-03-18
Java SE 92017-09-21
Java SE 102018-03-14
Java SE 112018-09-26
Java SE 122019-03-20
Java SE 132019-09-17
Java SE 142020-03-17
Java SE 152020-09
Java SE 162021-03
Java SE 172021-09
Java SE 182022-03-22 [4]
Java SE 19 [5]2022-09-20

从以上表格我们可以看到,我们经常提及的JDK7和JDK8也可以称作JDK1.7和JDK1.8,但是2017年后的JDK9就不能叫JDK1.9了。

JRE

全称Java Runtime Environment,Java运行时环境,JRE包含在JDK中,提供了运行Java程序所需要的环境,包括Java虚拟机和Java核心类库,JRE自带的类库主要是jre\lib\rt.jar这个文件。如果只需要运行Java程序,只需配置JRE即可。

JVM

全称Java Virtual Machine,Java虚拟机,JVM包含在JRE中,可以理解为是一个架构在系统平台上的平台,起到承上启下的作用,将javac编译生成的.class字节码通过解释或者编译(JIT,AOP)的方式转换成适用与当前平台的机器指令。正是用为JVM的存在,才使Java拥有“一次编译,处处运行”的跨平台特性。目前主流的Java虚拟机当属HotSpot VM,而Android所使用的是Dalvik VM(5.0之前)和ART VM

JDK JRE JVM三者关系

用一张图表示:JDK ⊇ JRE ⊇ JVM

JDK JRE JVM.png