1、编译器
(1)解释:简单的说,一个编译器就是一个程序,它可以阅读以某种语言(源语言)编写的程序,并把该程序翻译为一个等价的、用另一种语言(目标语言)编写的程序。
2、解释器
(1)解释:不通过编译的方式生成目标程序。从用户的角度来说,解释器直接利用用户提供的输入执行源程序中的指定操作。即一边翻译一边执行。
3、预处理器、汇编器、及时处理器、链接器/加载器
(1)及时处理器:在java语言被编译的时候,一个java程序首先会被编译成一个字节码(bytecode)的中间形式然后由一个虚拟机对得到的字节码加以解释执行。为了更快的完成输入输出的过程,及时处理器会再中间程序处理输入的前一刻吧字节码翻译成机器语言。
(2)预处理器:
程序可能被分割成为多个模块、并存放于独立的文件中。吧源程序集合在一起的任务有时会由一个被称为预处理器的程序独立完成。预处理器还负责把那些称为宏的缩写形式转换为源语言的语句。
(3)汇编器:
编译器可能会产出一个汇编语言程序作为输出,因为汇编语言比较容易输出和调试。接着,汇编语言程序由汇编器处理,生成可重定位的机器代码。
(4)链接器/加载器:
链接器解决外部内存地址的问题,加载器把所有可执行的目标文件放到内存中执行。