深入理解Java虚拟机(2)--JDK、JRE、JVM的区别

很多程序员已经干了一段时间java了依然不明白jdk、jre以及jvm的区别,尤其是jdk与jre之间的区别。

JDK(Java Development Kit)Java 语言的软件开发工具包(SDK),是面向Java开发人员的使用者,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者(若果只想运行 java 的.class文件,只需要安装JRE就可以了)。

JVM(Java Virtual Machine)Java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

深入理解Java虚拟机(2)--JDK、JRE、JVM的区别

从上图可以看出jre包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等),用来支撑Java程序的运行,jdk包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等

总结

JRE是运行时库,是提供给想运行java程序的用户使用的; JDK是开发工具包, 是提供给Java开发人员使用的,JDK包含了JRE, JRE包含了JVM。