1、如何看待Java是一门半编译半解释型的语言?
现在JVM在运行过程中,通常是解释和编译两者结合起来实现的。
在java设计之初,为了实现java跨平台的特性,因此避免使用编译将高级语言直接转换为机器语言,因此产生了解释器逐行解释字节码的想法。
但是单单由解释器承担翻译的工作,将字节码文件解释成高级语言效率太低。
然而JIT编译器在编译代码后,可以对编译后的代码进行缓存的操作,存储在方法区中,这样执行效率就变高了。
2、JIT 编译器执行效率高为什么还需要解释器
编译器要想发挥作用,把代码编译成本地代码,需要一定的执行时间。
当Java虛拟器启动时,解释器可以首先发挥作用,而不必等待即时编译器全 部编译完成后再执行,这样可以省去许多不必要的编译时间。随着时间的推移,编译器发挥作用,把越来越多的代码编译成本地代码,获得更高的执行效率。同时,解释执行在编译器进行激进优化不成立的时候,作为编译器的“逃生门”