下图为JDK8开发指南中Java概念图:
什么是JVM?
JVM(Java Virtual Machine),即Java虚拟机,是一种用于计算设备的规范,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JVM是Java实现跨平台最核心的部分,编译后的字节码(即.class文件),在不同系统的JVM执行,其结果是相同的(即“一次编译,到处运行”),是因为JVM针对不同系统有特定实现。
什么是JRE?
JRE(Java Runtime Environment,Java运行环境),包括Java虚拟机(JVM)、Java核心类库和支持文件,但不包含开发工具(编译器、调试器和其他工具)。只是运行使用Java程序,安装JRE即可,但并不是绝对的。项目不只是Java程序,例如JSP文件,Tomcat编译时需要JDK支持。
什么是JDK?
JDK(Java Development Kit),Java开发工具包,是整个Java开发的核心,包含了JRE(Java运行时环境)和Java工具(如javac编译器、javadoc文档生成器等)。如下图所示:
JDK的目录结构
- bin目录:JDK开发工具的可执行文件,如:java.exe、编译器javac.exe、文档生成器javadoc.exe等等
- include目录:包含C语言头文件,支持Java本地接口与Java虚拟机调试程序接口的本地编程技术
- jre目录:Java运行时环境,包含Java虚拟机、Java核心类库,但不包含开发工具
- lib目录:Java开发工具所用类库,包含支持JDK工具的核心类库,tools.jar、dt.jar等等
- COPURIGHT文件:版权信息
- src.zip:Java类库源码
JRE的目录结构
- bin目录:Java平台使用的工具和库可执行文件及DLL
- lib目录:Java运行时环境使用的类库、配置文件和资源文件等
Java为什么可以跨平台,实现一次编写,多处运行?
Java能过跨平台的核心在于JVM。不同的操作系统向上的API肯定存在差异的,JVM针对不同的操作系统有特定实现。JVM识别字节码后,根据不同系统的JVM实现,映射到不同系统的API调用,从而实现代码不修改即可跨平台运行。