1.JVM
JVM(Java Virtual Machine,Java虚拟机).
JVM是一个虚构的计算机,可以仿真模拟各种计算机功能实现.
JVM在执行字节码时,把字节码解释成目标平台的机器指令执行.实现Java的"一次编译,到处运行".
2.JRE
JRE(Java Runtime Environment,Java运行环境).
包含:JVM标准实现,Java核心类库(rt.jar).
JRE是Java的运行环境,程序解释class时,调用解释所需的类库lib.
安装/解压的jre包含两个文件夹:bin/,lib/
bin/:包含最主要的java.exe(win)/ java(linux) Java解释器,启动 JVM(Java虚拟机),将 .class 文件一行一行地解释成机器指令执行。(由 Java 虚拟机对字节码进行解释和执行)
lib/:类库.包含rt.jar,Java基础类库,也就是Java doc里面看到的所有的类的class文件。
3.JDK
JDK (Java Development Kit,Java开发工具)
包含:JRE(Java运行环境(Java Runtime Envirnment),Java工具(javac,java..),Java核心类库(包括dt.jar)
jdk文件夹中比较重要的
bin/:JDK中所包含的开发工具的可执行文件,PATH环境变量应该包含一个指向此目录的项。最主要的是编译器(javac.exe)
include/:本地的方法文件。编写JNI等程序需要的C头文件。
jre/:就是上面的JRE
lib/:开发工具使用的文件。里面有个tool.jar,它包括支持JDK的工具和实用程序的非核心类,执行javac的时候用到。也包含dt.jar,它是BeanInfo文件的DesignTime归档,BeanInfo文件用来告诉交互开发环境〔IDE〕如何显示Java组件以及如何让开发人员根据应用程序自定义它们。
src.zip:部分JDK的源码的压缩文件
4.JDK,JRE,JVM联系与区别
JVM是解释.class文件时,需要调用解释文件中所需的类,就需要JRE中的lib/中的类库.可以认为JRE中的bin/就是JVM,lib就是所需的类库.JRE = JVM + lib/.
JDK的编译程序将.java文本文件编译成.class字节码文件,.class文件在JRE上运行,通过JVM解释字节码,映射到系统执行.