JDK version

Long-Term Support Releases

  • Supported for years
  • For example, Java 8, 11, 17

Feature Releases

  • Supported for six months
  • For example, Java 9, 10, 12, 13, 14, 15, 16

JDK vs OpenJDK

Java-JDK,JRE和JVM的区别和联系_java

Java安装目录


本地成功安装JDK之后目录如下:

  Java-JDK,JRE和JVM的区别和联系_jar_02

 

Java环境变量设置

  • JAVA_HOME: C:\Program Files\Java\jdk1.8.0_191;
  • CLASSPATH: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
  • Path: %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin

tools.jar包含Java各种高级功能的实现,是java必不可少的。

path\bin里都是java的可执行的编译器及其工具,如java, javadoc等。

javac依赖于JDK环境变量的设置。

Java-JDK,JRE和JVM的区别和联系_java_03


JDK

  Java Development Kit, Java开发工具包。针对开发者,主要包含jre, jvm, jdk源码包,以及bin文件夹下用于开发、编译运行的指令器集。   JRE

  Java Runtime Environment, Java运行时环境。针对java用户,拥有可运行的.class文件包(jar或者war)的用户。主要包含了jvm和java运行时基本类库(rt.jar)。   rt.jar:java源码编译成的jar包(解压出来看一下)。用Eclipse开发时,Ctrl点击无法跳转到源文件,需要把rt.jar对应的源码包加进来,源码包正是jdk文件夹下的src.zip。   JVM

  Java Virtual Machine, Java 虚拟机,是java实现跨平台的最核心的部分。所有的java程序会首先被编译为.class的字节码文件,该文件可以在虚拟机上执行。

JDK与JRE


JDK内部包含了一套JRE,与外部的JRE是一致的(外部JRE在安装JDK时可选)。JDK内部的JRE有什么用?因为java,javac等命令最终是java实现的,所以执行javac等命令需要JRE。   Java-JDK,JRE和JVM的区别和联系_java_04


JDK目录解析


bin:  存度放编译器和工具,最主要的是编译器(javac.exe);   include: java与JVM交互作用的头文件   lib: 类库   jre: java运行环境   src.zip: 类库源文件  

JRE与JVM


JVM不能单独搞定class的执行,解释class时JVM需要调用解释器所需要的类库lib。   JVM + Lib = JRE

  Java-JDK,JRE和JVM的区别和联系_java_05

  jvm.dll启动之后,调用动态链接库(.dll文件)(必须位于jvm.dll所在目录的父级目录)。  

JDK, JRE与JVM的关系


Java-JDK,JRE和JVM的区别和联系_编译器_06