在Java语言的学习过程中,配置环境时首先会接触到JRE和JDK的概念,后面随着了解的深入,不可避免会学习到JVM。
JRE,全称Java Runtime Environment,也被写成Java RTE。顾名思义,JRE提供Java应用运行所需的最小支撑环境,它包括JVM、核心类、和一些支持文件。
JDK,全称Java Developent Kit,作为Java应用和applets的软件开发环境。它包括Java运行时环境(JRE),解释器/加载器(Java),编译器(javac),归档器(jar),文档生成器(Javadoc)以及Java开发中所需的其他工具。
JVM,全称Java Virtual Machine,首先,JVM是一套工作的规范,但是实现提供者可以独立选择算法;其次,JVM是一个满足JVM规范要求的计算机程序实现;最后,JVM是一个运行时实例,每当在提示符下编写JAVA命令运行Java类时,都会创建一个JVM实例。
JDK 是提供开发和运行Java程序的环境,作为一个工具集(包),JDK包括两方面:
1. 开发工具:提供Java程序运行的环境;
2. JRE:执行Java程序。
Java开发人员需要使用JDK。
JRE为执行Java程序的机器提供运行环境,作为一个安装包,JRE仅仅被用于运行Java程序,不能用于开发。
JVM作为JDK和JRE的重要组成,无论Java程序使用JRE还是JDK运行,都会由JVM去一行一行地执行Java程序,JVM被作为一个解释器(interpreter)。
JRE与JDK的运行过程:
一、JRE包括:
(1)部署技术,包括部署,Java Web Start和Java Plug-in。
(2)用户界面工具包,包括抽象窗口工具包(AWT),Swing,Java 2D,辅助功能,图像I / O,打印服务,声音,拖放(DnD)和输入方法。
(3)集成库,包括接口定义语言(IDL),Java数据库连接(JDBC),Java命名和目录接口(JNDI),远程方法调用(RMI),Internet Inter-Orb协议上的远程方法调用(RMI-IIOP)和脚本。
(4)其他基础库,包括国际支持,输入/输出(I / O),扩展机制,Bean,Java管理扩展(JMX),Java本机接口(JNI),数学,网络,覆盖机制,安全性,序列化和Java for Java处理(XML JAXP)。
(5)Lang和util库,包括lang和util,管理,版本控制,zip,仪器,反射,集合,并发实用程序,Java Archive(JAR),Logging,Preferences API,Ref Objects和Regular Expressions。
(6)Java虚拟机(JVM),包括Java HotSpot客户端和服务器虚拟机。
类加载器(Class Loader)
类加载器加载执行程序所需的所有必要类。 它通过将本地文件系统的名称空间与通过网络导入的名称空间分开来提供安全性。 这些文件可以从硬盘,网络或其他来源加载。
字节码验证器(Byte Code Verifier)
JVM通过字节代码验证程序放置代码,该代码验证程序检查格式并检查非法代码。 例如,非法代码是违反对象访问权限或违反指针实现的代码。
字节代码验证程序可确保代码符合JVM规范,并且不会违反系统完整性。
解释器:
在运行时,解释器加载,检查和运行字节代码。 解释器具有以下两个功能:
执行字节代码
对底层硬件进行适当的调用
二、JDK和JRE之间的交互: