1.3 编程语言
本书要介绍的编程语言是 Java,这是一种高级语言(high-level language)。你可能还听说过其他高级语言,如 Python、C、C++、Ruby 和 JavaScript。
要想运行用高级语言编写的程序,必须将其转换为低级语言(low-level language),即“机器语言”。这种转换需要一定的时间,这是高级语言的一个小小的缺点,但高级语言有两个优点。
用高级语言编程容易得多:编写程序所需要的时间更短,程序更简洁、更容易理解,同时更容易确保程序正确无误。
高级语言是可移植的(portable),这意味着用高级语言编写的程序只需做少量修改甚至无需修改,就可在不同类型的计算机上运行。用低级语言编写的程序只能在一种计算机上运行,这种程序必须重写才能在其他计算机上运行。
有两种将高级语言转换为低级语言的程序:解释器和编译器。解释器(interpreter)读取并执行用高级语言编写的程序,这意味着程序怎么说它就怎么做。它每次处理程序的一小部分,即交替地读取代码行并执行计算。图 1-1 展示了解释器的结构。

图 1-1:解释型语言是如何执行的
相反,编译器(compiler)读取并转换整个程序,然后才开始运行程序。在这种情况下,用高级语言编写的程序称为源代码(source code),而转换得到的程序称为目标代码(object code)或可执行程序(executable)。程序编译后可反复执行,无需在每次执行前都进行转换。因此,编译型程序的运行速度通常比解释型程序更快。
Java 既是解释型的又是编译型的。Java 编译器不将程序直接转换为机器语言,而是生成字节码(byte code)。字节码类似于机器语言,解释起来既轻松又快捷,同时也是可移植的,即可在一台机器上编译程序,在另一台机器上运行生成的字节码。运行字节码的解释器被称为 Java 虚拟机(Java Virtual Machine,JVM)。

图 1-2:Java 程序的编译和运行过程
图 1-2 展示了这个过程包含的步骤。这个过程看似复杂,但在大多数程序开发环境中,这些步骤都是自动完成的:通常只需按一下按钮或输入简单的命令,就能编译并运行程序。然而,知道幕后执行了哪些步骤很重要,这样就可以在出现问题时找出问题所在。
