大话Java:程序设计从入门到精通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 编译和运行Java程序

现在,悟空已经创建了 Monkey.java 源程序。接下来,悟空要把它编译为Monkey.class类文件,然后再拜托Java虚拟机来运行这个Monkey类。如图1-9所示,编译Java源程序需要有专门的Java编译器程序,运行Java程序需要有Java虚拟机程序。那么Java编译器程序和Java虚拟机程序在哪里呢?答案是:在JDK里面。

图1-9 编译和运行Java程序

1.4.1 JDK简介

Java开发工具包(Java Development Kit,JDK)由Oracle公司提供。它为Java程序提供了基本的开发和运行环境。JDK还可以称为Java标准开发环境( Java Standard Edition,JavaSE)。JDK的官方下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.htm。

为了便于读者下载到与本书配套的 JDK 软件,在本书的技术支持网站JavaThinker.net上也提供了该软件的下载:http://www.javathinker.net/download.jsp。

JDK主要包括以下内容:

Java虚拟机程序:负责解析和运行Java程序。在各种操作系统平台上都有相应的Java虚拟机程序。在Windows操作系统中,该程序对应的文件为:JDK的安装根目录\bin\java.exe。

Java编译器程序:负责编译Java源程序。在Windows操作系统中,该程序对应的文件为:JDK的安装根目录\bin\javac.exe。

JDK类库:提供了编写Java程序所需要的最基础的Java类及各种实用类。java.lang、java.io、java.util、java.awt和javax.swing包中的类都位于JDK类库中。关于Java包的概念参见第2章的2.5节(包声明语句)。

假设JDK安装到本地后的根目录为C:\jdk,在C:\jdk\bin目录下有java.exe和javac.exe两文件,它们分别为Java虚拟机程序和Java编译器程序。

为了便于在DOS命令行下直接运行Java虚拟机程序和Java编译器程序,可以把C:\jdk\bin目录添加到操作系统的Path系统环境变量中。在Windows操作系统中,选择【控制面板】→【系统和安全】→【系统】→【高级系统设置】→【环境变量】命令。接下来就可以编辑Path系统环境变量了,如图1-10所示。

图1-10 在操作系统的Path系统变量中添加C:\jdk\bin目录

1.4.2 本范例的目录结构

本章范例位于chapter01目录下,读者可以把chapter01目录复制到本地硬盘的C:\目录下。为了便于管理Java源文件及Java类文件,悟空决定把所有的Java源文件放在src子目录下,把编译生成的所有的Java类文件放在classes目录下,如图1-11所示。

图1-11 本范例的目录结构

1.4.3 编译Java源程序

JDK中的javac.exe为Java编译器程序,可以在DOS控制台中运行该Java编译器程序。如图1-12所示,在Windows操作系统中选择【开始】→【运行】命令,然后输入“cmd”命令,就会打开一个DOS控制台。在DOS命令行中,在同一行输入以下用于运行javac.exe程序的命令:

javac -sourcepath C:\chapter01\src

-d C:\chapter01\classes

C:\chapter01\src\Monkey.java

以上javac命令包含以下内容:

-sourcepath选项:用于设定Java源文件所在的目录,此处为C:\chapter01\src目录。-sourcepath选项的默认值为DOS命令行的当前目录。

-d选项:用于指定编译生成的Java类文件的存放目录,此处为C:\chapter01\classes目录。-d选项的默认值为DOS命令行的当前目录。

待编译的Java源文件:此处为C:\chapter01\src\Monkey.java文件。

以上javac命令将对C:\chapter01\src\ Monkey.java源文件进行编译。先对该文件进行 Java 语法检查,如果发现错误,就停止编译,并返回错误信息。如果 Monkey.java源文件中无语法错误,就会生成Monkey.class文件,并把它存放在C:\chapter01\classes目录下。

图1-12 在Windows中用“cmd”命令打开DOS控制台

如果DOS控制台无法识别javac命令,那么说明事先没有把C:\jdk\bin目录添加到Path系统环境变量中。此时,必须在DOS命令行中显式指定地javac命令所在的目录:

C:\jdk\bin\javac -sourcepath C:\chapter01\src

-d C:\chapter01\classes C:\chapter01\src\Monkey.java

此外,也可以在DOS命令行设置当前的path环境变量,这个path环境变量只对当前打开的DOS控制台有效。在DOS控制台输入以下命令即可:

set path=C:\jdk\bin;%path%

1.4.4 运行Java程序

本章1.2节已经讲过,Java程序必须依靠Java虚拟机才能运行,而JDK中的java.exe程序就是Java虚拟机程序。在DOS命令行下,输入以下用于运行java.exe程序的命令:

java –classpath C:\chapter01\classes Monkey

以上java命令包含以下内容:

-classpath选项:用来设置classpath,该选项的默认值为当前路径。在运行Java程序时,很重要的一个环节是设置classpath,classpath代表Java类的根路径,Java虚拟机会从classpath中寻找所需Java类的.class文件。在本例中,classpath选项的值为C:\chapter01\classes。

待运行的Java类:此处为Monkey类。

以上java命令将会启动Java虚拟机,Java虚拟机会从C:\chapter01\classes目录下找到Monkey.class类文件,然后运行Monkey类,执行它的如下main()方法:

public static void main(String[] args) {

//创建代表智多星的Monkey对象

Monkey m=new Monkey("智多星");

//智多星说话

m.speak();

}

悟空把智多星叫过来,指着如图1-13所示的程序运行结果,对智多星说:“你看,计算机里的那个虚拟智多星在学你说话呢。”智多星对悟空佩服得五体投地,赞叹道:“孙爷爷,没想到这愣头计算机也能轻而易举地变出我的化身,这和爷爷您身上的猴毛有异曲同工之妙啊。”

图1-13 运行Monkey类的打印结果

不过,调皮的智多星很快就意识到,计算机里的虚拟智多星看不见摸不着,要是有个模样就更好玩了。在本书第22章的22.5节(创建动画),悟空将运用GUI编程,创建一个有模有样的虚拟智多星,来满足智多星的心愿。

悟空觉得每次用java命令运行Monkey类时,都要通过-classpath选项设置classpath有点麻烦。因此他运用“set classpath”命令在当前DOS控制台先设置了classpath,接下来在使用java命令时,就不用再设置classpath了:

C:\>set classpath=C:\chapter01\classes

C:\>java Monkey

以上“set classpath”命令只对当前DOS控制台有效。如果重新打开DOS控制台,还需重新执行该命令。

1.4.5 创建用于编译和运行Java程序的批处理文件

每次编译或运行Java程序时,都要在DOS命令行中输入很长的javac或java命令,悟空觉得太麻烦,就编写了一个适用于Windows操作系统的批处理文件build.bat,它的内容如下:

set currpath=.\

if "%OS%" == "Windows_NT" set currpath=%~dp0%

set src=%currpath%src

set dest=%currpath%classes

set classpath=%dest%

javac -sourcepath %src% -d %dest% %src%\Monkey.java

java -classpath %classpath% Monkey

以上build.bat批处理文件包含了javac命令和java命令。build.bat批处理文件位于chapter01根目录下。只要运行这个批处理文件,就会编译并运行Monkey类。本书后面章节的范例中都提供了build.bat批处理文件。如果要编译特定目录下的所有Java源文件,可以采用以下方式:

javac-sourcepath %src% -d %dest% %src%\*.java