1. Java的运行机制
想要了解Java的运行环境,就得知道Java是如何运行的。
计算机高级语言是按程序的执行方式分为编译型和解释型这两种。而Java程序运行是先进行编译、后解释的。
1.1 编译阶段
编译型语言:是使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
简单说就是将源代码编译成机器语言的文件,例如exe格式的文件,在运行时,直接使用编译结果,运行exe文件就行。因为只要编译一次,以后运行就不需要编译了,所以编译型语言执行效率高。
【因为编译型语言是一次性编译成特定平台的机器码,因此编译生成的可执行程序无法移植到其他平台上运行。如果需要移植,则必须将源代码复制到特定平台上】
特点:
1. 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高
2. 与特定平台相关,一般无法移植到其他平台
3. 现有的C、C++、Objective、Pascal等都属于编译型语言
1.2 解释阶段
解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行一行动态翻译和执行,而不是在执行之前完成翻译的。
解释型语言不需要提前翻译,而是直接解释成机器码并立即运行,所以只要某一平台提供了相应的解释器即可运行该程序。
特点:
1. 解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;
2. 只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
3. Python、Ruby等属于解释型语言。
1.3 关于Java语言
Java和其他的语言不太一样。因为Java编写的程序需要先经过编译步骤,但这个编译过程并不会生成特定平台的机器码,而是生成字节码文件。这种字节码文件是不可执行的,必须使用Java解释器来解释字节码生成机器码。所以说Java语言既不是纯粹的编译型语言,也不是纯粹的解释型语言。
Java程序的执行必须经过先编译、后解释的这两个步骤。
Java中负责解释执行字节码文件的是JVM虚拟机,即JVM(Java Virtual Machine)。JVM是可运行Java字节码文件的虚拟计算机。
所有OS平台的JVM向编译器提供相同的编程接口,而编译器只需要面向JVM,生成虚拟机能理解的代码,然后有虚拟机来解释执行。之后虚拟机代码转换成特定系统的机器码,然后执行。
2.JDK、JRE具体介绍
2.1 JDK:Java开发环境包
JDK:Java Development Kit 是Java的标准开发工具包 。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。
(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)
JDK安装目录下各个子文件目录和文档作用的详细介绍
(1)bin文件夹:存放了JDK的各种工具命令,javac和java就放在这个目录
(2)conf文件夹:存放了JDK的相关配置文件
(3)include文件夹:存放了一些平台特定的头文件
(4)jmods文件夹:存放了JDK的各种模块
(5)legal文件夹:存放了JDK各模块的授权文档
(6)lib文件夹:存放的是JDK工具命令的一些补充jar包
以下是JDK14的安装目录
2.2 JRE:Java运行时环境
JRE:Java runtime environment 是运行Java语言编写程序,不可缺少的运行环境,用于解释执行Java的字节码文件。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。
2.3 JDK、JRE和JVM三者之间的关系
JDK 包含JRE,JRE包含JVM。