《程序员修炼之道》-读书笔记一-Java到底属于编译型语言还是解释型语言?
Java到底属于编译型语言还是解释型语言?
要想知道Java属于编译型语言还是解释型语言我们需要知道他们的定义和区别
定义:
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!
区别:
编译型语言,执行速度快、效率高;依靠编译器、跨平台性差些。
解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。
大部分开发人员都知道,Java源文件需要先被编译成.class文件才能在JVM中运行。但其实将Java源码
变成字节码的过程不是C或者C++程序员所理解的那种编译,平时我们所说的编译器只是一个针对java源码
生成类文件的工具。Java体系中真正的编译器是JIT,如图所示:
因为JVM为了效率,都有一些JIT优化,将.class的二进制代码编译为本地的代码直接运行,所以是编译的。
而Java源文件编译成.class文件,并不是机器可以识别的语言,而是字节码,最终还是需要 JVM的解释,才
能在各个平台执行(这同时也是java跨平台的原因)。所以它是解释运行的,那也就算是解释的了。
所以可以说java既是编译型的,也是解释型的。