JDK、JRE和JVM的区别与联系

首先来讲一下JDK
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。
JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API )。
有如下三种版本:
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 Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是能够在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)--编译器、调试器和其它工具。JRE须要辅助软件--Java Plug-in--以便在浏览器中运行applet。
没有JDK的话,没法编译Java程序,但在有JRE环境的系统上能够运行程序。因此当你只须要运行Java程序或Applet,下载并安装JRE便可。若是你要自行开发 Java软件,请下载JDK。浏览器

最后再来了解一下JVM
JVM即Java Virtual Machine(Java虚拟机),JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是经过在实际的计算机上仿真模拟各类计算机功能来实现的。
Java语言的一个很是重要的特色就是与平台的无关性。而使用Java虚拟机是实现这一特色的关键。通常的高级语言若是要在不一样的平台上运行,至少须要编译成不一样的目标代码。而引入Java语言虚拟机后,Java语言在不一样平台上运行时不须要从新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就能够在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的可以“一次编译,处处运行”的缘由。
这是三者的关系图:app

咱们开发的实际状况是:咱们利用JDK(调用JAVA API)开发了属于咱们本身的JAVA程序后,经过JDK中的编译程序(javac)将咱们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。jvm

本文内容参考:http://java-mzd.iteye.com/blog/838514工具

相关文章
相关标签/搜索