JDK,JRE,JVM
-
- 一、JDK
-
- 1. 概述
- 2. 子目录说明
- 二、JRE
-
- 1. 概述
- 三、JVM
-
- 1. 概述
- 四、JDK、JRE、JVM三者的联系与区别
-
- 1. 联系
- 2. 差异
一、JDK 1. 概述
Java Development Kit 的缩写,为2. 子目录说明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文件。
在目录下面有六个文件夹、一个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. 概述
三、JVM 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平台中工作.
四、JDK、JRE、JVM三者的联系与区别 1. 联系JVM
(Java Virtual Machine)是运行Java字节码的虚拟机,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
它提供可以执行Java字节码的运行时环境,通过编译java文件为.class文件得到字节码文件。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
首先,我们要先来理解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概述】?2. 差异JVM
不能单独搞定.class
的执行,解释.class
的时候JVM
需要调用解释所需要的类库lib
。在JDK
下面的的jre
目录里面有两个文件夹bin
和lib
,在这里可以认为bin
里的就是JVM
,lib
中则是JVM
工作所需要的类库,而JVM
和lib
和起来就称为JRE
。
JRE = JVM + libraries to run Java Application
JDK = JRE + tools to develop Java Application
推荐阅读
- JavaSE|Java数组解析(详解)
- JavaSE|Intellij IDEA快捷键大全(超详细)
- JAVA后端|Java日期处理
- Letcode算法专篇|Java之有序集合&hashMap
- Spring Boot 启动时自动执行代码的几种方式,还有谁不会(?)
- 图解 i++ 和 ++i 的区别,看了必懂...
- webgl|一文聊透 JVM 内存分布、内存对齐、压缩指针!
- c语言|【C语言】1的个数
- Java|第1节 MySQL 架构篇 2021-12-24