JDK JRE JVM的关系

爱⌒轻易说出口 提交于 2020-08-19 09:37:13

JDK

  • JDK是(Java Development Kit)的缩写,指的是JAVA软件开发工具包(SDK)。
  • JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+JAVA系统类库)和JAVA工具。
  • 在目录下面有四个文件夹、一个src类库源码压缩包和几个声明文件。
  • 其他四个文件夹分别是:bin、include、lib、 jre以及一些版本信息文件。
JDK目录介绍

在这里插入图片描述

  • bin:包含一些用于开发Java程序的工具,例如:编译工具(javac.exe)、运行工具 (java.exe) 、打包工具 (jar.exe)等,最主要的是编译器(javac.exe)。
  • include:C语言的头文件,用于支持Java程序设计。
  • jre:Java运行时环境的根目录(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)。
  • lib:包含开发Java程序所使用的类库文件。
  • javafx-src.zip:包含 JavaFX 平台源代码的压缩包。
  • src.zip:包含 Java 平台源代码的压缩包。
  • 其他:COPYRIGHT和LICENSE为版权和签证的说明性文档,以及一些引用许可证。

JRE

  • JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及JAVA核心类库。
  • JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib。
  • 这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。
  • JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)。
JRE1.8目录介绍

jre中lib文件夹包括:
在这里插入图片描述

  • applet:用于 Applet 支持类的 jar 文件,可以放在 lib/applet 目录中。Applet 类通过 Applet 类加载器从本地文件系统中预加载,这样为减小大型 Applet 的启动时间提供了一些方式,好像从网上已经下载完成了一样。
  • eploy—用来构建目标机器的发行版本,简单说就是打包成exe或者其他平台的包,如果不带任何参数,会生成一个基本的应用程序,不建议不带任何参数。
  • cmm:这个目录中存放的是色彩管理配置文件,这些文件是用于 Java 2D API 执行色彩对应转换的。
  • ext:用于 扩展 (Extensions)Java 平台默认的安装目录。
  • fonts:包括平台使用的 TrueType 字体文件。
  • images:存放一些关于光标的gif图像。
  • jfr:Java Flight Recorder(JFR)之前是一个商业特性,现在可以直接使用,性能分析工具。
  • management:jre管理属性和管理配置文件。
  • security:这里的文件都是用来处理安全的,包括安全策略java.policy文件和安全属性java.security文件。

有些存在下面两个文件夹:

  • jli:OSX上的动态库扩展。
  • server:包含一些.so文件,用于java虚拟机服务端使用。

JVM

  • JVM是JavaVirtual Machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分。
  • 所有的JAVA程序会首先被编译为.class的类文件,这种class类文件可以在虚拟机上运行。
  • 也就是说class并不直接被机器的的操作系统所执行,而是经过JVM解释给操作系统执行。

JDK JRE JVM的关系

  • JVM + 核心类库 = JRE。
  • JRE + java开发工具(javac.exe/jar.exe) = JDK。
  • JDK包含JRE,JRE包含JVM。

使用人群

jdk 是给开发人员使用的, jre和jvm是给普通用户使用 。


总结

  • 我们利用 JDK (调用 Java API)编写出 Java 源代码,存储于 .java 文件中。
  • JDK 中的编译器 javac 将 Java 源代码编译成 Java 字节码,存储于 .class 文件中。
  • JRE 加载、验证、执行 Java 字节码。
  • JVM 将字节码解析为机器码并映射到 CPU 指令集或 OS 的系统调用。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!