编译型和解析型
-
编译型 (complce)
- 使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
- **特征:**编译型就是直接编译成机型可以执行的,只翻译一次
- **优点:**相比解释执行编译执行效率高,占用资源小,适合复杂程序
- **缺点:**兼容性差,编译型程序虽然源代码也可以移植,但前提是必须针对不同的系统分别进行编译.
-
解析型定平台的机器码并立即执行。
- **特征:**解释型语言在运行程序的时候才翻译,每执行一次,要翻译一次,效率较低.
- **优点:**可移植性好,只要有运行相应需要的解释环境,可以在不用的操作系统上运行,修改调试也非常方便
- **缺点:**一句一句执行解释,浪费计算机资源,效率低
Java运行机制
- 编译
Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件。好让JVM(java虚拟机)里的解释器可以正常读取。
- 运行
三步 代码的装入、代码的校验和代码的执行
* 代码的装入
JVM控制解释器中的“类装载器”去读取和装载程序所需的类(class的字节码)。然后解释器开始建立类与类之间的关系。
* 代码的校验
字节码校验器进行检查:校验器可发现操作数栈溢出,非法数据类型转化等多种错误。
* 代码的执行
执行也分两种情况
即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。
通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作