JVM、JRE、JDK之间的关系

在计算机开发语言的历史中,从来没有哪种语言像 Java 那样受到如此众多厂商的支持,有如此多的开发工具。      
JDK 是针对 Java 开发人员的产品,是整个 Java 的核心,包括了 Java 运行环境 JRE、Java 工具和 Java 基础类库。
JRE 是运行JAVA程序所必须的环境的集合,包含 JVM 标准实现及 Java 核心类库。JVM 是整个 Java 实现跨平台的最核心的部分,能够运行以 Java 语言写作的软件程序。

JDK(Java development kit)

JDK 是 Java 开发工具包,是 Sun Microsystems 针对 Java 开发人员的产品。   
  JDK 中包含 JRE,在 JDK 的安装目录下有一个名为 jre 的目录,里面有两个文件夹 bin 和 lib,在这里可以认为 bin 里的就是 jvm,lib 中则是 jvm工作所需要的类库,而 jvm 和 lib 和起来就称为 jre。
  JDK 是整个 JAVA 的核心,包括了 Java 运行环境 JRE(Java Runtime Envirnment)、一堆 Java 工具(javac/java/jdb 等)和 Java 基础的类库(即 Java API 包括 rt.jar)。

  1. SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
  2. EE(J2EE),enterprise edition,企业版,使用这种 JDK 开发 J2EE 应用程序,从 JDK 5.0 开始,改名为 Java EE。
  3. ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的 java 应用程序,从 JDK 5.0 开始,改名为Java ME。

金字塔结构 JDK = JRE + JVM + 其它, 运行Java程序一般都要求用户的电脑安装 JRE 环境(Java Runtime Environment);没有 jre,Java 程序无法运行;而没有 Java 程序,jre 就没有用武之地。

JRE(Java runtime environment)

JRE 是 Java 的运行环境,包含 JVM 及 Java 核心类库和支持文件。
它不包含开发工具(JDK)——编译器,调试器和其他工具。
JRE 是运行基于 Java 语言编写的程序所不可缺少的运行环境。也是通过它, Java 的开发者才得以将自己开发的程序发布到用户手中,让用户使用。  
  JRE 中包含了 JVM,runtime class libraries 和 Java application launcher,这些是运行 Java 程序的必要组件。   
  与大家熟知的JDK不同,JRE 是 Java 运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用 Java 程序的用户。

JVM(Java virtual machine)

JVM 即Java虚拟机,它是 Java 跨平台实现的最核心的部分,能够运行以 Java 语言写作的软件程序,所有的 Java 程序首先被编译成 .class 字节码文件,这种文件可以在JVM上执行,JVM 在执行字节码文件时,把其翻译成具体平台上的机器指令执行(一次编译,到处运行),也就是说 .class 文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。  
JVM执行程序的过程:

  1. 加载.class 文件
  2. 管理并分配内存
  3. 执行垃圾收集

只有 JVM 还不能完成 class 的执行,因为在解释 class 的时候 JVM 需要调用解释所需要的类库 lib,而 jre 包含 lib 类库。   
  JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

三者的关系

JDK包含JRE,JRE包含JVM,即:
JDK = JRE + 其他
JRE = JVM + 其他

发布了42 篇原创文章 · 获赞 10 · 访问量 7045

猜你喜欢

转载自blog.csdn.net/MCJPAO/article/details/103774645