java之JDK 、JRE、JVM
简单了解
JDK包含JRE,JRE包含JVM。
JDK简单理解就是Java开发工具包,JRE是Java的运行环境,JVM是Java虚拟机。
JDK是面向开发者的,JRE是面向使用JAVA程序的用户。
详解
-
**JDK:**java development kit(java开发工具包)
JDK是整个JAVA的核心,包括了Java运行环境(JRE),JAVA工具(JAVAC/JAVA/JDB等)和JAVA基础类库(即JAVA API 包括 rt.jar)。
-
java工具
- **javac:**java编译器,将java源代码编译成可执行的字节码(二进制码)。
- java: java解释器,直接从类文件执行java应用程序字节码。
- **appletviewer:**小程序浏览器,一种执行HTML文件上的java小程序的java浏览器。
- **javadoc:**根据java源代码及说明语句生成HTML文档。
- **javah:**产生可以调用java过程的C过程,或建立能被java程序调用的C过程的头文件。
- **javap:**java反编译器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
-
java基础类库
- **java.applet:**提供创建applet小程序所需要的类。
- **java.awt:**包含用于创建用户界面和绘制图形图像的所有类。
- java.io:提供与输入输出相关的类。
- **java.beans:**包含于开发javaBeans相关的类。
- **java.lang:**提供java语音程序设计的基础类。
- java.net:提供实现网络操作相关的类。
- **java.nio:**为输入输出提供缓冲区的类。
- **java.text:**提供处理文本、日期、数字和消息的类和接口。
- **java.util:**提供处理日期、时间、随机数生成等各种使用工具的类。
- javax.net:提供用于网络应用程序的类、网络应用扩展类。
- **java.swing:**提供一组与AWT功能相同的纯java的组件类。
JDK有以下三种版本:
- ***javaSE:***标准版,基于个人计算机的应用。
- ***javaME:***微型版,消费型电子产品。(不常用)
- ***javaEE:***企业版,定位在服务器端的应用。(包含JavaSE)
-
-
**JRE:**Java Runtime Enviromental(java运行时环境)
JRE也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
-
**JVM:**Java Virtual Mechinal(JAVA虚拟机)
JVM是JRE的一部分,它是一个虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
JVM是Java实现跨平台最核心的部分,所有的Java程序会首先被编译为.class的类文件,JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或OS的系统调用。Java面对不同操作系统使用不同的虚拟机,依次实现了跨平台。JVM对上层的Java源文件是不关心的,它关心的只是由源文件生成的类文件。
下图很好的表面了JDK,JRE,JVM三者间的关系:
我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。