计算机底层只能识别0、1序列的机器码,所有高级编程语言最终都要转换成计算机识别的0、1序列机器码。将代码转换为机器码的方式分为两种,一种是编译型,一种是解释型。
编译器:
将源代码编译成目标代码。
解释器
解释执行源代码,程序在运行时需要解释器边解释边执行。
编译型语言
编译型语言是指程序在执行之前需要一个专门的编译过程,把源文件编译成机器语言的文件,运行时不需要重新编译,执行效率高。缺点是编译型在编译后生成的可执行文件,是相对于本机机器指令集的,所生成的可执行文件移植到不同机器指令集的机器上,不一定能正常运行。
源代码——>机器语言
例如:C语言需要将后缀为.c的源文件通过编译、链接为后缀为.exe的可执行文件,才能运行。
解释型语言
在运行时由翻译器将高级语言代码翻译成易于执行的中间代码,并由解释器(例如浏览器、虚拟机)逐一将该中间代码解释成机器码并执行。
源代码——>中间代码——>机器语言
如Java文件先编译成与平台无关的.class的字节码文件,然后由类加载器加载到JVM中,JVM从.class的字节码文件中读出一条指令,解释成对应平台的机器码执行。如下图所示。