JRE:是java runtime environment的缩写,也就是java运行环境,包含虚拟机(jvm.dull)。从字面意思理解,也就是说JRE只是负责运行一下java程序,因为没有javac,所以并不会生成.class文件。是java程序的运行环境。这也是只装了一个JRE无法在doc命令中运行的原因,因为doc命令中只是将可执行文件进行执行,也就是只能执行.class文件,JRE中并不包含编译器,调试器和其他工具,所以无法对java程序进行编译。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机,还有所有java类库的class文件,都在lib目录下打包成了jar。
JDK:是Java Development Kit的缩写, 是 Java 语言的软件开发工具包,JDK中包含了JRE,也包含了许多开发工具,可以对java源文件进行编译,生成可执行的.class字节码文件,只有JDK的目录下才有javac,JRE中没有javac这个目录
jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm,而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了,使用JRE 的时候不需要配置环境变量,因为安装的时候回自动进行配置,在PATH路径下有