JDK、JVM和JRE的区别

JDK、JVM和JRE的区别

一、概念

1)什么是JDK?

JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的软件开发包,它提供了Java的开发化境和运行环境

2)什么是JRE

Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

3)什么是JVM?

JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行

4)什么Java虚拟机

JVM其实就是Java虚拟机

5)之间的关系?

JDK安装之后内部包含了JRE,这个JRE是供开发使用的;其实在安装JDK的过程中外部也会有一个JRE,这个是给普通使用者使用的,可以用来运行编译后的字节码,当我们进行开发时要指定JRE的安装目录,这个时候应该选择JDK下面的JRE。另外JRE中的bin目录就是Java虚拟机,我们需要运行Java程序时需要安装Java虚拟机,就是指安装Java的运行环境JRE(包含bin目录)的过程。

Java编译器指的就是JDK中的javac.exe,JRE中是没有的,不过一般来说IDE中如Eclipse都包含了这个。简单梳理下代码的执行流程,首先是源文件,然后经过Java编译器生成.class的二进制文件,这个文件经过本地或者网络(一般是本地,如果要处理远程的class文件,需要自定义类加载器),然后经过JDK中的类加载器的和Java类库和校验。然后再由Java解释器(java.exe)和即时编译器的处理。

Java解释器:是JRE的一部分,能够把.class的字节码一行一行直接翻译成机器码,然后由运行期系统执行。

即时编译(Just-in-time compilation:JTI):是JRE的一部分,又叫实时编译,是一种把字节码翻译成机器码并且缓存起来以降低性能耗损,被用来改善虚拟机性能。

然后处理之后的机器码就由运行期系统来指定,运行期系统执行机器码同时还通过诸如本地方法与操作系统进行交互。这个就是类从编译到运行的过程。

 

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。

posted @ 2018-02-06 10:15  stujike123456  阅读(120)  评论(0编辑  收藏  举报