Java解释执行和编译执行
区别
- 编译执行是利用事先编写好的成为编写程序的机器语言程序,作为系统软件存放在计算机内,当高级语言源程序进入计算机,被这个翻译成目标程序,以完成源码要处理的运算并取得结果
- 解释方式是源程序进入计算机内,解释程序边扫描边解释,逐句输入逐句翻译,计算机一步一步执行,并不产生目标程序
JAVA中的区别
- 解释执行:将编译好的字节码一行一行地翻译为机器码执行。
- 编译执行:以方法为单位,将字节码一次性翻译为机器码后执行。
字节码与机器码
- 机器码是CPU直接读取运行的机器指令,运行速度非常快,但是晦涩难懂,一般接触不到
- 字节码是一种中间状态的二进制代码,需要直译器转译后才可能成功的成为机器码
JVM中的解释执行和编译执行
在编译示时期,我们通过将源代码编译成.class ,配合JVM这种跨平台的抽象,屏蔽了底层计算机操作系统和硬件的区别,实现了“一次编译,到处运行” 。 而在运行时期,目前主流的JVM 都是混合模式(-Xmixed),即解释运行 和编译运行配合使用。
以 Oracle JDK提供的HotSpot虚拟机为例,在HotSpot虚拟机中,提供了两种编译模式:解释执行 和 即时编译