在介绍这三者之前,首先介绍下java的运行机制,java是一种高级语言,可以简单理解为由一些特定的英文构成的,我们知道机器(计算机)只能识别“01”的二进制机器码,而java的强大之处就在于它的跨平台(操作系统)——一处编译,到处运行(Write once,Run anywhere)。当我们用java写好程序时,然后经过编译成虚拟机可以识别的代码,之后在虚拟机上运行,产生机器可以识别的二进制代码。每个操作系统都有对应的虚拟机(在网上可以下载),所以这就实现了java的跨平台,但虚拟机并不是跨平台的。(此处只是整体说下,看完这篇文章应该就没疑问了)
JVM(java virtual machine)
jvm是java虚拟机,字面意思为一个虚拟的机器,将java编译好的程序在虚拟机上运行然后生成计算机可识别的二进制代码,不同的操作系统有不同的虚拟机,正是因为它的存在,所以实现了java的跨平台(操作系统)性。
JRE(java run environment)
jre就是java的运行环境,它包括虚拟机JVM(java virtual machine)和运行java程序所需要的核心类库(各种java类)。jre是运行java程序必须的,当开发了一个java程序我们可以打包成".exe"(windows系统下)给客户,也可以给客户安装jre,然后让java.class程序直接运行。
JDK(java develop kits)
jdk是java开发工具集,是开发用的,它包括java开发工具和 jre。开发工具包括编译工具(javac.exe)和打包工具(jar.exe)等。jdk包含jre是因为当我们开发完后需要运行看下效果。
三者的关系如下图所示: