JVM、JDK、JRE、JIT 的层次结构是什么?

5
请详细解释以下几点:
  • JDK 是否包含 JRE?
  • JDK 将 .java 转换为 .class,然后 JVM 理解 .class 并将其转换为二进制,那么当操作系统可以直接理解二进制时,JRE 的实际需求是什么?
  • 什么是 openJDK?

(注:JDK 包含 JRE,JRE 将 Java 代码编译成可在计算机上运行的格式,并提供了 Java 核心库。JRE 是 JVM 的执行环境。OpenJDK 是一个开源的 JDK 实现,与 Oracle JDK 不同。)

请查看此链接(http://docs.oracle.com/javase/7/docs/),您将可以清楚地了解JDK、JRE和JVM(Java HotSpot客户端和服务器VM)的概念。不要阅读文字,只需查看图表即可。 - johnchen902
这是一个非常老的问题,但今天谈论它时我遇到了它,我认为以下链接可以帮助澄清“层次结构”或包含关系。总之:1)JDK包含JRE和JVM 2)JRE包含JVM。//来源--> IBM:https://www.ibm.com/cloud/blog/jvm-vs-jre-vs-jdk JAVATPOINT:https://www.javatpoint.com/difference-between-jdk-jre-and-jvm - Caponte
2个回答

6

图片描述

我希望上面的图片描述能够说明答案。

来源:这里


1
图片不错,但JIT不是JVM的一部分,而是JRE的一部分。参考:尽管JIT实际上不是JVM标准的一部分,但它仍然是Java的一个重要组成部分 - Oracle: Understanding JIT - gaborsch

5
Java开发工具包(JDK) 包含开发Java程序所需的工具和运行程序所需的JRE。这些工具包括编译器(javac.exe)、Java应用程序启动器(java.exe)、Appletviewer等等。编译器将Java代码转换成字节码,Java应用程序启动器打开一个JRE,加载类并调用其主方法。如果您想编写自己的程序并进行编译,则需要JDK。对于运行Java程序,只需要JRE就可以了。

JRE是针对Java文件的执行而设计的,即JRE = JVM + Java Packages Classes(例如util、math、lang、awt、swing等)+运行时库。 JDK主要面向Java开发。

OpenJDK(Open Java Development Kit)是Java平台标准版(Java SE)的免费和开源实现。

即时编译器(JIT) 是Java™ Runtime Environment的组件,可以在运行时提高Java应用程序的性能。

您可以在此处获取整个概念图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接