Java逍遥游记
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 编译和运行Java程序

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

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

1.4.1 JDK简介

JDK是Java Development Kit(Java开发工具包)的缩写,由SUN公司提供。它为Java程序提供了基本的开发和运行环境。JDK还可以称为JavaSE(Java Standard Edition,Java标准开发环境)。JDK的官方下载地址为:http://java.sun.com。此外,在JavaThinker.org网站上也提供了JDK的下载,网址为:http://www.javathinker.org/download/software/jdk.rar

JDK主要包括以下内容:

● Java虚拟机程序:负责解析和运行Java程序。在各种操作系统平台上都有相应的Java虚拟机程序。在Windows操作系统中,该程序的文件名为java.exe。

● Java编译器程序:负责编译Java源程序。在Windows操作系统中,该程序的文件名为javac.exe。

● JDK类库:提供了最基础的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-9。

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

1.4.2 本范例的目录结构

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

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

1.4.3 编译Java源程序

JDK中的javac.exe为Java编译器程序,可以在DOS控制台中运行该Java编译器程序。在Windows中选择【开始】→【程序】→【附件】→【命令提示符】,就会打开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目录下。

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

                C:\jdk\bin\javac -sourcepath C:\chapter01\src
                -d C:\chapter01\classes  C:\chapter01\src\Monkey.java

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-11所示的程序运行结果,对智多星说:“你看,电脑里的那个虚拟智多星在学你说话呢。”智多星对悟空佩服得五体投地,赞叹道“孙爷爷,没想到这愣头电脑也能轻而易举地变化出我的化身,这和爷爷您身上的猴毛有异曲同工之妙啊。”

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

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

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

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

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批处理文件。