Java 2 SDK 编程实用指南
1. Java 文档标签
在 Java 编程中,有几个重要的文档标签:
-
@param name description
:用于方法,记录参数名称及参数可容纳值的描述。
-
@see class
:指明另一个类的名称,会转化为该类 Java 文档的超链接,可在注释中无限制使用。
-
@see class#method
:指明另一个类的方法名称,用于直接链接到该方法的文档,使用无限制。
-
@since text
:记录方法或特性添加到类库的时间说明。
2. jar Java 文件归档工具
在部署 Java 程序时,跟踪程序所需的所有类文件和其他文件可能很繁琐。SDK 中的
jar
工具可以将程序的所有文件打包成 Java 归档文件(JAR 文件),也可用于解包这些归档文件。JAR 文件可以使用 Zip 格式压缩,也可以不压缩打包。
使用
jar
工具时,在命令行输入
jar
后接命令行选项和一系列文件名、文件夹名或通配符。例如:
- 将文件夹中的所有类文件和 GIF 图像文件打包到名为
Animate.jar
的单个 Java 归档文件中:
jar cf Animate.jar *.class *.gif
其中,
c
选项表示应创建一个 Java 归档文件,
f
表示归档文件的名称将作为下一个参数。
- 向 Java 归档文件添加特定文件:
jar cf AudioLoop.jar AudioLoop.class beep.au loop.au
此命令创建一个包含三个文件的
AudioLoop.jar
归档文件:
AudioLoop.class
、
loop.au
和
beep.au
。
在 Web 上部署 Java applet 时,将所有必要文件放入单个 JAR 文件可以显著减少浏览器从服务器加载的文件数量,从而加快 applet 的下载和运行速度。支持 JAR 文件的浏览器(如 Microsoft Internet Explorer 4.0 及更高版本、Netscape Navigator)会在 applet 运行时在归档文件中查找所需文件。使用示例如下:
<applet code="AudioLoop.class" archive="AudioLoop.jar" width=45 height=42>
</applet>
当使用
<OBJECT>
标签显示使用 JAR 文件的 applet 时,使用
<PARAM>
标签指定 applet 的归档文件:
<object code="AudioLoop.class" width=45 height=42>
<param name="archive" value="AudioLoop.jar">
</object>
3. jdb 调试器
jdb
是 Java 调试器,是一个强大的工具,可帮助查找和修复 Java 程序中的错误,还能让你更好地理解程序运行时 Java 解释器背后的工作原理。
在调试 Java 程序时,对于导致编译器错误的问题,如分号位置错误、括号不匹配或方法参数数据类型错误等,手动查找错误可能就足够了。但当查找逻辑错误(更隐蔽的错误,不会阻止程序编译和运行)时,调试器就变得非常有用。
Java 调试器有两个非常有用的功能:单步执行和断点。单步执行会在每行代码执行后暂停程序,断点是程序执行会暂停的点,可以由特定代码行、方法调用或捕获的异常触发。
在使用 Java 调试器之前,应使用
-g
选项编译程序,这样会在类文件中包含额外信息,有助于调试。同时,不应使用
-O
选项,因为其优化技术可能会导致类文件与程序源代码不直接对应。
3.1 调试应用程序
调试应用程序时,可以将 Java 类作为参数运行
jdb
工具。例如:
jdb WriteBytes
设置断点的命令有:
-
stop in
:在类的特定方法的第一行设置断点,如
stop in SellItem.SetPrice
。
-
stop at
:在类的特定行号设置断点,如
stop at WriteBytes:14
。
查看当前设置的断点,使用
clear
命令;移除断点,使用
clear
命令并指定类名和行号,如
clear SellItem:215
。
在调试器中开始执行程序使用
run
命令。到达断点后,可以使用以下命令:
-
list
:显示执行停止点的源代码及周围几行。
-
locals
:列出当前正在使用或即将定义的局部变量的值。
-
print text
:显示指定变量、对象或数组元素的值。
-
step
:执行下一行并再次停止。
-
cont
:在程序暂停的点继续运行。
-
!!
:重复上一个调试器命令。
调试完成且确认程序正常工作后,不使用
-g
选项重新编译程序。
3.2 调试 applet
不能使用
jdb
工具加载 applet 进行调试,应使用
appletviewer
的
-debug
选项,如:
appletviewer -debug AppInfo.html
在使用
run
命令执行 applet 之前,在
getAppletInfo
方法的第一行设置断点:
stop in AppInfo.getAppletInfo
开始运行 applet 后,直到调用
getAppletInfo()
方法时才会触发断点,可通过选择
appletviewer
菜单中的
Applet, Info
来实现。
3.3 高级调试命令
-
up:向上移动栈帧,以便使用locals和print命令检查当前方法调用之前的程序状态。 -
down:向下移动栈帧,检查方法调用之后的程序状态。 -
classes:列出当前加载到内存中的类。 -
methods:列出类的方法。 -
memory:显示总内存量和当前未使用的内存量。 -
threads:列出正在执行的线程。可以使用suspend命令暂停线程,使用resume命令恢复线程。 -
catch text:当捕获到指定的Exception类时暂停执行。 -
ignore text:忽略指定的Exception类。
4. 使用系统属性
SDK 的
-D
命令行选项可以修改 Java 类库的性能。Java 包含许多不同的系统属性,可在任何有 Java 实现的平台上使用。
一些系统属性仅用于获取信息,如:
| 属性名称 | 描述 |
| ---- | ---- |
|
java.version
| Java 解释器的版本号 |
|
java.vendor
| 与 Java 解释器关联的供应商字符串 |
|
os.name
| 使用的操作系统 |
|
os.version
| 该操作系统的版本号 |
其他属性可以影响 Java 类库在 Java 程序中的性能,例如
java2d.font.usePlatformFont
属性。可以在命令行使用
-D
选项设置属性,如:
java -Djava2d.font.usePlatformFont=true Auctioneer
也可以创建自己的属性,并使用
System
类的
getProperty()
方法读取。示例代码如下:
class ItemProp {
public static void main(String[] arguments) {
String n = System.getProperty("item.name");
System.out.println("The item is named " + n);
}
}
如果在命令行未设置
item.name
属性,运行程序输出为:
The item is named null
设置属性的命令:
java -Ditem.name="Microsoft Bob" ItemProp
输出为:
The item is named Microsoft Bob
若要在
appletviewer
中使用
-D
选项,在
-D
前加
-J
,如:
appletviewer -J-Djava2d.font.usePlatformFont=true AuctionSite.html
通过这些工具和系统属性的使用,可以更高效地进行 Java 编程和调试。在复杂的项目中,
javadoc
和调试器等工具将发挥重要作用,帮助开发者更好地管理代码和解决问题。
5. Q&A
-
问
:官方 Java 文档中有描述类和方法的长段落,如何使用
javadoc生成这些内容?
答 :在 Java 文档创建器中,描述的长度没有限制。虽然通常简短为一两句话,但必要时可以更长。描述以句号结尾,紧接着换行使用某种标签或结束注释。 -
问
:如果计划使用
javadoc工具,是否必须记录 Java 类中的所有内容?
答 :无论使用多少注释,Java 文档创建器都能正常工作。决定程序中哪些元素需要记录取决于你。可能应该描述类以及所有不对外隐藏的方法、变量和对象。每次在程序中定义可序列化对象或变量而没有相应的 Java 文档注释时,javadoc工具都会显示警告。
Java 2 SDK 编程实用指南
6. 操作流程总结
为了更清晰地展示在 Java 编程中使用上述工具和特性的操作流程,下面以调试一个 Java 应用程序为例,给出详细的操作步骤:
1.
编译程序
:
- 使用
-g
选项编译程序,以便在类文件中包含额外的调试信息。例如:
javac -g WriteBytes.java
-
启动调试器
:
-
将 Java 类作为参数运行
jdb工具。例如:
-
将 Java 类作为参数运行
jdb WriteBytes
-
设置断点
:
-
使用
stop in或stop at命令设置断点。例如:
-
使用
stop in SellItem.SetPrice
stop at WriteBytes:14
-
开始调试
:
-
使用
run命令开始执行程序。例如:
-
使用
run WriteBytes
-
调试过程中使用命令
:
- 到达断点后,根据需要使用不同的命令进行调试。例如:
list
locals
print variableName
step
cont
!!
-
移除断点
:
-
如果需要移除断点,使用
clear命令并指定类名和行号。例如:
-
如果需要移除断点,使用
clear SellItem:215
-
结束调试
:
-
调试完成且确认程序正常工作后,使用
exit命令结束调试会话。然后不使用-g选项重新编译程序。例如:
-
调试完成且确认程序正常工作后,使用
exit
javac WriteBytes.java
7. 关键技术点分析
7.1 JAR 文件的优势
将 Java 程序的多个文件打包成 JAR 文件有以下几个显著优势:
-
减少下载时间
:在 Web 上部署 Java applet 时,将所有必要文件放入单个 JAR 文件可以显著减少浏览器从服务器加载的文件数量,从而加快 applet 的下载和运行速度。如果 JAR 文件中的文件被压缩,加载速度会更快。
-
方便管理
:JAR 文件将程序的所有相关文件组织在一起,便于管理和分发。无论是开发团队内部的协作,还是将程序发布给用户,都更加方便。
7.2 调试器的重要性
在 Java 编程中,调试器是一个不可或缺的工具,尤其是在处理逻辑错误时。逻辑错误通常不会导致程序编译失败,但会影响程序的正常运行,这些错误往往难以通过简单的代码审查发现。调试器的单步执行和断点功能可以帮助开发者逐步跟踪程序的执行过程,定位问题所在。例如,在一个复杂的算法实现中,通过设置断点和单步执行,可以观察变量的值和程序的执行路径,从而找出逻辑错误。
7.3 系统属性的灵活性
Java 的系统属性提供了一种灵活的方式来配置程序的行为。通过
-D
命令行选项,可以在运行时修改系统属性,而不需要修改程序的源代码。这使得程序可以根据不同的环境和需求进行动态配置。例如,在开发和测试环境中,可以使用不同的字体渲染方式,通过设置
java2d.font.usePlatformFont
属性来实现。
8. 总结与展望
通过对 Java 2 SDK 中
jar
工具、
jdb
调试器和系统属性的介绍,我们可以看到这些工具和特性在 Java 编程中具有重要的作用。在开发简单的程序时,可能不需要使用这些高级工具,但随着项目的复杂度增加,它们将成为开发者的得力助手。
jar
工具可以帮助我们更好地管理和部署 Java 程序,提高程序的下载和运行效率;
jdb
调试器可以帮助我们快速定位和修复程序中的错误,尤其是逻辑错误;系统属性可以让我们根据不同的环境和需求灵活配置程序的行为。
在未来的 Java 开发中,我们可以进一步探索这些工具和特性的更多用法,结合实际项目需求,充分发挥它们的优势。同时,随着 Java 技术的不断发展,可能会有更多的工具和特性出现,我们需要不断学习和掌握,以提高自己的编程能力和开发效率。
总之,掌握这些 Java 2 SDK 的工具和特性,将有助于我们开发出更加稳定、高效和易于维护的 Java 程序。
超级会员免费看
4936

被折叠的 条评论
为什么被折叠?



