他们明面上的关系是JDK包含JRE,JRE包含JVM。
简单理解JDK就是Java开发工具包。JRE是Java运行环境。JVM是Java虚拟机。
JDK是面向开发者的,JRE是面向JAVA程序的用户的。也就是说开发者开发JAVA程序是需要用到JDK,如果用户不去开发JAVA程序,有现成的JAVA的程序,就可以不去下载JDK直接使用JRE来运行JAVA程序。
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库。所以我们得出结论JVM+lib=JRE。