?
编译型:
??????代表:C++、C??Pascal?
??????指使用专门的编译器、针对特定平台将某种高级语言源代码一次性的翻译成可被平台硬件执行的机器码,病包装成该平台所能识别的可执行性程序格式。
??????特点:一次性编译成机器码,所以可以脱离开发环境独立运行,运行效率较高、
??????缺点:因编译型语言的程序被编译成特点平台的机器码,因此其可执行性程序通常无法移植到其它平台运行,若需要移植,则必须将源代码复制到特点平台,针对特定平台惊喜修改。
??
解释型:
? ? ? 使用专门的解释器对源程序逐行解释成特定平台的机器码病立即执行的语言,通常不会进行整体性的编译和链接处理,解释性语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。
??????特点:每一次执行都需要进行一次编译,因此解释性语言的程序运行效率通常比较低,而起不能脱离解释器独立运行,但它跨平台性比较容易,只需要提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可,可以方便的实现源程序级的移植。
??????代表:Ruby、Python
编译解释型:先编译后解释,代表:java
?
半编译型:VB
?
?
?Java语言的运行机制:
?????Java语言比较特殊,由java语言编写的程序需要经过编译步骤,但编译过程不会生成特定平台的机器码,而是生成一种与平台无关的字节码(.class文件)。然后再进行解释步骤。
?????java语言负责解释执行字节码文件的是java虚拟机(JVM),JVM是可运行java字节码文件的虚拟计算机,所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。
????当使用java编译器编译java程序时,生成与平台无关的字节码,这些字节码不面向任何平台,它只面向java虚拟机。不同平台的JVM不同,但都提供了相同的接口,只要为不同的平台实现了相应的虚拟机,编译后的.class文件就可以在该平台上运行。