为什么说Java是一种半解释半编译的程序设计语言?
- 编译型语言:将源程序全部编译成二进制代码的可运行程序,然后,直接运行这个程序。执行效率高、速度快、依赖编译器,跨平台性稍差;但是编译器需要将代码编译成本地代码,需要一定的执行时间,编译成本地代码之后,执行效率高。
- 解释型语言:把已经做好的源程序,翻译一句,执行一句,直到结束。响应速度快,省去编译的时间,立即执行,但是执行速度慢、效率低,依靠编译器,但是跨平台性稍好。
Hotspot JVM的执行方式:
当虚拟机启动的时候,解释器可以先发挥作用,而不必等到JIT编译器全部编译完成再执行,这样可以省去很多不必要的编译时间,随着程序的运行时间的推移,即时编译器逐渐发挥作用,根据热点探测功能,将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率。