本文共 864 字,大约阅读时间需要 2 分钟。
在探究Java程序的运行机制之前, 我们先了解一下编译型和解释型两个概念
编译型和解释型从字面意思来看, 都有翻译的特征, 其不同点简单来说, 是其时机不同. 接下来通过翻译这一含义举个例子:
假设一个外国人想看中文书, 需要翻译后才能看, 一种方式是通过别人将这本书完全翻译后交给外国人; 另一种方式: 如果该外国人有个翻译官, 外国人想看哪段就给他翻译哪段, 一直跟着外国人进度走,
这两种方式都能让外国人把书看完, 但各有好处和缺点:
- 对于第一种方式, 外国人回看无需重新翻译, 但如果该书更新内容, 别人就必须将该书从头到尾重新翻译一遍, 代价较大
- 对于第二种方式, 如果外国人想回看, 翻译官就要重新翻译一遍. 但如果该书更新内容, 翻译官立马就可以翻译对应内容, 节省成本
编译型 (compile)
- 就类似于将中文书直接翻译为中文版, 进行出售
- 内部有一个类似翻译的程序称为编译器, 它将java源代码转换成计算机可以执行的代码
- 执行速度更快, 因为它已经将所有内容都翻译好了, 电脑只管执行就好了, 对操作系统要求较低, 所以开发操作系统一般都是编译型语言去做, 比如C/C++
解释型 (interpret)
- 性能可能有点损失, 回头需要重新翻译
- 对网页速度要求不是很高, 边执行边解释
Java运行机制
两种方式的结合:
- Java语言编写的程序需要经过编译步骤, 但并不会生成特定平\平台的机器码, 而是生成与平台无关的字节码文件 (class文件). 这种字节码不是可执行的, 必须使用Java解释器来解释执行.
- 这些字节码不面向任何具体平台, 只面向JVM. 不同平台上的JVM都是不同的, 但它们都提供了相同的接口.
- Java语言里负责解释执行码文件的是Java虚拟机, 即JVM (Java Virtual Machine)
- 如此做导致执行效率较低, 但随着硬件的飞速发展, 其速度也在逐渐提升, 所以几乎无关其流程痛痒.
- DOS命令中, Javac就是编译, Java就是解释
转载地址:http://mpvzb.baihongyu.com/