您的位置:寻梦网首页编程乐园Java天地Core JavaJava基础教程
Java 天地

Java基础教程

第一章 Java的产生与特点
第二章 Java程序编译与运行环境
第三章 Java程序设计基础
第四章 Java应用程序的基本结构
第五章 Java的类
第六章 Java图形用户接口
第七章 Java的多线程
第八章 Java的“异常”
第九章 Java的输入输出操作

第二章 Java程序编译与运行环境


2.1 JDK环境

Java不仅提供了一个丰富的语言和运行环境, 而且还提供了一个免费的Java开发工具集(Java Developers Kits, 简称JDK)。 编程人员和最终用户可以利用这些工具来开发java程序或调用Java内容。JDK包括以下工具: javac Java语言编译器, 输出结果为Java字节码java Java字节码解释器javap Disassembeler: Java字节码分解程序, 本程序返回Java程序的成员变量及方法等信息。 javaprof 资源分析工具, 用于分析Java程序在运行过程中调用了哪些资源, 包括类和方法的调用次数和时间, 以及各数据类型的内存使用情况等。 javah C代码处理工具, 用于从Java类调用C++代码 java Applet Viewer 小应用程序浏览工具, 用于测试并运行Java小应用程序java Debugger API Java调试工具API Prototype Debugger Java调试工具原型

Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJava WWW 浏览器。 其中, HotJava浏览器提供了在WWW环境下运行Java代码的一个运行系统, 而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统, 它可以一种稳定、高性能方式运行那些独立于平台的Java字节码, Java编译器则用于生成这些字节码。


2.1.1 Java程序的编译

Java程序的编译程序是javac.exe。javac命令将Java程序编译成字节码, 然后你可用java解释器java命令来解释执行这些Java字节码。Java程序源码必须存放在后缀为.java的文件里。Java程序里的每一个类, javac都将生成与类相同名称但后缀为.class文件。 编译器把.class文件放在.java文件的同一个目录里, 除非你用了-d选项。当你引用到某些自己定义的类时, 必须指明它们的存放目录, 这就需要利用环境变量参数CLASSPATH。环境变量CLASSPATH是由一些被分号隔开的路径名组成。如果传递给javac编译器的源文件里引用到的类定义在本文件和传递的其它文件中找不到, 则编译器会按CLASSPATH定义的路径来搜索。例如:

CLASSPATH = .;C:javaclasses 则编译器先搜索当前目录, 如果没搜索到, 则继续搜索C:javaclasses目录。注意, 系统总是将系统类的目录缺省地加在CLASSPATH后面, 除非你用-classpath选项来编译。javac_g 是一个用于调试的未优化的编译器, 功能与用法和javac一样。 javac的用法如下:

javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-d dir] file.java...

以下是每个选项的解释。

选项解释:

-classpath path 定义javac搜索类的路径。 它将覆盖缺省的CLASSPATH环境变量的设置。 路径是由一些由分号隔开的路径名组成, 一般格式如下: .;<your_path> 例如: .;C:javadocclasses;C:oolsjavaclasses 表示编译器遇到一个新类, 它先在本文件中查找它的定义, 如果没有, 则在本文件所处目录下其它文件中查找它的定义, 如果还没有, 则继续搜索C:javadocclasses目录中的所有文件, 以此类推。

-d directory 指明类层次的根目录, 格式如下:

javac -d <my_dir> MyProgram.java

这样将MyProgram.java程序里的生产的.class文件存放在my_dir目录里.

-g 带调试信息编译, 调试信息包括行号与使用java调试工具时用到的局部变量信息。如果编译没有加上-O优化选项, 只包含行号信息。

-nowarn 关闭警告信息, 编译器将不显示任何警告信息。

-O 优化编译static, final, private函数, 注意你的类文件可能更大。

-verbose

让编译器与解释器显示被编译的源文件名和被加载的类名。

环境变量

CLASSPATH 用来提供给系统搜索用户定义的类的缺省路径。各路径由分号隔开, 例如:

.;C:javadocclasses;C:oolsjavaclasses 表示编译器遇到一个新类, 它先在本文件中查找它的定义, 如果没有, 则在本文件所处目录下其它文件中查找它的定义, 如果还没有, 则继续搜索C:javadocclasses目录中的所有文件, 以此类推。


2.1.2 Java程序的调试使用java调试器

jdb导游

在早期前Betal版的Java调试器jdb是命令行形式的, 如用Sun公司的dbx调试器。用jdb来调试Java应用程序, 在调试之前, 要确证你的应用程序是带标志-g编译的。例如: javac -g HelloWorld.java

help命令将显示jdb里的可用命令列表。

>help <命令列表> threads [threadgroup]--列出线程 thread <thread id>--设置缺省线程 Suspend [threads id(s)]--将线程挂起 resume [thread id(s)]--重新启动线程 where [id] |a1|--打印线程的堆栈 threadgroups--列出线程组号 threadgroup <name>--设置当前线程组 print <id> [id(s)]--打印对象或域 dump <id> [id(s)]--打印所有对象信息locals--打印当前堆栈所有局部变量 classes--列出当前所知的类 methods <class id>--列出一个类的成员函数stop in <classid>.<method>--在一个成员函数里设置断点stop at <class.id>:<line>--在一行里设置断点 up [n frames]--在线程堆栈里往上移 down [n frames]--在线程堆栈里往下移 clear <class id>:<line>--清除一个断点 step --执行当前行 cont--从断点处继续执行 catch <class.id>--为指定的情况中断 ignor <class.id>--为指定的情况忽略 list [line number]--打印源程序 use [Sourcefile path]--显示或改变源路径 memeory--报告内存使用情况 load classname--加载Java类以便调试 run <args>--开始执行加载的类 !!--重复以上的命令 help(?)--列出所有的命令 exit( or quit)--离开调试器


2.1.3 Java程序的执行

java - java语言解释器 java命令解释java字节码

语法: java [ options ] classname <args> java_g [ options ] classname <args>

描述: java命令由java编译器javac输出的Java字节码。

classname参数是要执行的类名称。 注意任意在类名称后的参数都将传递给要执行类的main 函数。

java执行完main函数后退出, 除非main函数创建了一个或多个线程。如果main函数创建了其它线程, java总是等到最后一个线程退出才退出。

选项:

-cs, -checksource 当一个编译过的类调入时, 这个选项将比较字节码更改时间与源文件更改时间, 如果源文件更改时间靠后, 则重新编译此类并调入此新类。

-classpath path 定义javac搜索类的路径。 它将覆盖缺省的CLASSPATH环境变量的设置,路径是由一些由分号隔开的路径名组成, 一般格式如下: .;<your_path> 例如: .;C:javadocclasses;C:oolsjavaclasses 表示解释器遇到一个新类, 它先在本文件中查找它的定义, 如果没有, 则在本文件所处目录下其它文件中查找它定义, 如果还没有, 则继续搜索C:javadocclasses目录中的所有文件, 以此类推。

-mx x 设置最大内存分配池, 大小为x, x必须大于1000bytes。缺省为16兆。

-ms x 设置垃圾回收堆的大小为x, x必须大于1000bytes。 缺省为1兆。

-noasyncgc 关闭异步垃圾回收功能。 此选项打开后, 除非显式调用或程序内存溢出, 垃圾内存都不回收。 本选项不打开时, 垃圾回收线程与其它线程异步同时执行。

-ss x 每个Java线程有两个堆栈, 一个是java代码堆栈, 一个是C代码堆栈。-ss选项将线程里C代码用的堆栈设置成最大为x。

-oss x 每个Java线程有两个堆栈, 一个是java代码堆栈, 一个是C代码堆栈。-oss选项将线程里java代码用的堆栈设置成最大为x。

-v, -verbose 让java解释器在每一个类被调入时, 在标准输出打印相应信息。

环境变量

CLASSPATH 用来提供给系统搜索用户定义的类的缺省路径。 各路径由分号隔开, 例如:

.;C:javadocclasses;C:oolsjavaclasses 表示解释器遇到一个新类, 它先在本文件中查找它的定义, 如果没有, 则在本文件所处目录下其它文件中查找它的定义, 如果还没有, 则继续搜索C:javadocclasses目录中的所有文件, 以此类推。


2.2 JWS环境

Java WorkShop是SUN公司的一个新产品, 它是一个集成的java语言开发环境, 它包括以下工具:

| Portfolio 和Project管理器 | 源文件编辑器 | Build管理工具 | 调试器 | 项目测试 | 在线超文本连接到帮助文件

这些工具在Java WorkShop的第一页都有类似Web页面的超级连接, 如图:

注意, Java WorkShop采用的是当今浏览器的界面风格, 你想作什么, 只需找到相应的超级连接就可以了。具体编译及调试功能是用嵌嵌到HTML文档里的Applet实现的, 因此, 对习惯于用internet浏览方式的用户来说, 这种界面很容易接受。


2.2.1 Portfolio 和Project管理器

Protfolios是一些java应用程序或Applet的集中。 它让你更好的管理更多的projects。 一个project是portfolio里的一个子集, 它包含了以下信息:

1. 怎样编译本项目
2. 怎样调试和浏览本项目
3. 怎样运行本项目
4. 怎样发布本项目

2.2.2 源文件编辑器

源文件编辑器可以从build管理器、调试器和源文件浏览器里的超级连接进入。 在这个模块里, 你可以输入源文件。


2.2.3 Build管理工具

本模块是项目的编译器, 你可以点build按钮直接进入本模块, 如果某个文件出错, 错误信息会提供一个超级连接, 直接指到出错的源文件地点。


2.2.4 Visul Java(图形界面构造)

顾名思义, 本模块能让你可视化建造一些复杂界面, 如果你用过Visual Basic, 你会发现它们很相似。


2.2.5 调试器

调试器能让你很方便地跟踪程序的执行与发现程序的错误。


本章小结:

Java语言有两个开发环境, 一个是免费的JDK, 是命令行方式的。还有一个Java WorkShop, 是开发java程序的集成环境。本章简要介绍了它们的使用方法。


(作者: 袁小春  来源: 不详)