JavaSE|JDK,JRE,JVM概述


JDK,JRE,JVM

    • 一、JDK
      • 1. 概述
      • 2. 子目录说明
    • 二、JRE
      • 1. 概述
    • 三、JVM
      • 1. 概述
    • 四、JDK、JRE、JVM三者的联系与区别
      • 1. 联系
      • 2. 差异

一、JDK 1. 概述
Java Development Kit 的缩写,为Java开发的工具包,是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar),JDK=JRE+开发工具集(例如Javac编译工具等),由SUN公司提供。每一个java学习者会先在机器上装一个JDK,因为它为Java程序开发提供了编译和运行环境,所有的Java程序的编写都依赖于它。使用JDK可以将Java程序编写为字节码文件,即.class文件。
2. 子目录说明
在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。
其中,重要的是以下四个文件夹:bin、 jre、include、lib。
? bin:开发工具,包含了开发、执行,调试Java程序所使用的工具和实用程序以及开发工具所需要的类库和支持文件,最主要的是编译器(javac.exe)
? jre: 运行环境,实现了Java运行环境。是运行Java程序所必须的环境。JRE包含了Java虚拟机JavaTM Virtual Machine(JVM)、Java核心类库和支持文件。
如果只是运行Java程序,则只需要安装JRE。如果要开发Java程序,则需要安装JDK,不需要再安装JRE,因为 JDK中已经包含了JRE。
? include: java和JVM交互用的头文件,它支持使用Java本地接口和Java虚拟机调试接口的本地代码编程。由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,所以include目录里面是一些供C语言使用的标题文件,其中C语言的头文件支持Java本地接口和Java虚拟机调试程序接口的本地编程技术。
? lib:lib是libarary(类库)的缩写。存放的是开发工具使用的归档包文件。例如jar包等,
注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的
二、JRE 1. 概述
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库,JRE=JVM+JavaSE标准类库。是Java的运行环境,所以执行任何Java程序,都需要在机器上安装JRE,这是最低要求。但并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),简单来说,如果你是编写代码的Java应用开发人员,你将需要安装JDK,如果只是想运行使用Java构建的应用程序,你只需要安装JRE即可,JDK是用于java程序的开发,而JRE则是只能运行.class,而没有编译的功能。
JRE可以作为JDK的一部分下载或者也可以单独下载,JRE依赖于平台,这意味着根据机器类型(操作系统和体系结构),必须选择要导入和安装的JRE包。
例如:你不能安装64位的JRE到32位的机器上,同样,针对windows的发行版无法在Linux平台中工作.
三、JVM 1. 概述
JVM(Java Virtual Machine)是运行Java字节码的虚拟机,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
它提供可以执行Java字节码的运行时环境,通过编译java文件为.class文件得到字节码文件。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
四、JDK、JRE、JVM三者的联系与区别 1. 联系
首先,我们要先来理解Java源文件是如何执行的?
(1)使用编辑器或IDE(集成开发环境)编写Java源文件.即Simple.java
(2)程序必须编译为字节码文件,javac(Java编译器)编译源文件为Simple.class文件。
(3)类文件可在任何平台/操作系统上由JVM(Java虚拟机)执行 。
(4)JVM将字节码文件翻译为机器可以执行的机器码(0,1二进制)。
? 即我们是利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
【JavaSE|JDK,JRE,JVM概述】? JVM不能单独搞定.class的执行,解释.class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹binlib,在这里可以认为bin里的就是JVMlib中则是JVM工作所需要的类库,而JVMlib和起来就称为JRE
2. 差异
JRE = JVM + libraries to run Java Application JDK = JRE + tools to develop Java Application

    推荐阅读