编译:简单来说就是 计算机只能读取二进制指令0和1 ,不能理解我们开发的程序。所以需要把我们开发的程序转换为机器可以读取的。就是.Java文件变成.class文件
对于同一个语句,有如下三种:高级语言、低级语言、机器语言的表示
Java语言 a=b+1;
汇编语言 mov -0xc(%ebp),%eaxadd $0x1,%eaxmov %eax,-0x8(%ebp)
机器语言 8b 45 f4 83 c0 01 89 45 f8
我们都知道,机器是只能做数字计算的,能够让机器去运算的、数字的语言就是机器语言,除此之外的所有计算机语言都是非机器语言。这样的相对于机器语言的高级语言都需要一个转换,从高级、机器不可理解,转换为机器可理解的机器语言。这样的一个转换过程就叫做编译(Compile)
,由编译器(Compiler)
来完成。
由Java 转换为汇编语言这一过程是由汇编器(Assembler)
来执行的。
Java和汇编语言转换为机器语言都是由编译器来完成的(把汇编语言翻译成机器语言的过程称为汇编)
这里面,Java是可跨平台的,也可以说是与平台无关的。这里的平台有两种说法,一种是指计算机的体系(Architecture)
,另一种是指操作系统(Operate System)
,也可以是指两种的结合。不同的平台,他们所需要的执行机器语言的指令集是不同的。Java的跨平台性是指,只需要编写一份不需要修改的Java程序代码,就可以在不同体系、不同操作系统的计算机上运行。这都要靠编译器的功劳,编译器将Java程序翻译为了适合当前计算机体系的机器语言。
下面说一下将Java语言编译为机器语言的整个过程:
首先,我们写出一份Java程序代码,命名该代码为hello.Java
,这个代码文件,我们称之为源代码(Srouce Code)
。
然后我们运行编译器,对该源代码文件进行编译,在整个编译的过程中,编译器并不会执行该源代码,只是生成一份新的机器语言代码文件,如hello.class
。这份新生成的代码文件称为目标代码(Object Code)
或可执行代码(Executable)
。