整体流程
1.首先由源程序文件编译成class文件。注意这里的源程序并不仅限于java程序,其他语言如果能够编译成class文件,并且符合jvm规范也能够在jvm上运行。
2.jvm将class文件拷贝到内存,解释成相应的机器语言运行。我们常用的hotspot虚拟机在运行时会挑选出一些热点代码(以函数为单位),将这些热点代码直接编译成机器码存储起来,下次执行的时候,就不需要jvm解释,而是直接运行机器码。
总结:由于java语言先编译成字节码,在运行时又会对代码解释成相关平台的机器语言。所以java常被成为半编译半解释的混合型语言。
编译型语言:在程序运行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序时,就不用再进行翻译了。
解释型语言:是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。