JDK:Java Development Kit,Java开发工具包
其包含了:
Java的编译和调试程序,Java程序的运行环境和所需的类库
(Ps:这里的编译是把各类编译成.class文件)
JDK有:JavaSE,JavaEE等等
JDK是面向开发人员的,用于Java程序的编写
JRE:Java Runtime Environment,Java 运行环境
解释二进制字节码文件(即.class文件)
含有Java application launcher(Java 应用程序启动器)和JVM
提供Java程序运行时的需要的类库
JRE是面向用户的,即用户需要运行Java程序,有JRE就够了
JVM:Java Vitual Machine,Java虚拟机
介绍:
Java程序是在JVM上运行的
不同的平台有对应的JVM
JDK,JRE,JVM三者联系
JDK开发Java程序并编译出来.class文件
(.class文件面向JVM,可以在JVM上运行)
.class文件是二进制字节码文件,需要JRE做解释
然后才可以加载进JVM,再交由JVM与操作系统交互
由于不同平台的JVM不同
所以.class可以借助不同的JVM的实现跨平台运行
即Java 借助JVM这个 “中间人” 实现了跨平台运行
(这里对比一下C/C++,它们编译出来的程序是只针对特定平台的,即Windows和Linux上编译出来的程序是不同的,一般情况下,不可以跨平台运行)
这里再补充一下JVM的加载过程:
继前面把.class加载进JVM后,程序就可以运行了
之后则是内存的分配和管理
最后程序运行完,则是有JVM的垃圾收集器来完成内存的释放
最后从宏观上看这三者关系:
JDK包含了JRE,JRE包含了JVM
简单的说,JDK是给开发人员用的(在JRE的基础上多了编译调试等一些开发工具)
对于用户,需要运行Java程序,则有JRE就够了
JVM则是被包含在JRE内