本文翻译自What is the difference between JVM, JDK, JRE & OpenJDK?,如有不恰当之处,欢迎留言指出。
观点一:
- JVM:Java虚拟机用以运行Java二进制代码,它不认识Java的源代码,所以咱必须将*.java文件编译得到 *.class字节码文件,*.class文件中包含的二进制代码可以被JVM所理解。这也使得Java成为了一种便携式语言——一次编写,到处运行。诚然,在不同的操作系统中,JVM会有不同的实现,但最终目的都是得到相同的结果。 - JDK and JRE:为了更好地理解两者之间的差异,最好的方式是阅读Oracle的官方文档以及参考图: - JRE:提供了Java库,Java虚拟机和一些其他组件来运行由Java编程语言编写而成的applets和程序。JRE的两个重要的部署技术是:Java Plug-in,它使得applets能够雨雪宁在主流浏览器上;Java Web Start,它能将脱机应用程序部署在网络上,也是Java2E用以企业级软件开发的基础。JRE不包含譬如编译器和debugger等此类工具。 - JDK:JRE是JDK的子类,JDK包含JRE中的所有组成。 - OpenJDK:是JavaSE7的开源实现,现在的JDK和OpenJDK之间几乎没有任何差异。
观点二:
- JVM是Java虚拟机的缩写——Java虚拟机运行的是Java的二进制代码 - JDK是Java开发者工具包——用以编译Java源代码 - JRE是Java运行时环境——用以运行Java程序,包含Java虚拟机和一些别的组成。 - OpenJDK是具体的JDK的实现。
- 总结:如果你是一名Java开发人员,你的开发中将需要JDK。其中包含JVM和JRE;但是你要只是个喜欢玩在线游戏的普通的用户,你只需要JRE。也就是说:JDk是“老爷子”,JRE是“老子”,JVM是”儿子”。