编译型和解释型
编译型:举例:把一本中文玄幻小说全部翻译成英文,然后给美国人看。
其实就是有一个管翻译的程序,可以把我们的代码转换成计算机或系统可以执行的代码。当我们编写完代码后,需要先编译生成可执行文件,然后就可以执行了
解释型:举例:一个有钱的美国人,花钱请一个翻译,给他读中文玄幻小说。
因此,解释型语言在我们运行程序时,是没有可执行文件的,但是有一个解释程序的外壳程序,可以把代码转换成二进制代码,边解释边执行。
由此可见两者的特点:
编译型特点:
- 效率高:占资源小,适合复杂的程序。
- 移植性不好:需要针对不同的系统编译。
解释型特点:
- 效率低:运行一次解释一次
- 可移植性好:只要有解释环境,不需要依赖操作系统就可以运行,修改也简单。
常见概念:
即时编译器:
在Java编程语言和环境中,即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。
解释器
(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位"中间人",每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。
2)新一代即时编译器
HotSpot有两个即时编译器,耗时短优化低的客户端编译器C1和耗时长优化高的服务端编译器C2。
JDK10后又加了一个全新的Java编写的即时编译器Graal编译器。用来替代C++写的C2编译器。需要开关激活。