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 的系统调用。
来源:oschina
链接:https://my.oschina.net/u/4396705/blog/4511544