1.Java的特征 - - 跨平台
1.1 关于跨平台的解释:
Java拥有JVM(Java虚拟机),可以帮助Java程序支持不同的平台,首先Java源文件被编译为.class 字节码文件,.class字节码文件与平台无关,再交由JVM解释,解释为各个平台所特有的二进制机器码文件,交给CPU执行,从而达到了跨平台的效果。
1.2 关于JVM执行机制:
首先来了解一下什么是编译执行和什么是解释执行:
编译执行
- 编译执行是一种效率较高的直译性语言,使用专门的编译器在运行之前一次性的将其编译为各个平台所特有的二进制机器码文件,再交由CPU执行。
- 因为已经一次性的编译为了二进制机器码文件,所以可以脱离开发环境独立运行,运行效率较高。
- 缺点:正是因为已经一次性编译为各个平台所特有的二进制机器码文件,所以只能在当前平台上运行,无法实现跨平台运行,可移植性差。
- 例如 C 、 C++
解释执行
- 解释执行与编译执行相比,效率较低,是一种解释性语言,使用专门的解释器,对源程序一边逐行解释为特定平台的特定二进制机器码语言,一边由CPU直接执行。
- 解释执行和编译执行不同,没有一次性的将其全部编译为各个平台所特有的二进制机器码文件,而是每次执行一行语句都需要编译一次,导致效率较低,不能够脱离解释器独立运行。
- 但是也正因为如此,解释性语言可以借助这些平台的特有解释器,从而实现跨平台的效果,可移植性较好。
那么Java的执行机制是什么?
Java执行机制
首先,Java并不单纯的属于某一种执行方式,即既不是编译执行,也不是解释执行。
Java的执行需要经过两个步骤,
- Java源代码被一次性编译为.class字节码文件(不能直接执行,且与平台无关的一种二进制字节码文件)。
- 将.class字节码文件交由JVM(与平台相关的解释器)处理 ,一边逐行解释为各个平台特有的二进制机器码文件,一边逐行执行。
由上可以发现Java是既结合了编译执行的机制,又结合了解释执行的机制的一种高级语言。编译完成之后得到一种.class字节码文件,而这种.class字节码文件与平台无关,再交由JVM解释执行,JVM是一种解释器,具有将.class字节码文件解释为各个平台所特有机器码的功能,也正是因为有了JVM,所以Java才能实现跨平台。