第1章 多线程 1
1.1 什么是线程 2
1.1.1 利用线程给其他任务提供一个机会 5
1.1.2 运行和启动线程 5
1.1.3 运行多线程 9
1.2 线程属性 9
1.2.1 线程状态 9
1.2.2 离开阻塞状态 11
1.2.3 终止状态 12
1.3 中断线程 13
1.4 线程优先级 14
1.5 利己线程 19
1.6 线程组 22
1.7 同步 23
1.7.1 不利用同步化机制的线程通信 23
1.7.2 同步访问共享资源 26
1.7.3 对象锁 28
1.7.4 Wait()和notify()方法 29
1.7.5 死锁 33
1.8 为什么不推荐使用stop()和suspend()方法 35
1.9 动画 39
1.9.1 Runnable接口 39
1.9.2 加载和显示图像 40
1.9.3 用线程控制动画 41
1.10 计时器 44
1.11 线程和Swing包 48
1.12 利用管道实现线程间的通信 54
第2章 数据结构 58
2.1 数据结构接口 58
2.1.1 数据结构接口及其实现 58
2.1.2 Java库的Collection和Iterator接口 61
2.2 具体数据结构 65
2.2.1 链表 65
2.2.2 ArrayList类 72
2.2.3 静列集 73
2.2.4 树集 77
2.2.5 映像 81
2.3 Java数据结构平台 86
2.3.1 视图和封装器 89
2.3.2 批处理操作 94
2.3.3 连接传统API 94
2.4 算法 95
2.4.1 排序和打乱 96
2.4.2 二分法查找 98
2.4.3 简单算法 99
2.4.4 编写自己的算法 100
2.5 传统的数据结构 101
2.5.1 Hashtable类 102
2.5.2 枚举 102
2.5.3 属性集 103
2.5.4 位数组 108
3.1 连接服务器 113
第3章 网络编程 113
3.2 实现服务器 120
3.3 发送E-mail 125
3.4 URL连接 128
3.5 发送FROM格式数据 135
3.5.1 CGI文稿编排程序和Servlet 135
3.5.2 向网络服务器发送数据 137
3.6 获取网上信息 142
3.6.1 Applet安全性 146
3.6.2 代理服务器 149
3.6.3 测试天气预报Applet 155
第4章 Java数据库连接 157
4.1 JDBC的设计方案 158
4.2 JDBC的典型用法 160
4.3 结构化查询语言 161
4.4 安装JDBC 165
4.5 基本的JDBC编程概念 166
4.5.1 数据库URL 166
4.5.2 建立连接 166
4.5.3 执行动作命令 168
4.5.4 JDBC查询 169
4.5.5 高级SQL类型(JDBC2) 170
4.6 构建数据库 172
4.7 执行查询 176
4.8 元数据 183
4.9.1 可滚动的结果集(JDBC2) 189
4.9 可滚动的和可更新的结果集 189
4.9.2 可更新的结果集(JDBC2) 191
第5章 远程对象 195
5.1 远程对象介绍:客户机和服务器的作用 195
5.2 远程方法调用 197
5.2.1 代码存根和参数调度 198
5.2.2 动态类装入 199
5.3 安装RMI 200
5.3.1 接口和实现 200
5.3.2 定位服务器对象 202
5.3.3 客户机一方 205
5.3.4 为部署作准备 208
5.3.5 部署程序 210
5.4.1 传递非远程对象 211
5.4 远程方法的参数传递 211
5.4.2 传递远程对象 219
5.4.3 使用集合中的远程对象 221
5.4.4 克隆远程对象 222
5.4.5不适当远程参数 223
5.5 使用RMI的小应用程序 223
5.6 Java IDL和CORBA 227
5.6.1 接口定义语言(IDL) 228
5.6.2 CORBA范例 231
5.6.3 实现CORBA服务器 238
第6章 高级Swing 243
6.1 树 243
6.1.2 结点枚举 256
6.1.3 渲染结点 257
6.1.4 监听树事件 263
6.1.5 自定义树模型 267
6.2 表 273
6.2.1 简单的表 273
6.2.2 表模型 276
6.2.3 单元渲染和编辑 289
6.2.4 处理行和列 301
6.3 Styled文本组件 307
6.4 滑标和进度计 312
6.4.1 滑标 312
6.4.2 进度条 317
6.4.3 进度监视器 321
6.4.4 监视输入流进度 324
6.5 工具条和工具提示 328
6.6 组件管理器 332
6.6.1 分离窗格 332
6.6.2 标签窗格 335
6.6.3 桌面窗格和内部帧 338
6.1.1 简单的树 344
第7章 高级AWT 353
7.1 渲染途径 353
7.2 图形 355
7.2.1 图形类继承结构 356
7.2.2 图形类的使用 359
7.3 区域 369
7.4 笔画 372
7.5 颜色 378
7.6 坐标转换 382
7.7 剪辑 389
7.8 透明与组合 393
7.9 渲染提示(rendering hint) 399
7.10 图像处理 404
7.10.1 存取图像数据 405
7.10.2 过滤图像 410
7.11 打印 417
7.11.1 单页打印 417
7.11.2 多页打印 424
7.11.3 打印预览 425
7.12 剪贴板 431
7.12.1 数据传输的类和接口 432
7.12.2 文本传输 433
7.12.3 创建Transferable对象 436
7.12.4 创建一个图像Transferable类 437
7.12.5 使用ImageSelection类 438
7.12.6 通过系统剪贴板传输Java对象 442
7.13 拖放 453
7.13.1 放置目标 454
7.13.2 拖动源 462
第8章 JavaBeans 468
8.1 为什么要Beans 468
8.2 Bean编写过程 470
8.3 BDK和BeanBox 471
8.3.1 使用BeanBox 472
8.3.3 在BeanBox中创建一个简单应用程序 473
8.3.2 使用BeanBox中的Bean 473
8.3.4 保存和恢复BeanBox的状态 475
8.3.5 从BeanBox创建一个Applet 475
8.3.6 在工具栏中增加Bean 476
8.4 通过Bean创建一个图像预览应用程序 476
8.5 Bean属性和事件的命名模式 478
8.6 Bean属性类型 480
8.6.1 简单属性 480
8.6.2 索引属性 480
8.6.3 关联属性 481
8.6.4 限制属性 486
8.7 添加自定义Bean事件 492
8.8 属性编辑器 496
8.9 超越命名模式——创建一个BeanInfo类 510
8.10 定制器 517
8.11 Bean环境 524
8.11.1 自检的高级用法 525
8.11.2 查找兄弟Bean 526
8.11.3 使用Bean环境服务 529
第9章 安全性 536
9.1 类装载器 536
9.2 字页码验证 542
9.3 安全管理器和权限 546
9.3.1 Java 2平台安全机制 547
9.3.2 安全策略文件 551
9.3.3 自定义权限类 557
9.3.4 实现一个权限类 557
9.3.5 自定义的安全管理器 562
9.4 java.security包 568
9.4.1 消息摘要 569
9.4.2 数字签名 573
9.5 验证 578
9.5.1 X.509证书格式 580
9.5.2 生成证书 582
9.5.3 证书签名过程 584
9.6 代码签名 589
9.6.1 签署JAR文件 590
9.6.2 部署提示 593
9.6.3 软件开发商证书 594
第10章 国际化 596
10.1 地区性 596
10.2 数字与货币 601
10.3 日期与时间 605
10.4.1 整理(排序) 610
10.4 文本 610
10.4.2 文件分界 616
10.4.3 信息格式化 620
10.4.4 选择(choice)格式 624
10.4.5 字符转换 626
10.4.6国际原则和源文件 627
10.5 资源包 628
10.5.1 资源定位 628
10.5.2 把资源放进包里 629
10.6 图形用户接口地方化 632
第11章 本地方法 645
11.1 用Java编程语言调用一个C函数 646
11.2 数值参数和返回值 650
11.3 字符串参数 651
11.4 访问对象域 656
11.5 访问静态域 659
11.6 签名 660
11.7 调用Java方法 661
11.7.1 非静态方法 661
11.7.2 静态方法 664
11.7.3 构造方法 665
11.7.4 其他方法调用 665
11.8 数组 667
11.9 错误处理 670
11.10 启用API 674
11.11 一个完整的例子:访问Windows注册表 676
11.11.1 Windows注册表概况 676
11.11.2 读取注册表的Java平台接口 677
11.11.3 用本地方法实现注册表访问的函数 678