编译器和解释器

先盗一张图:

一般来说,编译器是运行前将代码编译成二进制文件,其包含的是可直接执行的机器指令;解释器则是运行时,一条一条将代码解释成平台可执行的机器指令。看上去是编译器比解释器快,是因为执行的是已经编译好的机器指令,而解释器每次运行的都会解释执行。实质上,编译器编译代码时间加上执行时间要比解释器多。

JAVA严格来说是半编译半解释的语言。

如上图所示,java是先编译成字节码(非纯二进制代码),即由.java文件编译成.class文件,再由JVM解释器解释执行。

现在解释两个问题:

1、为什么JAVA执行相对比较快?

那是JVM解释的是编译后的字节码,这比直接解释源码要快。

2、为什么JAVA可以跨平台?

首先,编译器执行后的程序所有情况下都可以直接运行的,还要看平台的系统,不同系统执行不同的编译版本。

而JVM可以跨平台安装,其解释执行的阶段把.class文件中的字节码解释成对应平台可执行的机器指令,所以java代码可以做到跨平台执行。

原文地址:https://www.cnblogs.com/ustcwx/p/7586731.html