以Java语言为例,说明编译器和解释器有什么区别?Java语言属于编译型编程语言还是属于解释型编程语言?

在这里插入图片描述

以Java语言为例,说明编译器和解释器有什么区别?Java语言属于编译型编程语言还是属于解释型编程语言?在这里插入图片描述

首先给大家举个例子,使用Java语言编写一段代码,在没有语法错误的前提下,编译器就会生成一个扩展名为.class的中间字节码文件。Java语言是高级语言,而Java字节码是低级语言。字节码类似于机器指令,但它不是体系结构中立的,是可以在任何带Java虚拟机的平台上运行的。
在这里插入图片描述
关于更多Java源程序编译、执行原理的内容可以移步我的另有一篇帖子Java版本,语言规范,API,JDK,IDE,Java源程序编译、执行原理(跨平台性根本原因),特殊字符用法小结

编译器(Compiler)

编译器是将源代码编译(翻译)成低级语言的程序。编译器把源程序的每一条语句都编译成机器语言,并保存为二进制文件,运行时计算机可以直接通过运行语言来运行此程序,速度会很快。

编译器产生更快的程序,它必须把每个语句分析一次(边编译边分析),而解释器必须每次分析一次(增加一条分析一次)。此外编译器还可以优化其生成的可执行代码。因为它确切的知道它在哪里运行,并且需要时间来优化代码。在不同的情况下具有不同的速度。

例如在上面的例子中,Hello.java的源代码文件是通过Java编译器产生.class的中间字节码文件然后再送往JVM中执行的。
在这里插入图片描述

解释器(Interpreter)

解释器是直接执行用编程语言编写的指令的程序。只有在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度不如编译后的程序运行的快。而执行Java程序也就是运行程序的字节码,通过JVM来解释Java字节码。解释的过程就是一次将字节码中单独的一步翻译为目标机器语言代码,翻译后立即执行这一步。
在这里插入图片描述
所以从另一方面说,Java语言既不属于编译型编程语言也不属于解释型编程语言,因为它由Java编译器编译为字节码文件,然后仍需要有JVM将字节码解释翻译为目标机器语言,先编译后解释。
在这里插入图片描述

大家如果还有什么问题、建议或者补充可以留言,看到了我会及时回复!一手资讯请关注本人公众号:WDeerCode代码圈哦!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_22695001/article/details/104682346