正如大家所熟知的,在Windows系统上执行一个应用非常简单,直接双击应用就可以执行。然而从源代码到可执行程序(也称为应用)的过程相当漫长,以C/C++语言为例,首先程序员需要根据功能开发相应的代码,待开发完成后需要将代码编译成目标文件,目标文件经过链接形成可执行文件(或应用)。可执行文件是指操作系统(Operation System,OS)可以识别的文件格式,OS加载文件后就可以运行相应的程序。
而Java语言的执行过程和C/C++语言有所不同,主要原因是Java代码的执行依赖JVM。在Java程序执行时,JVM相当于OS,会负责Java程序的加载、链接、编译、执行等工作。
虽然Java语言的执行过程不同于C++的执行过程,但是在执行层面两者还是有一些共同点的,主要原因是C++和Java都是面向对象语言,都支持封装、继承和多态。本章首先介绍C语言是如何执行的,然后介绍编译器在执行层面是如何支持C++语言特性的,最后介绍JVM是如何执行Java代码的。