JVM,JRE和JDK的区别
JVM(Java Virtual Machine,Java虚拟机)
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在。
JVM是JRE的一部分。
它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行
。使用JVM就是为了支持与操作系统无关,实现跨平台。 所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装JRE)。
JRE
Java Runtime Environment,Java运行环境。 包含JVM标准实现和java核心类库,完整的Java运行环境.
JRE目录结构
JRE目录结构
- bin:Java平台工具所使用的的.exe可执行文件和.dll可执行文件。
- lib:代码库、树形设置以及JRE使用的源文件,如------
rt.jar:Bootstrap类(构成Java平台核心API的运行时类);
charsets.jar:字符转换类;
jfxrt.jar:JavaFX的运行时库。 - lib\applet:包含支持类的小程序jar文件可以放置在lib/applet/目录中。这样,通过允许小程序类从Applet类装载器的本地文件系统预装,提供同样的保护,就好像他们已经被下载超过净减少启动时间大的小程序。
- lib\ext:Java平台的扩展程序(插件等)的默认安装目录。如------
localedata.jar-用于现场数据 java.text和java.util。 - lib\fonts:平台使用的字体文件。
- lib\security:包含用于安全管理的文件。这些措施包括安全策略(java.policy)和安全性(java.security)文件。
JDK
Java Development Kit,Java开发环境。 包含了JRE、Java核心类库、开发工具包(编译器+调试工具)