什么是 Java Development Kit (JDK)?
JDK 通常用来开发 Java 应用和插件。基本上可以认为是一个软件开发环境。JDK 包含 Java Runtime Environment(JRE),JRE 包含加载器 / 解释器,编译器 (javac),文档生成器(Javadoc),打包功能(jar)和其它在开发中所需要功能:
加载代码
校验代码
执行代码
提供运行时环境
什么是 Java Runtime Environment(JRE)
Java Runtime Environment(JRE) 又称为 Java RTE。JRE 中包含核心类和支持文件。它还包含 JVM。JVM 会提供运行时环境。
确定 JVM 运行的特定类型。其类型主要由 Sun 和其它的几个机构提供。
其实现是一个满足 JVM 特定前提条件的客户端程序。
运行时实例无论何时运行 Java 类,都会产生 JVM。
JDK 一个物理存在的工具包。它包含 JRE 和其他工具。
什么是 Java Virtual Machine(JVM)
JVM 为执行 Java 字节码提供一个运行环境。它是一个抽象的独立于平台运行的机器。它的实现主要包含三个部分,描述 JVM 实现规格的文档,具体实现和满足 JVM 要求的计算机程序以及实例(具体执行 Java 字节码)。
JVM 的主要任务包括:
加载代码
校验代码
执行代码
提供运行时环境
JDK, JRE 和 JVM 之间的区别
JRE 的组成
部署机制:Java Web Start,Java 插件等
UI 工具包:AWT,Swing,Java2D 等
集成库:IDL,JDBC,RMI 等
其它基础库:I/O,JNI,JMX 等
Lang 和 utils 基础库:lang,util,格式化,序列化,打包等
JVM:Java HotSpot 客户端和服务端虚拟机
JRE 功能
为了了解 JRE 的功能,可以看一下是如何加载 Example.class 这个类的。该类先被转化为一组字节码并放入.class 文件中。
Java ClassLoader
ClassLoader 将执行程序所需的每个重要类放入堆栈中。它通过命名系统来提供彼此之间的安全性。源码可以来自于硬盘,系统以及其它来源。
Java 字节码校验器
JVM 通过字节码校验器检查格式并找出非法代码。校验器确 JVM 执行代码时能够够快,以及这段代码不会损害现存的框架。
Java 解释器
解释器有两个功能:
执行字节码
正确调用隐藏的设备