第一部分 Java概述 1
第1章Java能做什么 3
1.1 Java应用程序的几种类型 4
1.2 了解Java语言 5
1.3 Java开发工具 5
1.4 Java小应用程序 5
1.5 Java图形用户界面应用程序 9
1.7 Java是客户/服务器方式的 11
1.6 Java命令行应用程序 11
1.8 如何跟上形势 12
第2章Java设计 13
2.1 解释Java 14
2.2 Java是面向对象的 15
2.3 Java虚拟机 15
2.3.1 Java源代码 16
2.3.2 Java堆栈 16
2.3.3 Java寄存器 16
2.4.1 可执行内容与安全性 17
2.4 安全性和Java虚拟机 17
2.3.4 无用单元收集堆 17
2.3.5 Java的方法区 17
2.4.2 Java实现安全性的办法 19
2.4.3 Java语言级的安全性 20
2.4.4 编译过的Java代码的安全性 21
2.4.5 Java系统在运行时刻的安全性 21
2.4.6 可执行代码的安全性 22
2.4.7 开放问题 24
2.5 Java API 25
2.5.1 Java核心API 25
2.5.2 JavaBean API 27
2.5.3 JDK1.2新增加的内容 28
2.5.4 Java嵌入式API 29
第3章 安装并启动JDK 30
3.1 为什么需要使用Sun公司的Java开发工具来编写Java程序 31
3.2 进一步了解Java既是编译的又是解释的 31
3.3 获取和安装Sun公司的JDK 32
3.3.2 从光盘安装在x86和SPARC Solaris操作系统上的JDK 33
3.3.1 从光盘安装在Windows95 和Windows NT上的JDK 33
3.3.3 下载JDK 34
3.4 安装下载的JDK 35
3.4.1 在Solaris x86平台和SPARC平台上安装 35
3.4.2 在Windows操作系统上安装 36
3.4.3 在Macintosh上安装 37
3.5.1 创建新的Java工程 38
3.5.2 运行Unix或Windows的Java应用程序 38
3.5 测试Java编译器和JVM(Java虚拟机) 38
3.5.3 在Macinlosh上运行Java应用程序 39
3.6 在Windows3.1平台上安装IBM的小应用程序开发工具 39
第4章 JDK工具 42
4.1 JDK工具参考 43
4.2 AppletViewer(小应用程序浏览器) 43
4.3 java,Java解释器 44
4.4 javac, Java编译器 45
4.5 javap, Java反编译器 46
4.6 Javah C头文件和承接模块文件的创建器 46
4.7 javadoc工具(文档生成器) 47
4.9 CLASSPATH环境变量 48
4.8 jdb, Java调试器 48
4.10 Macintosh问题 49
4.10.1 Macintosh平台上的小应用程序浏览器 49
4.10.2 Java Runner,Macintosh平台上的Java解释器 50
4.11 Java编译器 51
4.12 JavaH:C头文件产生器 51
第二部分 Java语言 53
第5章 面向对象编程 55
5.2.1 过程语言 56
5.1 面向对象编程:新的思维方式 56
5.2 简短的编程历史 56
5.2.2 结构化程序设计 57
5.2.3 面向对象编程 57
5.3 对象 57
5.3.1 传统的程序设计 58
5.3.2 OOP方法 58
5.3.3 通过继承扩充对象 59
5.7 建立层次:一种面向对象设计的方法 61
5.6 对象和对象如何与Java类联系 61
5.4 多实体对象 61
5.5 组织代码 61
5.7.1 把代码分成最小的实体 62
5.7.2 在实体间寻找共同点 62
5.7.3 在实体之间寻找差异 62
5.7.4 在实体间寻找最大的共同点 62
5.7.5 把剩下的共同对象放在一起并重复 62
5.7.6 利用对象扩充程序 63
5.8 Java并不是完全面向对象的语言 63
第6章 Hello World:用户的第一个Java程序 64
6.1 HelloWorld应用程序 65
6.1.1 创建文件 65
6.1.2 编译代码 65
6.1.3 运行程序 65
6.2 理解HelloWorld 66
6.2.1 声明类 66
6.2.2 Main方法 66
6.2.4 System.out和system.in 67
6.2.3 写屏 67
6.3 作为小应用程序的HelloWorld运行在Netscape中 70
6.3.1 新的源代码和编译新的源代码 70
6.3.2 创建HTML文件 71
6.3.3 在小应用程序浏览器中运行程序 71
6.3.4 在Netscape Navigator中运行HelloWold 72
6.3.5 理解源代码 72
6.3.6 小应用程序简短的生命周期 73
6.4 关键字 74
6.5 API 75
第7章 数据类型及其它标记 76
Java的两种数据类型 77
7.2 了解布尔变量 78
7.2.1 声明变量 78
7.2.2 标识符:变量命名 78
7.2.3 修改布尔变量 79
7.3 各种整数类型 80
7.3.1 整数类型值的限制 80
7.4 运算符 81
7.3.2 创建整数变量 81
7.3.3 整数运算 81
7.4.1 算术运算符 82
7.4.2 赋值运算符 82
7.4.3 增量/减量运算符 83
7.5 字符变量 83
7.6 浮点变量 84
7.7 数组 85
7.8 空白 86
7.9.2 C++风格的注释 87
注释 87
7.9.1 传统的注释 87
7.9.3 javadoc注释 88
7.10 源程序中的符号:赋值 88
7.10.1 代表整数格式的字符 89
7.10.2 代表字符格式的字符 90
7.10.3 代表浮点格式的字符 91
7.10.4 代表串格式的字符 91
7.11.1 使用new操作符创建对象 92
7.11 创建和撤销对象 92
第8章 方法 94
8.1 方法的两个部分 95
8.1.1 声明 95
8.2 块和语句 103
8.2.1 语句加标志 104
8.2.2 范围 104
第9章 使用表达式 106
9.1 什么是表达式 107
9.2 如何计算表达式 107
9.2.1 运算符关联 107
9.2.2 Java运算符的优先顺序 108
9.2.3 小结—运算符表 109
9.2.4 计算顺序 109
9.3 Java表达式与C语言表达式的差异 110
9.4 位运算符 110
9.6 类型转换 112
9.6.1 隐式类型转换 112
9.5 移位运算符 112
9.6.2 强制运算符 113
9.6.3 强制并转换整数 114
9.6.4 强制并转换字符 114
9.6.5 强制并转换布尔值 114
9.7 字符串加法 114
第10章 控制流 115
10.1 控制执行 116
10.2 布尔运算的true运算符和false运算符 116
10.2.1 关系运算符 116
10.2.2 等于运算符 118
10.3 逻辑表达式 119
10.3.1 条件与运算符和条件或运算符 119
10.3.2 一元逻辑运算符 120
10.4 条件运算符 120
10.6 控制流语句 121
10.6.1 if语句 121
10.5 控制流中的布尔类型 121
10.6.2 if-else语句 122
10.7 循环语句 123
10.7.1 While语句 123
10.7.2 do语句 124
10.7.3 for语句 124
10.7.4 switch语句 125
10.8.1 break语句 126
10.8.2 continue语句 126
10.8 跳转语句 126
10.8.3 return语句 127
第11章 类 128
11.1 什么是类 129
11.2 为什么使用类 129
11.3 Java中的类 130
11.4 声明类 133
11.4.1 访问说明符 133
11.4.2 类名 134
11.4.3 超类—扩展另一个类 134
11.5 构造器 135
11.5.1 覆盖方法 136
11.6 创建类的实例 137
11.7 引用类的部分 138
11.7.1 特殊变量this 140
11.7.2 特殊变量super 141
11.8 变量 142
11.8.1 变量修饰符 146
11.8.2 使用方法来提供受保护的访问 148
11.8.3 使用findlize()方法 149
11.9 嵌入类 151
11.9.1 什么是嵌入类 151
11.9.2 使用嵌入类创建程序 151
11.9.3 同步嵌入类 153
11.9.4 嵌入类是如何工作的 154
11.9.5 为什么使用嵌入类 154
11.10 包 154
11.11 引入包中的类 155
111.12 引入整个包 155
11.13 不通过引入使用类 156
11.14 使用包来组织代码 158
11.15 所有java.lang类的隐式引入 158
第12章 接口 159
12.1 什么是接口 160
12.2 创建接口 160
12.2.1 声明 162
12.2.2 接口体 163
12.3.2 修饰符 166
12.3.1 覆盖方法 166
12.3 使用接口 166
12.3.3 参数列表 167
12.3.4 体 168
12.4 在其它类中使用接口 168
12.4.1 使用接口的域 168
12.4.2 把接口当作类型使用 168
12.5 异常 171
第13章 线程 173
13.3.1 扩展Thread类 174
13.3 如何使类可线程化 174
13.2 为什么使用线程 174
13.1 什么是线程 174
13.3.2 使用Runnable接口 175
13.4 巧妙的线程竞赛 175
13.5 理解GreatRace 178
13.6 线程处理 180
13.7 测试巧妙的线程竞赛 181
13.8 改变优先级 182
13.9 关于线程的优先级、Netscape和Windows 183
13.10 同步 185
13.11 哲学家进餐问题 186
13.12 改变线程的运行状态 186
13.13 获得正在运行的线程的数量 188
13.14 查找所有正在运行的线程 188
13.15 超级属性 190
第14章 编写小应用程序 192
14.1 Java的孩子 193
14.2 小应用程序和HTML语言 193
14.3 在HTML页中包含Java小应用程序 194
14.3.1 包括替换信息 195
14.3.2 附加的〈APPLET〉属性 197
14.4 使用Java插件 198
14.4.1 在Internet Explorer上使用Java插件 199
14.4.2 在Netscape中使用Java插件 199
14.4.3 为所有的浏览器设置HTML文本 200
14.5 开始开发Java小应用程序 201
14.6 探究小应用程序的生命周期 203
14.5.1 理解HelloWorld—构造小应用程序 203
14.6.1 编译InitStartStop小应用程序 206
14.6.2 理解InitStartStop小应用程序 207
14.6.3 Java动画小应用程序 209
14.7 使用控件的小应用程序 213
14.7.1 理解InternetApplet小应用程序 218
14.7.2 探究init()方法 218
14.7.3 ActionCommand和ActionListeners 219
14.7.4 actionPeformed()方法 219
14.7.5 探究paint()方法 220
第15章 高级小应用程序代码 222
15.1 使用〈PARAM〉标记 223
15.1.1 理解starPainter的源代码 224
15.1.2 使用getSize()方法 225
15.2 在小应用程序中增加图像 227
15.3 在小应用程序中增加声音 229
15.4 使用小应用程序控制浏览器 230
1.4.1 修改状态信息 231
15.4.2 修改浏览器显示的页 232
15.5 小结 233
第16章 JAR档案文件 235
16.1 为什么使用JAR 236
16.1.1 绑定 236
16.1.2 压缩 236
16.1.3 向下兼容性 236
16.1.4 可移植性 236
16.1.5 安全性 237
16.2 什么时候使用JAR档案 237
16.2.1 Jar工具 237
16.2.2 〈APPLET〉标志 239
16.2.3 兼容的浏览器 241
16.3 JAR档案和安全性 241
16.3.1 声明文件 242
16.3.2 私有密钥、公共密钥和证书 243
16.3.3 密钥工具 243
16.3.4 jarsigner 244
16.4 java.util.zip包 246
16.4.1 类 247
16.4.2 有计划地读取JAR文件 247
16.5 JAR文件格式 249
第17章 小应用程序和应用程序的比较 250
17.1 应用程序探究 251
17.2 应用程序的优点 251
17.3 开发Java应用程序 252
17.3.1 HelloWorld应用程序 252
17.3.2 为应用程序传递参数 253
17.3.3 避免空指针异常 254
17.3.4 由main()的静态特性带来的限制 255
17.4.2 把小应用程序代码修改成应用程序代码 257
17.4 把小应用程序转换为应用程序 257
17.4.1 为什么要把小应用程序转换为应用程序 257
17.4.3 解释其它小应用程序的特性 262
17.4.4 缺省 262
17.4.5 加入〈param〉信息的第二种办法 264
17.4.6 使用窗口来结束应用程序的工作 265
17.4.7 检查所有的小应用程序的方法 269
17.5 使用Zip文件格式将用户的应用程序打包 270
17.6 把应用程序转换成小应用程序 270
17.6.3 维护应用程序的一个单一实例 271
17.6.1 最简单的转换 271
17.6.2 处理命令行参数 271
17.6.4 在应用程序向小应用程序转换过程中更难的问题 272
第18章 管理应用程序 273
18.1 安装应用程序 274
18.1.1 从.class文件中安装应用程序 274
18.1.2 结束安装 275
18.1.3 结束UNIX操作系统下的应用程序安装 275
18.1.4 结束Windows操作系统下的应用程序安装 277
18.1.5 从.jar文件中安装应用程序 280
18.2 在同一个系统中维护多个应用程序 281
第三部分 用户界面 283
第19章 java.awt:部件 285
19.1 使用java.awt构造图形用户界面 286
19.2 按钮 287
19.2.1 创建按钮 287
19.2.2 使用按钮 287
19.3 按照1.1版本的事件模式使用按钮 290
19.4 标签 291
19.5 复选框和单选按钮 292
19.5.1 创建复选框 292
19.5.2 检查和设置复选框的状态 293
19.5.3 监听复选框中的变化 293
19.5.4 创建单选按钮 295
19.5.5 使用单选按钮 296
19.6 选择框 299
19.6.1 创建选择框 299
19.6.2 使用选择框 300
19.7.1 创建列表框 301
19.7.2 列表框特性 301
19.7 列表框 301
19.7.3 使用列表框 303
19.8 文本域和文本区 307
19.8.1 创建文本域 307
19.8.2 创建文本区 308
19.8.3 公共文本部件的特性 308
19.8.5 文本区特性 309
19.8.4 文本域特性 309
19.8.6 使用文本域和文本区 310
19.9 滚动条 313
19.9.1 创建滚动条 313
19.9.2 滚动条特性 313
19.9.3 使用滚动条 314
19.10画布 315
19.11部件的公共方法 317
19.11.1 部件显示方法 317
19.11.2 部件的位置和尺寸设置 318
19.11.3 部件布局和送显的方法 320
19.11.4 部件输入事件 321
第20章 深入研究异常和事件 323
20.1 Java的异常 324
20.1.1 抛出异常 326
20.1.2 联合方案 327
20.1.3 异常的类型 328
20.1.4 确定要处理的异常 330
20.1.5 捕捉运行时刻异常 333
20.1.6 处理异常 334
20.1.7 创建用户自己的异常类 336
20.2 Java的Error类 340
20.3 Java的事件 340
20.4 事件处理技术 341
20.4.1 事件监听器 341
20.5 键盘和鼠标事件 345
20.5.1 键盘事件 345
20.5.2 Java2中的修饰键 348
20.5.3 Java2中的鼠标事件 349
20.6.1 Event类 350
20.6 Java1.0的事件模式 350
20.6.2 事件的起源 353
20.6.3 键盘 355
20.6.4 直接处理事件 356
20.6.5 覆盖handleEvent()方法 356
20.6.6 发送用户自己的事件 358
第21章 容器和布局管理器 362
21.3 布局管理器 363
21.1 组织部件 363
21.2 容器 363
21.4 再谈容器 364
21.5 容器基础 364
21.6 面板 365
21.7 框架 366
21.7.1 创建框架 366
21.7.2 框架特性 367
21.7.3 使用框架使用户的小应用程序单独运行 368
21.7.4 为框架增加菜单 369
21.7.5 使用菜单 370
21.7.6 弹出式菜单 373
21.8 对话框 373
21.8.1 创建对话框 373
21.8.2 可重用的OK对话框 374
21.9 滚动窗格 378
21.10 再谈布局管理器 378
21.10.1 流式布局 379
21.10.2 网格布局 380
21.10.3 方位布局 381
21.10.4 网格块布局 382
21.11 镶边 386
21.12 空布局管理器 387
21.13 从Sun公司的产品进一步扩展 387
第22章 图形 388
22.2 paint方法、Update方法和repaint方法 389
22.3 Graphics类 389
22.1 Java图形 389
22.3.1 坐标系统 390
22.3.2 画线 390
22.3.3 画矩形 391
22.3.4 画三维矩形 391
22.3.5 画圆角矩形 393
22.3.6 画圆和椭圆 394
22.3.7 画多边形 395
22.4 Polygon类 396
22.5画文本 397
22.5.1 Font类 399
22.5.2 FontMetrics类 402
22.6 画模式 403
22.7 绘制图像 406
22.8 Media Tracker类 408
22.9 实用图形类 411
22.9.1 Point类 411
22.9.3 Rectangle类 412
22.9.2 Dimension类 412
22.10 Color类 414
22.11 裁剪 416
22.12 动画技术 417
22.13 打印 419
第23章 JFC—Java基础类 421
23.1 Java基础类 422
23.2.1 设置JFC 424
23.3 Helloworld 424
23.2 JEC:概览 424
23.3.1 编译HellooWorldJFC 425
23.3.2 运行中的HelloworldJFC 425
23.3.3 理解HelloWorldJFC 426
23.3.4窗格分层 426
23.4 改进Helloworld 426
23.4.1 JLabel 427
23.4.2增加图标 428
23.4.3 关闭窗口 428
23.5 使用JFC增加按钮 429
23.5.3 监听来自于按钮的动作 430
23.5.2 设置快捷键和助记符 430
23.5.1 理解ButtonExample 430
23.6 增加工具提示和图标 431
23.7 使用弹出式菜单 432
23.7.1 理解PopupExample 434
23.8 边 435
23.8.1 理解BorerButtous 436
23.8.2 更多的边 436
23.9 复选框和单选按钮 437
23.9.3 使用箱和箱式布局 439
23.9.2 使用ActionListeners和设置事件 439
23.9.1 理解CheckBoxPanel 439
23.10 使用CheckBoxPanel改变文本对齐方式 440
23.10.1 理解CheckBoxPanel 442
23.10.2 改变对齐方式 442
23.11 标签窗格 442
23.11.1 理解JTabbedPane 443
23.11.2 其它的JTabbedPane能力 444
23.12 滑杆 444
23.13 进度条 446
13.12.3 捕捉滑杆的变化 446
23.12.1 理解SliderExample 446
23.12.2 设置刻度标志 446
23.13.1 理解ProgressBarExample 449
23.13.2 创建和控制进度条 449
23.13.3 ProgressThread 450
23.13.4 RrogressMonitor 450
23.13.5 ProgressMonitorlnputStream 453
第24章 高级JFC 456
24.1 模型-视-控制—JFC设计 457
24.1.1 比较MVC和AWT设计 457
24.1.2 这种模式的部件用在哪里 458
24.1.3 深入研究MVC部件是如何工作的 458
24.1.4 为什么要理解MVC 459
24.1.5 使用JFC的可插入的外观-和-感觉 460
24.1.6 修改外观-和-感觉 461
24.2 菜单和工具条 462
24.2.1 理解MenuBar示例 465
24.2.2 加速键 466
24.3 列表框和组合框 467
24.3.1 理解ListCombExample 468
24.3.2列表视模型 468
24.4 使用表格 470
24.4.1 理解TableExample 471
24.4.2 表格模式 471
24.4.3 单元编辑器 473
24.5.1 树结点 475
24.5 树 475
24.5.2 树模型 477
24.5.3 理解新的TreeExample 480
24.5.4 removeSelctedNode 480
24.5.5 AddTextFieldValue() 480
24.6 使用JEditor显示HTML文件 481
24.6.1 理解HTMLView 483
24.6.2 监听超链事件 483
24.6.3 设置新页 483
24.7 创建图标 484
24.6.4 JTextField 484
24.8 JFC小应用程序 487
第25章 图像 488
25.1 在屏幕上绘制图像 489
25.2 生产者、消费者和观察者 492
25.3 图像过滤器 494
25.4 从内存拷贝图像 496
25.5 将图像拷贝到内存 498
25.6 颜色模式 506
25.6.1 DirectColorModel类 507
25.6.2 IndexColorModel类 508
25.6.3 RGBImageFilter类 508
25.6.4 通过颜色循环产生动画 513
第26章 Java二维图形 520
26.1 Graphics2D对象 521
26.2 Java二维应用编程接口中的坐标 521
26.3 画图 522
26.3.1 画线 522
26.3.5 画弧 523
26.3.4 绘制椭圆和圆 523
26.3.2 绘制矩形 523
26.3.3 绘制圆角矩形 523
26.3.6 画曲线 524
26.3.7 绘制任意形状 525
26.4 不同的笔划 525
26.5 自定义填充 527
26.6 转换 530
26.7 绘制文本 532
26.7.1 有风格设置的字符串 532
26.7.2 文本布局 533
26.7.3 字符属性 534
26.8 绘制图像 535
26.8.1 缓冲区中的图像 535
26.8.2 将图像拷贝到BufferedImage中 536
26.8.3 过滤缓冲区里的图像 536
26.8.4 操作缓冲区图像 542
26.9 透明 546
26.10 裁剪 547
第四部分 输入输出 551
第27章 文件和流 553
27.1 什么是流 554
27.2 基本输入输出类 555
27.2.1 InputStream类 555
27.2.2 OutputStream类 557
27.2.3 System.in对象和System.out对象 557
27.2.4 PrintWriter类 558
27.3.2 FileInputStream类 560
27.3.1 文件安全 560
27.3 处理文件 560
27.3.3 使用FileOutputStream类 561
27.3.4 使用File类 563
27.3.5 RandomAccessFile类 567
27.4 使用管道 569
27.4.1 PipedInputStream类和PipedOutputStream类 569
27.4.2 PipeApp应用程序 570
27.4.3 探究main()方法 573
27.4.4 探究changeToY()方法 575
27.4.5 探究changeToZ()方法 576
27.4.6 探究YThread类 577
27.4.7 过滤流 578
27.5 缓冲区里的流 578
27.6 数据流 578
27.6.1 DataInput接口 579
27.6.2 DatA0utput接口 579
27.7字节数组流 580
27.6.3 DataInputStream类和DatA0utputStream类 580
27.8 字符数组流 581
27.9 字节和字符之间的转换 581
27.10 StringBufferInputStream 582
27.11 对象流 582
27.12 其它流 585
27.12.1 LineNumberReader类 585
27.12.2 SequenceInputStream类 586
27.12.3 PushbackInputStream类 586
27.13 Stream Tokenizer类 587
第28章 使用字符串和文本 590
28.1 字符串简介 591
28.2 使用String类 592
28.2.1 获取关于String对象的信息 593
28.2.2 比较字符串 596
28.2.3 字符串抽取 599
28.2.4 字符串操作 602
28.3.1 创建StringBuffer对象 603
28.3 使用StringBuffer类 603
28.3.2 获取关于StringBuffer对象的信息 604
28.3.3 StringBuffer对象 604
28.3.4 操作StringBuffer对象 604
28.4 使用StringTokenizer类 605
28.5 字体处理 608
28.5.1 获取字体属性 608
28.5.2 获取字体度量 610
28.5.3 创建字体 611
28.5.4 使用字体 611
第29章 使用多国语言实现 614
29.1 为什么使用多国语言实现 615
29.2 什么是多国语言实现 615
29.3 Java对多国语言实现的支持 615
29.3.1 Locale类 616
29.3.2 将场所敏感数据打包 618
29.3.3 Java.util包中的其它与多国语言实现有关的部分 621
29.4 多国语言实现的输入和输出(I/O) 621
29.4.1 字符集转换器 622
29.4.2 Reader和Wtrter 623
29.5 新的java.text包 624
29.6 示例:InternationalTest 625
第30章 通信和网络 629
30.1 TCP/IP概述 630
30.1.1 OSI参考模型 630
30.1.2 TCP/IP网络模型 630
30.2 TCP/IP协议 633
30.2.1 Internet协议(IP) 633
30.2.2 传输控制协议(TCP) 633
30.3.2 一般URL格式 634
30.3.1 URL语法 634
30.2.3 用户数据报协议(UDP) 634
30.3 统一资源定位器(URL) 634
30.4 Java和URL 635
30.4.1 URL类 635
30.4.2 连接到URL上 636
30.4.3 以HTTP为中心的类 637
30.4.4 示例:定制AltaVista搜索引擎 637
第31章 TCP套接字 644
31.1 TCP套接字基础 645
31.1.1 什么是套接字 645
31.1.2 Java TCP套接字类 647
31.1.3 定制套接字行为 649
31.2 创建TCP客户/服务器应用程序 650
31.2.1 设计一个应用程序协议 650
31.2.2 开发股票客户程序 651
31.2.3 开发股票报价服务器程序 656
31.2.4 运行客户和服务器应用程序 663
第32章 UDP套接字 664
32.1 UDP信息概览 665
32.1.1 UDP套接字的特性 665
32.1.2 Java UDP类 666
32.2 创建UDP服务器程序 667
32.2.1 启动服务器 671
32.2.2 StartServing()方法处理请求 671
32.2.3 getTimeBuffer()方法创建字节数组 671
32.2.4 运行时间服务器程序 671
32.3 创建UDP客户程序 671
32.3.1 启动TimeCompare 676
32.3.2 getTimes()方法:TimeCompare的执行路径 677
32.3.3 printTimes()方法:显示比较结果 677
32.3.4 运行应用程序 677
32.4 使用IP多点发送 678
32.4.1 Java的多点发送 679
32.4.2 多点发送应用程序 680
第33章 java.net 686
33.1 URL类 687
33.1.2 获取URL信息 688
33.1.1 获取URL内容 688
33.2 URLConnection类 689
33.3 HTTPURLConnection类 691
33.4 URLEncoder类 691
33.5 URLDecoder类 692
33.6 URLStreamHandler类 692
33.7 ContentHandler类 693
33.8 Socket类 693
33.8.1 发送和接收Socket数据 694
33.8.3 设置Socket选项 695
33.8.2 获取Socket信息 695
33.8.4 关闭Socket连接 696
33.8.5 等待到来的数据 696
33.8.6 一个简单的Socket客户程序 698
33.9 ServerSocket类 701
33.9.1 接收进入的套接字连接 701
33.9.2 获得服务器套接字地址 702
33.9.3 编写一个服务器程序 702
33.10.1转换名字为地址 706
33.10 InetAddress类 706
33.10.3 获得一个Java小程序的起始地址 707
33.11 DatagramSocket类 707
33.10.2 检验InetAddress 707
33.12 DatagramPacket类 709
33.12.1广播数据报 709
33.12.2 一个简单的数据报服务器程序 710
33.13 多点发送套接字 712
第34章 Java安全性深析 714
34.1 Java安全性的必要性 715
34.2.1 第一部分:语言所提供的安全措施 716
34.2 Java安全性框架 716
34.2.2 第二部分:Java编译器 717
34.2.3 第三部分:检验器 717
34.2.4 第四部分:类装载器 718
34.2.5 第五部分:建立安全性策略 718
34.2.6 总结 718
34.3. Java小程序的限制 719
34.3.1 Java小程序与应用程序 719
34.3.3 Java浏览器的安全性策略 720
34.3.2 Security Manager类 720
34.4 Java安全性问题 723
34.4.1 己知的缺陷 724
34.4.2 拒绝服务攻击 725
34.5 Java安全性API:扩展Java小程序边界 725
34.5.1 均衡密码技术(SymmetricCryptography) 726
34.5.2 公共密钥加密 727
34.5.3 资格授权 728
34.5.5 密钥管理 729
34.5.4 实现了什么 729
34.5.6 为一个JAR文件数字签名 730
34.5.7 定义策略 731
34.5.8 运行Java小程序 731
34.6 安全性API 731
34.6.1 公共密钥和私人密钥类 731
34.6.2 Signature类 732
34.6.3身份及签名者 732
34.6.5 IdentityScope类 733
34.6.4 资格证 733
第35章 对象系列化 736
35.1 什么是对象系列化 737
35.1.1 对象系列化如何运作 740
35.1.2 使用对象引用处理对象 740
35.2 对象系列化示例 740
35.2.1 一个写Date类的应用程序 740
35.2.3 编译和运行DateWrite 742
35.2.4 一个读人Date类的简单应用程序 742
35.2.2 在JDK1.02下运行DateWrite 742
35.2.5 编译和运行DateRead 744
35.2.6 使用Java小程序读人Date类 744
35.3 写和读自己的对象 745
35.4 定制对象系列化 747
第36章 远程方法调用 750
36.1 什么是远程方法调用 751
36.1.1 创建远程对象 751
36.1.2 一个RMI应用程序样本 751
36.1.4 创建实现类 752
36.1.3 创建远程接口 752
36.1.5 编译RemoteServer 754
36.1.7 创建客户程序 755
36.1.8 启动注册并运行代码 756
36.1.9 绑定RemoteObject到注册 757
36.10 运行客户程序 757
36.2 创建Java小程序客户程序 757
36.3 创建定制套接字 758
36.3.1 创建一个定制套接字 759
36.3.2 创建定制的RMISocketFactory 762
36.3.3 在应用程序中指定套接字工厂 763
36.4 使用激活模型 765
36.4.1 创建可激活对象 766
第37章 管理API 769
37.1 JMAPI组件 770
37.2 JMAPI小程序 770
37.2.1 JmapiHome.html 770
37.2.4 访问管理对象 771
37.2.2 MOContentManagerApplet.html 771
37.2.3 MOPropertyBookApplet.html 771
37.3 创建管理对象 772
37.3.1 管理对象中定义属性 772
37.3.2 管理对象中定义方法 772
37.3.3 编译管理对象 773
37.3.4 导入管理对象 773
37.4 Admin View Module 773
37.4.1 内容管理器和可选择对象 773
37.4.2 图标 777
37.4.3 属性册 780
37.4.4 任务页 781
37.4.5 对话框 784
37.4.6 自验证字段 789
37.4.7 新布局管理器 791
第五部分 数据库 793
第38章 数据库介绍 795
38.1 ODBC和JDBC 796
38.2 关系数据库概念 796
38.2.2 连接 798
38.2.1 SQL 798
38.3 ODBC技术概述 801
38.3.1 ODBC一致层 803
38.3.2 ODBC函数和命令集 804
38.4 高级客户/服务器概念 805
38.4.1 客户/服务器系统层 805
38.4.2 事务 806
38.4.3 数据光标 807
38.4.4 复制 809
第39章 JDBC:Java数据库连接 810
39.1 JDBC概述 811
39.1.1 JDBC是如何工作的 811
39.1.2 安全模型 813
39.1.3 JDBC-ODBC桥接器 813
39.2 JDBC实现 813
39.2.1 JDBC类—概述 814
39.2.2 JDBC应用程序剖析 816
39.2.3 JDBC实例 816
39.3 Connection类 819
39.4 元数据函数 820
39.4.1 DatabaseMetaData 821
39.4.2 ResultSetMetaData 825
39.5 SQLException类 826
39.6 SQL Warning类 827
第40章 JDBC考察 828
40.1 语句 829
40.1.1 Statement 830
40.1.2 PreparedStatement 831
40.1.3 CallableStatement 834
40.2 ResultSet处理检查结果 836
40.3 其它JDBC类 838
40.3.1 java.sql.Date 838
403.2 java.sql.Time 838
40.3.3 java.sql.Timestamp 839
40.3.4 java.sql.Types 839
40.3.5 java.sql.DataTruncation 840
40.4 JDBC的前景 841
第六部分 基于组件的开发 843
第41章 JavaBeans 845
41.1 自包含的组件 846
41.2 组件模型中的重要概念 846
41.2.1 组件字段或属性 846
41.2.2 组件方法或函数 847
41.2.3 事件和相互通信 847
41.2.4 状态维持和存储 847
41.3 设计JavaBean的基础 847
41.3.2 指定Bean所产生或响应的事件 848
41.3.1 指定Bean的属性 848
41.3.3 属性、方法及事件的公开 849
41.3.4 初始化属性值和Bean的定制 849
41.4 创建和使用属性 851
41.4.1 单值属性 851
41.4.2 索引属性 853
41.4.3 绑定性属性 854
41.4.4 限制性属性 855
41.5.1 多点发送事件 856
41.5 使用事件与其它组件通信 856
41.5.2 单点发送事件 857
41.5.3 事件适配器 857
41.6 内省:建立和使用BeanInfo类 859
41.7 定制:提供定制属性编辑器和GUI接口 861
41.7.1 属性编辑器和属性编辑器管理器 861
41.7.2 定制编辑器 862
41.7.3 在非GUI环境中提供另一种可选行为 864
41.8 企业级JavaBeans 865
41.8.1 服务器组件 865
41.8.2 添加组件的“随处运行”功能 866
41.8.3 划分应用程序 866
41.8.4 可重用性及集成 866
41.8.5 非可视组件 866
41.8.6 命名 866
第42章 JavaIDL:Java 的CORBA接口 867
42.1 什么是CORBA 868
42.2.1 IDL模块 870
42.2 Sun公司的IDL到Java的映射 870
42.2.2 IDL常量 871
42.2.3 IDL数据类型 871
42.2.4 枚举类型 871
42.2.5 结构 872
42.2.6 联合 873
42.2.7 序列与数组 875
42.2.8 异常 875
42.3 方法 876
42.2.10 属性 876
42.2.9 接口 876
42.4 创建基本的CORBA服务器 877
42.4.1 编译IDL定义 878
42.4.2 使用IDL的结构所定义的类 878
42.4.3 JavaIDL框架 880
42.4.4 服务器初始化 884
42.5 使用JavaIDL创建CORBA客户程序 885
42.6 在CORBA中创建回叫 888
42.7 CORBA与现有对象的包装 888
42.7.1 与CORBA所定义类型的映射 889
42.7.2 创建远程方法包装 890
42.8 在小程序中使用CORBA 891
42.8.1 选择CORBA还是RMI 891
第43章 Java-COM集成 893
43.1 一个重要的扩充 894
43.2 COM概览 894
43.3 定义COM接口 896
43.6 使用Java创建COM对象 898
43.5 生成GUID 898
43.4 编译ODL文件 898
43.7 从Visual Basic调用Java COM对象 901
43.8 从Excel调用Java对象 902
43.9 从Java调用COM对象 904
第七部分 高级Java 907
第44章 Java媒体框架 909
44.1 什么是Java媒体框架 910
44.2 创建媒体播放器 910
44.2.2 添加播放器到应用程序 911
44.2.1 预提取媒体 911
44.2.3 以侦听器注册小程序 912
44.2.4 启动播放器 913
44.2.5 清除及停止播放器 914
44.2.6 综合 914
44.2.7 编译BasicPlayer 917
44.2.8 运行BasicPlayer 917
44.3 播放器的状态 918
44.4 向播放器添加控件 919
44.5.2 设置媒体时间 922
44.5.3 改变播放速度 922
44.5 程序控制播放器 922
44.5.1 启动播放器 922
44.5.4 改变音量 923
44.5.5 媒体播放器尺寸调整 924
44.5.6 添加进展条 925
44.6 连接多个播放器 928
44.7.1 被动媒体流 932
44.7 创建自己的媒体流 932
44.7.2 主动媒体流 933
44.8 一个大型应用程序 933
第45章 商业及Java Wallet 943
45.1 JCC的安全性支持 944
45.2 商业消息 944
45.3 创建盒式带 944
45.3.1 CassetteControl类 945
45.3.2 工具盒式带类 947
45.3.3 协议盒式带 956
45.3.4 操作盒式带 963
45.3.5 服务盒式带 964
45.3.6 用户接口盒式带 967
第46章 数据结构及Java工具 979
46.1 什么是数据结构 980
46.2 集成 980
46.2.1 集成接口 980
46.2.2 List接口 981
46.2.3 Map接口 982
46.2.4 Iterator接口 983
46.2.5 ListIterator接口 983
46.3 Vector类 983
46.3.1 创建向量 984
46.3.2 向向量中添加对象 984
46.3.3 访问向量中的对象 985
46.3.4 Enumeration接口 986
46.3.5 在向量中搜索对象 986
46.3.6 从向量中删除对象 987
46.3.7 改变向量的大小 988
46.4 HashTable类 988
46.4.1 散列表中存储对象 989
46.4.2 从散列表中检索对象 989
46.4.3 从散列表中删除对象 989
46.5 Properties类 990
46.5.1 设置属性 990
46.5.2 查询属性 991
46.5.3 保存和提取属性 991
46.6 Stack类 992
46.7 Date类 993
46.7.1 比较日期 994
46.7.2 转换日期为字符串 994
46.7.3 改变日期属性 995
46.8 BitSet类 995
46.9 SringTokenizer类 996
46.10 Random类 998
46.11 Observable类 998
第47章 java.lang 1008
47.1 Java.lang软件包 1009
47.2 Object类 1010
47.2.1 检测对象相等 1010
47.2.2 对象的字符串表示 1011
47.2.3 克隆对象 1011
47.2.4 析构化 1012
47.2.5 系列化对象 1013
47.2.6 散列码 1013
47.2.7 wait()和notify() 1014
47.2.8 获取对象的类 1017
47.3 Class类 1017
47.3.1 动态加载 1017
47.3.2 获取关于类的信息 1018
47.4 Package类 1019
47.5 String类 1020
47.5.1 创建字符串 1020
47.5.3 比较字符串 1022
47.5.2 字符串长度 1022
47.5.4 搜索字符串 1023
47.5.5 提取部分字符串 1024
47.5.6 修改字符串 1024
47.6 StringBuffer类 1025
47.6.1 创建StringBuffer 1025
47.6.2 添加字符到一个StringBuffer中 1025
47.6.3 StringBuffer的长度 1026
47.6.4 在StringBuffer中获取和设置字符 1026
47.7.1 创建线程 1027
47.7 Thread类 1027
47.6.5 从StringBuffer创建一个字符串 1027
47.7.2 启动和结束线程 1028
47.7.3 等待线程完成 1028
47.7.4 休眠与让出 1029
47.7.5 守护线程 1030
47.7.6 线程优先级 1030
47.7.7 获得线程信息 1031
47.8 ThreadGroup类 1032
47.9 Throwable类 1033
47.10 System类 1034
47.10.1 系统输入输出流 1034
47.10.2 获取当前时间 1035
47.10.3 退出虚拟机 1035
47.10.4 获得系统属性 1035
47.10.5 强制垃圾收集 1036
47.11.2 运行外部程序 1037
47.11.1 查询可用内存 1037
47.10.6 加载动态库 1037
47.11 Runtime类和 Process类 1037
47.12 Math类 1038
47.12.1 min和max 1038
47.12.2 绝对值 1039
47.12.3 随机数 1039
47.12.4舍入 1039
47.12.5 幂和对数 1040
47.12.6 三角函数 1040
47.14 Character类 1041
47.12.7数学常量 1041
47.13 对象包装类 1041
47.15 Boolean类 1042
47.16 Number类 1043
47.17 Integer类 1043
47.18 Long类 1044
47.19 Byte类 1045
47.20 Short类 1046
47.21 Float类 1046
47.22 Double类 1047
47.23 Void类 1048
47.24 java.math.BigInteger类 1048
47.24.1 创建BigInteger 1048
47.25 java.math.BigDecimal类 1050
47.25.1 创建一个BigDecimal 1050
47.26 Class Loader类 1051
47.27 SecurityManager类 1055
47.28 Compiler类 1056
第48章 反射 1058
48.1 什么是反射 1059
48.2 创建一个只知道构造器列表的类 1060
48.3检查类的方法 1065
48.3.1 获得方法列表 1065
48.4 使用getDeclaredMethod()方法激活方法 1068
48.5 激活使用本地类型作为参数的方法 1071
48.6获得一个类的声明字段 1072
第49章 使用其它语言扩展Java 1074
49.2 本地化 1075
49.1 本地方法:Java最终边界 1075
49.3 JNI精粹 1076
49.4 编写本地方法 1076
49.4.1 第一步:编写Java代码 1076
49.4.2 第二步:将Java代码编译成类文件 1077
49.4.3 第三步:产生JNI风格的头文件 1077
49.4.4 第四步:实现本地方法 1078
49.4.5 第五步:创建共享库 1078
49.5从本地方法访问对象字段 1079
49.4.6 第六步:运行Java程序 1079
49.6 从本地方法访问Java方法 1083
49.7 访问静态字段 1085
49.8 访问静态方法 1086
49.9 本地方法的异常处理 1086
第50章 Java与C(++) 1088
50.1 共同的祖先 1089
50.2 基本Java语法 1089
50.2.1词汇结构 1089
50.2.2 注释 1089
50.2.4 运行时库 1090
50.2.3丢弃的内容 1090
50.3 Java程序结构 1091
50.3.1 程序总体框架 1091
50.3.2只有方法没有函数 1091
50.3.3 无预处理器 1092
50.3.4 源文件名 1093
50.4 Java数据类型 1093
50.4.1 整型数据类型 1093
50.4.4 浮点类型 1094
50.4.2 统一码字符 1094
50.4.3 布尔数据类型 1094
50.4.5 集合数据类型 1095
50.4.6 类型转换与强制类型转换 1095
50.5 对象和类 1095
50.5.1 声明引用类型 1095
50.5.2 操作引用 1096
50.5.3 方法调用:通过值调用和通过引用调用 1096
50.5.4 原始数据类型及java.lang的包装类 1097
50.5.5 对象的生存周期 1098
50.5.6 Java引用与C++指针 1099
50.6 集合类型:字符串、数组及向量 1099
50.6.1字符串 1099
50.6.2 数组 1100
50.6.3 向量 1101
50.7 类的层次与继承 1102
50.7.1 继承的语法 1102
50.7.4 接口与多重继承 1103
50.7.3 继承和多态性 1103
50.7.2 instanceof操作符 1103
50.7.5 超级引用 1104
50.7.6 没有范围解析操作符 1105
50.8 语句 1105
50.8.1 循环 1105
50.8.2 条件语句 1106
50.8.3 同步语句 1106
50.8.4 操作符与表达式 1106
50.9 名字空间 1107
第八部分 调试Java 1109
第51章 调试Java 代码 1111
51.1 sun.tools.debug包的体系结构 1112
51.1.1客户/服务器程序调试器管理 1112
51.1.2 特殊类型 1117
51.1.3 本地类型 1124
51.1.4 堆栈管理 1125
51.1.5 线程管理 1127
51.1.6 总结 1130
51.2.1 基本结构 1131
51.2 深入探讨JDB 1131
51.2.2 JDB命令行 1132
51.2.3 JDB输入文件 1134
51.2.4 JDB命令集 1134
51.2.5 一般命令 1136
51.2.6 上下关系命令 1138
51.2.7 信息命令 1139
51.2.8 断点命令 1143
51.2.10 线程命令 1145
51.2.9 异常命令 1145
51.2.11 JDB总结 1146
第52章 理解.class 文件 1148
52.1 基本度量 1149
52.2 .class文件的元素 1149
52.3 定义 1149
52.3.1 常量池 1150
52.3.2 类型信息 1153
52.3.3 属性 1154
52.4 .class文件的结构 1155
52.4.1 类标志字段 1156
52.4.2 字段信息结构 1156
52.4.3 ConstantValue属性 1157
52.4.4 方法信息结构 1158
52.4.5 SourceFile属性 1161
52.5 现在可以做些什么 1161
第53章 Java虚拟机的内部机制 1163
53.1 JVM的元素 1164
53.1.1 虚拟机的体系结构 1164
53.1.2 内存管理和垃圾收集 1166
53.1.3 类文件验证 1169
53.1.4 JVM字节码 1170
第九部分 JavaScript 1181
第54章 Java与JavaScript 1183
54.1 Java与JavaScript 1184
54.2 JavaScript并非Java 1184
54.3 解释与编译 1185
54.5 强类型和松散类型 1188
54.4 基于对象和面向对象 1188
54.6 动态绑定和静态绑定 1189
54.7 磁盘访问限制 1189
54.8 不同功能(范围限制)及与HTML的代码集成 1190
54.9 快速发展与相对稳定 1192
54.10 库 1193
54.11 JavaScript和Java集成 1194
第55章 JavaScript入门 1195
55.1 基础 1196
55.3 事件 1197
55.2 第一个脚本 1197
55.4 使用事件句柄 1198
55.5 变量 1199
55.6 变量名 1200
55.7变量的作用范围 1201
55.8 常量 1201
55.9 表达式和操作符 1201
55.10 控制语句 1203
55.10.1 条件语句 1203
55.10.2 循环语句 1205
55.10.3 break和continue语句 1206
55.10.4 注释语句 1207
55.11 JavaScript的函数 1208
55.12 数组 1210
55.13 内置函数 1211
55.14 对象 1211
55.14.1 圆点指示符 1212
55.14.2 方法与属性 1212
55.14.3 Window对象 1212
55.14.4 Document对象 1213
55.14.5 Form对象 1214
55.14.6 Navigator对象 1215
55.14.7 String对象 1215
55.14.8 Math对象 1216
55.14.9 Date对象 1217
55.15 一个实例 1218
第十部分Java资源 1221
第56章 Java资源 1223
56.1 Web站点 1224
56.1.1 Earthweb的developer.com 1224
56.1.2 Focus on Java (Java焦点) 1224
56.1.3 Inside Java 1224
56.1.4 Java Applet Rating Service(JARS) 1224
56.1.8 Java Lobby 1225
56.1.9 Java Resources from Netscape(来自Netscape的Java资源) 1225
56.1.10 Java World 1225
56.1.7 Java Developer Connection(Java开发者连接) 1225
56.1.6 Java Developer Journal(Java开发人员杂志) 1225
56.1.5 Java Boutique 1225
56.1.11 JavaBeans站点 1226
56.1.12 Sun公司的主页 1226
56.1.13 Javology—Java新闻及观点在线电子杂志 1226
56.1.14 微软的Java主页 1226
56.1.15 Swing Connection 1226
56.1.16 TeamJava 1226
56.3 邮件清单 1227
56.2 新闻组 1227
56.4 对移植问题的支持 1228
56.4.1 Amiga移植问题 1228
56.4.2 DEC Alpha OSF/I移植 1228
56.4.3 Linux移植问题 1228
56.4.4 NEXTSTEP移植问题 1229
第十一部分 附录 1231
附录 光盘的内容 1233
1 本书的实例代码 1234
2 第三方软件 1234
3 赠送软件 1234