JVM全称 Java Virtual Machine,即Java虚拟机,它是java程序的运行平台。解释和运行字节,针对不同的系统(Windows, lunix, MacOS)具有特定的实现,作为代码和系统之间的中间层屏蔽了不同操作系统的差异性。JVM是java语言“一次编译、处处运行”的关键所在,JVM的存在让相同的字节码在不同的系统中运行处相同的结果。
目前使用最广泛的JVM是的OpenJDK内置的HotSpot VM,它的热点代码探测能力可以通过执行计数器找出最具有编辑价值的代码,通知JIT编译器以方法为单位进行编译,通过编译器和解释器协同工作在程序最优响应时间和最佳执行性能中取得平衡。
需要注意的是JVM并不是只有一种, 满足JVM规范的实现都可以称之为JVM,比如JRockit VM、J9 VM、Azul VM 、Zing VM、Taobao VM、Microsoft JVM等。
JRE (Java Runtime rvironment) 是java的运行时环境,运行已编译的java程序所需的所有工具总和,主要包括JVM 、 基础类库 、用户接口工具包等。
JDK(Java Development Kit) 是作为开发工具包提供给java开发者使用,除了包含JRE,还有创建、编译所需要的工具和工具API,包括java编译器javac、可视化监控器jconsole、线程快照生成工具jstack等。
综上,三者关系是JDK包含了JRE和java工具集合,JRE包含JVM和基础类库。