前言
首先问大家一个问题,我们开发好
Java
代码是如何运行的?我们写了这么多年的代码,对
于代码运行的流程是否清楚呢?
是不是在
ide
中点一下
Run
启动就完事了,我们写的代码直接就跑起来了,其实在背后编
译器和虚拟机默默的在帮我们承受了这一切。
Java
程序从源文件创建到程序运行要经过两大步骤:
1
、源文件由编译器编译成字节码
2
、字节码由
Java
虚拟机解释运行。因为
Java
程序既要编译同时也要经过
JVM
的解释运
行。
Java
代码编译
代码编译由
JAVA
源码编译器来完成。主要是将源码编译成字节码文件(
class
文件),字
节码文件格式主要分为两部分:常量池和方法字节码。
Java
代码编译是由
Java
源码编译器来完成,流程图如下所示:
类执行机制
Java
字节码(
class
文件)的执行是由
JVM
执行引擎来完成,流程图如下所示:
从这里我们可以看出来,当我们点击
Run
启动一个项目时,背后却是很多组件共同在努力
的结果,所以我们才能看起来毫不费力。
Java
代码想要运行起来,第一步就要得到编译器的认可。编译器的任务很简单,就是将符
合
Java
语言源码编译为符合
Java
虚拟机规范的
Class
文件,如果输入的
Java
源码不
符合规范则需要报告错误。
所以我们想了解编译器就必须了解
JDK
与
JRE
JDK
与
JRE
那么
JDK
与
JRE
安装包跟
Java
又有什么关系?
这里我们理解清楚所谓的
JDK
和
JRE
到底有什么区别,接下来看一下
Java 8
的体系架构
图:
1
、
JRE
(
Java Runtime Environment
)是
Java
运行时环境,它是运行已编译
Java
程序所
需的所有内容的集合,包括
Java
虚拟机(
JVM
),
Java
核心类库和一些基础的构件。
2
、
JDK
(
Java Development Kit
)是
Java
的开发工具包,它不仅提供了
Java
程序运行所
需的
JRE
,还提供了一系列的编译,运行等工具,如
javac
,
java
,
javaw
等。
通过了解这两个包,我们可以明白,
JDK
中包含了
JRE
,
JRE
中又包含了
JVM
,它们三个的
关系:
JDK
》
JRE
》
JVM
,所以我们在安装
JDK
时,通常不需要考虑
JRE
,
JVM
之类的,只要
你安装好了
JDK
,其他两个就都有了。
但是,如果我们是普通用户,并不需要关心开发,甚至是不懂代码,我只想要代码跑起来的
结果,那只需要本地有
JRE
运行环境就行了。
那么这里大家会有一个疑问了,既然我们安装
JRE
就能运行
Java
代码,但为什么需要