Java中的编译器和解释器:
Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机的机器,这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口 。
编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解析器来将虚拟机代码转换位特定系统的机器码执行。在Java中,这种虚拟机理解的代码叫字节码(即扩展名为.class
的文件,它不面向任何特定的处理器,只面向虚拟机)
每一种平台的解析器都是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解析器,解析器将器将其翻译成特定机器上的器码,然后在特定的机器上运行。
Java源代码 - - 编译器 - - jvm可执行的Java字节码(即虚拟指令) - - jvm - - jvm中解析器 - - 机器可执行的二进制器码 - - 程序运行
采用字节码的好处:
Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序允许时比较高效,而且,由于字节码并不专对一种特定的机器。因此,Java程序无序重新编译便可以在多种的计算机上运行。