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.4 | Sparkler(宝石) | 1997-09-12 |
JDK 1.1.5 | Pumpkin(南瓜) | 1997-12-13 |
JDK 1.1.6 | Abigail(阿比盖尔–女子名) | 1998-04-24 |
JDK 1.1.7 | Brutus(布鲁图–古罗马政治家和将军) | 1998-09-28 |
JDK 1.1.8 | Chelsea(切尔西–城市名) | 1999-04-08 |
J2SE 1.2 | Playground(运动场) | 1998-12-04 |
J2SE 1.2.1 | none(无) | 1999-03-30 |
J2SE 1.2.2 | Cricket(蟋蟀) | 1999-07-08 |
J2SE 1.3 | Kestrel(美洲红隼) | 2000-05-08 |
J2SE 1.3.1 | Ladybird(瓢虫) | 2001-05-17 |
J2SE 1.4.0 | Merlin(灰背隼) | 2002-02-13 |
J2SE 1.4.1 | grasshopper(蚱蜢) | 2002-09-16 |
J2SE 1.4.2 | Mantis(螳螂) | 2003-06-26 |
J2SE 5.0 | 2004-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 9 | 2017-09-21 | |
Java SE 10 | 2018-03-14 | |
Java SE 11 | 2018-09-26 | |
Java SE 12 | 2019-03-20 | |
Java SE 13 | 2019-09-17 | |
Java SE 14 | 2020-03-17 | |
Java SE 15 | 2020-09 | |
Java SE 16 | 2021-03 | |
Java SE 17 | 2021-09 | |
Java SE 18 | 2022-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