Java中的JDK,JRE和JVM之间的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的JDK,JRE和JVM之间的区别相关的知识,希望对你有一定的参考价值。
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。尽管它们看起来差不多,但是它们是不同的针对特定目的的产品。
Java 开发工具包 (JDK)
Java 开发工具包是 Java 环境的核心组件,并提供编译、调试和运行一个 Java 程序所需的所有工具,可执行文件和二进制文件。JDK 是一个平台特定的软件,有针对 Windows,Mac 和 Unix 系统的不同的安装包。可以说 JDK 是 JRE 的超集,它包含了 JRE 的 Java 编译器,调试器和核心类。目前 JDK 的版本号是 1.8,也被称为 Java 8。
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)。金字塔结构:JDK=JRE+JVM+ 其它 。运行Java程序一般都要求用户的电脑安装JRE环境(Java Runtime Environment);没有jre,java程序无法运行;而没有java程序,jre就没有用武之地。
JDK的几个版本:
①SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
②EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。
③ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。
Java 运行时环境(JRE)
JRE,也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。JRE 是JVM 的实施实现,它提供了运行Java 程序的平台。JRE 包含了 JVM、Java 二进制文件和其它成功执行程序的类文件。
与大家熟知的JDK不同,JRE是是运行基于Java语言编写的程序所不可缺少的运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户,也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。 如果你只是想要执行 Java 程序,你只需安装 JRE 即可,没有安装 JDK 的必要。
Java 虚拟机(JVM)
JVM 是整个java实现跨平台的最核心的部分,JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码。JVM 是平台特定的,并提供核心的Java 方法,例如内存管理、垃圾回收和安全机制等。JVM 是可定制化的,我们可以通过 Java 选项(java options)定制它,比如配置 JVM 内存的上下界。JVM 之所以被称为虚拟的是因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种独立于硬件和操作系统的特性正是 Java 程序可以一次编写多处执行的原因。
Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。
JDK, JRE 和 JVM 的区别
①JDK 是用于开发的,而JRE 是用于运行 Java 程序的。
②JDK 和JRE都包含了JVM,从而使得我们可以运行Java 程序。
③JVM 是Java 编程语言的核心并且具有平台独立性。
在Java开发中:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
以上是关于Java中的JDK,JRE和JVM之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
Java 中的 JDK,JRE 和 JVM 有什么区别和联系?