第1章 一种现代语言 1
1.1 进入Java世界 2
1.1.1 Java的起源 2
1.1.2 成长 3
1.2 虚拟机 4
1.3 Java与其他语言的比较 7
1.4 设计安全 10
1.4.1 语法简单性 10
1.4.2 类型安全和方法绑定 11
1.4.3 递增开发 12
1.4.4 动态内存管理 13
1.4.5 错误处理 14
1.4.6 线程 14
1.4.7 可伸缩性 15
1.5 实现安全 15
1.5.1 校验器 17
1.5.2 类加载器 18
1.5.3 安全管理器 18
1.6 应用和用户级安全性 19
1.7 Java路线图 20
1.7.1 过去:Java 1.0到Java 1.6 20
1.7.2 如今:Java 7 21
1.7.3 将来 23
1.7.4 可用性 24
第2章 第一个应用 25
2.1 Java工具和环境 25
2.2 配置Eclipse并且创建项目 26
2.2.1 导入本书示例 28
2.3 HelloJava 29
2.3.1 类 32
2.3.2 main()方法 32
2.3.3 类和对象 34
2.3.4 变量与类类型 34
2.3.5 HelloComponent 35
2.3.6 继承 36
2.3.7 JComponent类 37
2.3.8 关系与指向 38
2.3.9 包与导入 39
2.3.10 paintComponent() 方法 40
2.4 HelloJava2:余波未平 41
2.4.1 实例变量 43
2.4.2 构造函数 43
2.4.3 事件 45
2.4.4 repaint()方法 47
2.4.5 接口 48
2.5 HelloJava3:按钮的震撼 49
2.5.1 方法重载 51
2.5.2 组件 52
2.5.3 容器 52
2.5.4 布局 53
2.5.5 派生子类与子类型 53
2.5.6 更多事件和接口 54
2.5.7 颜色的说明 55
2.5.8 静态成员 55
2.5.9 数组 56
2.5.10 颜色的相关方法 56
2.6 HelloJava4:Netscape的反戈一击 58
2.6.1 线程 60
2.6.2 Thread类 60
2.6.3 Runnable接口 61
2.6.4 启动线程 62
2.6.5 在线程中运行代码 62
2.6.6 异常 63
2.6.7 同步 64
第3章 使用工具 66
3.1 JDK环境 66
3.2 Java虚拟机 67
3.3 运行Java应用程序 67
3.4 类路径 69
3.5 Java编译器 71
3.6 JAR Files 73
3.6.1 文件压缩 73
3.6.2 jar工具 74
3.6.3 Pack200工具 77
3.7 策略文件 78
3.7.1 默认的安全性管理器 78
3.7.2 policytool工具 79
3.7.3 通过默认的安全管理器使用策略文件 81
第4章 Java语言 82
4.1 文本编码 82
4.2 注释 83
4.3 类型 85
4.3.1 基本类型 86
4.3.2 引用类型 89
4.3.3 字符串的有关问题 91
4.4 语句和表达式 92
4.4.1 语句 93
4.4.2 表达式 99
4.5 异常 103
4.5.1 异常和错误类 104
4.5.2 异常处理 106
4.5.3 逐级上浮 108
4.5.4 栈轨迹 109
4.5.5 受查和非受查异常 110
4.5.6 抛出异常 111
4.5.7 try的“潜伏”功用 114
4.5.8 finally子句 115
4.5.9 带有资源的Try 116
4.5.10 性能问题 118
4.6 断言 118
4.6.1 启用和禁用断言 119
4.6.2 使用断言 120
4.7 数组 121
4.7.1 数组类型 122
4.7.2 数组的创建和初始化 122
4.7.3 使用数组 124
4.7.4 匿名数组 126
4.7.5 多维数组 126
4.7.6 深入数组 128
第5章 Java中的对象 129
5.1 类 130
5.1.1 访问字段和方法 132
5.1.2 静态成员 133
5.2 方法 136
5.2.1 局部变量 137
5.2.2 遮蔽 137
5.2.3 静态方法 138
5.2.4 初始化局部变量 139
5.2.5 参数传递与引用 140
5.2.6 基本类型的包装器 142
5.2.7 基本类型的自动装箱和拆箱 144
5.2.8 可变长度的参数列表 145
5.2.9 方法重载 146
5.3 对象创建 148
5.3.1 构造函数 148
5.3.2 使用重载构造函数 149
5.3.3 静态和非静态初始化块 151
5.4 对象销毁 152
5.4.1 垃圾回收 152
5.4.2 最终化 153
5.4.3 弱引用和软引用 154
5.5 枚举 155
5.5.1 枚举值 156
5.5.2 定制化枚举 156
第6章 类之间的关系 158
6.1 派生子类和继承 158
6.1.1 被遮蔽变量 160
6.1.2 覆盖方法 162
6.1.3 特殊引用:this和super 169
6.1.4 类型强制转换 170
6.1.5 使用超类构造函数 172
6.1.6 完全揭密:构造函数和初始化 173
6.1.7 抽象方法和类 173
6.2 接口 174
6.2.1 作为回调的接口 176
6.2.2 接口变量 177
6.2.3 子接口 178
6.3 包与编译单元 179
6.3.1 编译单元 179
6.3.2 包名 180
6.3.3 类可见性 180
6.3.4 导入类 181
6.4 变量和方法的可见性 183
6.4.1 基本访问修饰符 184
6.4.2 子类和可见性 185
6.4.3 接口和可见性 186
6.5 数组和类的层次体系结构 186
6.6 内部类 188
6.6.1 内部类作为适配器 190
6.6.2 方法中的内部类 192
第7章 使用对象和类 198
7.1 Object类 198
7.1.1 相等性与等价 199
7.1.2 散列码 200
7.1.3 复制对象 200
7.2 Class类 203
7.3 反射 205
7.3.1 安全性 208
7.3.2 访问字段 209
7.3.3 访问方法 210
7.3.4 访问构造函数 212
7.3.5 关于数组 213
7.3.6 访问泛型类型信息 213
7.3.7 访问注解数据 214
7.3.8 动态接口适配器 214
7.3.9 反射适用之处 215
7.4 注解 216
7.4.1 使用注解 217
7.4.2 标准注解 218
7.4.3 Apt工具 219
第8章 泛型 220
8.1 容器:构建一个更好的捕鼠器 221
8.2 走进泛型 222
8.3 根本就没有勺子 226
8.3.1 擦除 226
8.3.2 原始类型 228
8.4 参数化类型关系 229
8.5 类型转换 232
8.6 编写泛型类 233
8.6.1 类型变量 233
8.6.2 子类化泛型 234
8.6.3 异常和泛型 235
8.6.4 参数类型限制 236
8.7 边界 237
8.8 通配符 239
8.8.1 所有实例化的超类型 240
8.8.2 有界限通配符 240
8.8.3 思考容器 240
8.8.4 下边界 241
8.8.5 读、写和算术 242
8.8.6 、和原始类型 243
8.8.7 通配符类型关系 244
8.9 泛型方法 245
8.9.1 泛型方法的引入 246
8.9.2 根据参数进行类型推断 247
8.9.3 根据赋值环境做类型推断 248
8.9.4 显示类型调用 249
8.9.5 通配符捕获 249
8.9.6 通配符类型和泛型方法 249
8.10 参数化类型的数组 250
8.10.1 使用数组类型 251
8.10.2 泛型类型的数组有何优点 252
8.10.3 数组类型中的通配符 252
8.11 案例学习:Enum类 253
8.12 案例学习:sort()方法 254
8.13 结论 255
第9章 线程 256
9.1 线程简介 257
9.1.1 Thread类和Runnable接口 258
9.1.2 控制线程 262
9.1.3 线程的消亡 264
9.2 applet中线程的实现 266
9.3 同步 268
9.3.1 对方法的串行化访问 269
9.3.2 访问多线程中的类和实例变量 271
9.3.3 wait()和notify()方法 272
9.3.4 传递消息 274
9.3.5 ThreadLocal对象 278
9.4 调度和优先级 279
9.4.1 线程状态 280
9.4.2 时间片划分 281
9.4.3 优先级 282
9.4.4 让步 283
9.5 线程组 283
9.5.1 使用ThreadGroup类 284
9.5.2 未捕获的异常 284
9.6 线程性能 285
9.6.1 同步的开销 285
9.6.2 线程资源消费 286
9.7 并发工具 287
9.7.1 执行器 288
9.7.2 锁 300
9.7.3 同步构造 303
9.7.4 原子操作 308
9.8 结论 310
第10章 文本处理 311
10.1 其他与文本相关的API 312
10.2 String 312
10.2.1 String构造函数 313
10.2.2 事物的字符串表示 314
10.2.3 字符串比较 315
10.2.4 查找 317
10.2.5 编辑 318
10.2.6 String方法小结 319
10.2.7 StringBuilder和StringBuffer 320
10.3 国际化 321
10.3.1 java.util.Locale类 321
10.3.2 资源包 322
10.4 解析与格式化文本 324
10.4.1 解析基本数字 325
10.4.2 文本分词 326
10.5 Printf式格式化 328
10.5.1 Formatter 329
10.5.2 格式字符串 329
10.5.3 字符串转换 330
10.5.4 基本类型和数字转换 332
10.5.5 标志 334
10.5.6 其他 334
10.6 用java.text包格式化 334
10.7 正则表达式 338
10.7.1 regex记法 339
10.7.2 java.util.regex API 349
第11章 核心实用工具 356
11.1 数学实用工具 356
11.1.1 java.lang.Math类 357
11.1.2 Big/Precise Numbers 359
11.1.3 浮点数组成部分 359
11.1.4 随机数 360
11.2 日期和时间 361
11.2.1 使用日历 362
11.2.2 Time Zones 363
11.2.3 解析和格式化日期 365
11.2.4 Printf式的日期和时间格式化 367
11.3 定时器 368
11.4 集合 370
11.4.1 Collection接口 371
11.4.2 迭代器 374
11.4.3 Collection类型 375
11.4.4 Map接口 378
11.4.5 集合实现 380
11.4.6 哈希码和键值 385
11.4.7 同步和只读集合 386
11.4.8 同步和只读集合 387
11.4.9 WeakHashMap 388
11.4.10 EnumSet和EnumMap 388
11.4.11 排序的集合 389
11.4.12 一个令人激动的例子 389
11.5 特性 391
11.5.1 加载和存储 392
11.5.2 系统特性 393
11.6 首选项API 394
11.6.1 类的首选项 395
11.6.2 首选项存储 395
11.6.3 修改通知 396
11.7 日志API 397
11.7.1 概述 397
11.7.2 日志级别 399
11.7.3 一个简单的例子 400
11.7.4 日志建立特性 401
11.7.5 记录器 403
11.7.6 性能 404
11.8 Observers和Observables 404
第12章 输入/输出功能 406
12.1 流 406
12.1.1 终端I/O 409
12.1.2 字符流 411
12.1.3 流包装器 413
12.1.4 管道 416
12.1.5 流与String的转换 418
12.1.6 Implementing a Filter Stream 420
12.2 文件 421
12.2.1 java.io.File类 422
12.2.2 文件流 427
12.2.3 Random AccessFile 429
12.2.4 Resource Paths 430
12.3 NIO File API 432
12.3.1 FileSystem和Path 433
12.3.2 NIO文件操作 435
12.3.3 目录操作 438
12.3.4 监控路径 440
12.4 串行化 441
12.4.1 使用readObject()初始化 443
12.4.2 SerialVersionUID 443
12.5 数据压缩 444
12.5.1 压缩数据 445
12.5.2 解压缩数据 446
12.5.3 作为文件系统的Zip归档文件 448
12.6 NIO包 449
12.6.1 异步I/O 450
12.6.2 性能 450
12.6.3 映射和加锁文件 450
12.6.4 通道 451
12.6.5 缓冲区 451
12.6.6 字符编码器和解码器 455
12.6.7 FileChannel 457
12.6.8 利用NIO实现可伸缩I/O 463
第13章 网络编程 464
13.1 套接字 466
13.1.1 客户端和服务器 467
13.1.2 DateAtHost客户端 471
13.1.3 TinyHttpd服务器 473
13.1.4 套接字选项 478
13.1.5 代理和防火墙 479
13.2 数据报套接字 481
13.2.1 The HeartBeat Applet 482
13.2.2 InetAddress 486
13.3 简单串行化对象协议 487
13.4 远程方法调用 491
13.4.1 现实的用法 492
13.4.2 远程和非远程对象 492
13.4.3 一个RMI示例 495
13.4.4 RMI and CORBA 504
13.5 使用NIO的可伸缩I/O 504
13.5.1 可选择通道 505
13.5.2 使用select 506
13.5.3 LargerHttpd 508
13.5.4 非阻塞客户端端操作 512
第14章 Web编程 514
14.1 统一资源定位器(URL) 514
14.2 URL类 515
14.2.1 流数据 516
14.2.2 将内容获取为对象 517
14.2.3 Managing Connections 518
14.2.4 实用的处理器 519
14.2.5 其他处理器框架 519
14.3 与Web应用通信 520
14.3.1 使用GET方法 521
14.3.2 使用POST方法 521
14.3.3 The HttpURLConnection 524
14.3.4 SSL和安全Web通信 525
14.3.5 URL、URN和URI 525
14.4 Web Services 526
14.4.1 XML-RPC 527
14.4.2 WSDL 527
14.4.3 工具 527
14.4.4 Weather Service客户端 528
第15章 Web应用与Web服务 530
15.1 Web应用技术 531
15.1.1 面向页面的应用和单页应用 531
15.1.2 JSP 532
15.1.3 XML和XSL 533
15.1.4 Web应用框架 533
15.1.5 Google Web Toolkit 534
15.1.6 HTML5、AJAX以及更多 534
15.2 Java Web应用 534
15.2.1 servlet生命期 535
15.2.2 Servlets 536
15.2.3 The HelloClient Servlet 537
15.2.4 servlet响应 538
15.2.5 servlet参数 540
15.2.6 The ShowParameters Servlet 541
15.2.7 用户会话管理 543
15.2.8 ShowSession Servlet 543
15.2.9 ShoppingCart Servlet 545
15.2.10 Cookies 548
15.2.11 ServletContext API 549
15.2.12 异步Servlets 550
15.3 WAR文件和部署 554
15.3.1 使用web.xml和注解配置 555
15.3.2 URL模式映射 557
15.3.3 部署HelloClient 558
15.3.4 错误和索引页面 559
15.3.5 安全性和鉴别 561
15.3.6 为用户指定角色 561
15.3.7 安全数据传输 562
15.3.8 用户鉴别 563
15.3.9 过程性安全 565
15.4 servlet过滤器 566
15.4.1 一个简单的过滤器 567
15.4.2 一个测试servlet 568
15.4.3 声明和映射过滤器 569
15.4.4 过滤servlet请求 570
15.4.5 过滤servlet响应 572
15.5 使用Ant构建WAR文件 575
15.5.1 面向开发的目录布局 575
15.5.2 使用Ant部署和重新部署WAR 577
15.6 实现Web Services 577
15.6.1 定义服务 578
15.6.2 回显服务 578
15.6.3 使用服务 579
15.6.4 数据类型 581
15.7 结论 582
第16章 Swing 583
16.1 组件 586
16.1.1 对等对象 588
16.1.2 模型-视图-控制器框架 589
16.1.3 绘制 590
16.1.4 启用和禁用组件 591
16.1.5 焦点 591
16.1.6 其他组件方法 592
16.1.7 布局管理器 594
16.1.8 边距 594
16.1.9 Z顺序(组件入栈) 595
16.1.10 revalidate()和doLayout()方法 595
16.1.11 管理组件 596
16.1.12 监听组件 596
16.1.13 窗口和框架 596
16.1.14 控制框架的其他方法 598
16.1.15 使用内容格 598
16.1.16 桌面集成 599
16.2 事件 601
16.2.1 事件接收者和监听者接口 602
16.2.2 事件源 603
16.2.3 事件发送 605
16.2.4 事件类型 606
16.2.5 java.awt.event.InputEvent类 606
16.2.6 InputEvent中的鼠标和按键修饰符 606
16.2.7 焦点事件 608
16.3 事件总结 609
16.3.1 适配器类 612
16.3.2 哑适配器 615
16.4 AWT Robot 615
16.5 Swing中的多线程 616
第17章 使用Swing组件 620
17.1 按钮和标签 620
17.1.1 按钮和标签中的HTML文本 623
17.2 复选框和单选钮 624
17.3 列表框和组合框 626
17.4 增减器 629
17.5 边框 632
17.6 菜单 635
17.7 PopupMenu类 638
17.8 JScrollPane类 642
17.9 JSplitPane类 644
17.10 JTabbedPane类 646
17.11 滚动条和滑块 650
17.12 对话框 652
17.12.1 文件选择对话框 654
17.12.2 颜色选择器 657
第18章 再谈Swing组件 658
18.1 文本组件 658
18.1.1 TextEntryBox应用 659
18.1.2 格式化文本 661
18.1.3 过滤输入 662
18.1.4 验证数据 664
18.1.5 有关密码的问题 665
18.1.6 共享数据模型 666
18.1.7 自由地使用HTML和RTF 667
18.1.8 自行管理文本 670
18.2 焦点导航 673
18.2.1 树 674
18.2.2 节点和模型 675
18.2.3 保存树 675
18.2.4 树事件 675
18.2.5 一个完整的例子 676
18.3 表 679
18.3.1 第一步:不劳而获 679
18.3.2 第二步:创建一个表模型 681
18.3.3 第三步:一个简单的电子表格应用 684
18.3.4 排序和过滤 687
18.3.5 打印JTables 689
18.4 桌面 690
18.5 可插拔观感 691
18.6 创建定制组件 694
18.6.1 生成事件 694
18.6.2 Dial组件 695
第19章 布局管理器 700
19.1 FlowLayout 702
19.2 GridLayout 703
19.3 BorderLayout 704
19.4 BoxLayout 707
19.5 CardLayout 708
19.6 GridBagLayout 710
19.6.1 GridBagConstraints类 710
19.6.2 表格坐标 712
19.6.3 填充约束 713
19.6.4 行跨度和列跨度 715
19.6.5 权值 716
19.6.6 锚定 718
19.6.7 间距和边距 719
19.6.8 相对定位 720
19.6.9 组合布局 721
19.7 非标准布局管理器 725
19.8 绝对定位 725
第20章 使用2D API绘图 727
20.1 整体结构 727
20.2 表现通道 729
20.3 2D API快速浏览 732
20.3.1 填充形状 732
20.3.2 绘制形状轮廓 732
20.3.3 便利方法 733
20.3.4 绘制文本 734
20.3.5 绘制图像 734
20.3.6 完整的Iguana 735
20.4 填充形状 738
20.4.1 纯色 738
20.4.2 颜色渐变 739
20.4.3 纹理 739
20.4.4 桌面颜色 739
20.5 描画形状轮廓 740
20.6 使用字体 741
20.7 显示图像 746
20.7.1 Image类 746
20.7.2 图像观察者 748
20.7.3 缩放和大小 749
20.8 绘制技术 750
20.8.1 双缓冲 752
20.8.2 使用剪裁的有限绘制 753
20.8.3 屏幕外绘制 756
20.9 打印 759
第21章 使用图像及其他媒体 761
21.1 Loading Images 762
21.1.1 ImageObserver 762
21.1.2 MediaTracker 764
21.1.3 ImageIcon 766
21.1.4 ImageIO 767
21.2 生成图像数据 768
21.2.1 绘制动画 768
21.2.2 BufferedImage剖析 771
21.2.3 颜色模型 773
21.2.4 创建图像 774
21.2.5 更新BufferedImage 776
21.3 过滤图像数据 779
21.3.1 ImageProcessor如何工作 781
21.3.2 将Image转换为BufferedImage 782
21.3.3 使用RescaleOp类 782
21.3.4 使用Affine TransformOp类 783
21.4 保存图像数据 784
21.5 简单音频 784
21.6 Java媒体框架 786
第22章 JavaBeans 789
22.1 什么是Bean 789
22.2 The NetBeans IDE 791
22.3 特性和定制器 795
22.4 事件关联和适配器 797
22.4.1 控制Juggler 798
22.4.2 分子运动 800
22.5 绑定特性 801
22.6 构建Bean 803
22.6.1 The Dial Bean 803
22.6.2 特性的设计模式 806
22.7 可视化设计的限制 807
22.8 串行化与代码生成 808
22.9 使用BeanInfo进行定制 809
22.10 用手写代码使用Bean 813
22.10.1 Bean实例化和类型管理 813
22.10.2 使用串行化Bean 814
22.10.3 使用反射完成运行时事件关联 816
22.11 BeanContext和BeanContextService 818
22.12 Java激活框架 818
22.13 Enterprise JavaBeans和POJO-Based Enterprise Frameworks 819
第23章 Applets 820
23.1 基于浏览器的应用政治 820
23.2 Applet支持和Java插件 822
23.3 JApplet类 822
23.3.1 Applet生命期 824
23.3.2 Applet安全沙箱 826
23.3.3 获得Applet资源 827
23.3.4 标签 831
23.3.5 属性 832
23.3.6 参数 832
23.3.7 Applet的替代品 833
23.3.8 完整的标签 833
23.3.9 加载类文件 835
23.3.10 包 835
23.3.11 查看applet 836
23.4 Java Web Start 836
23.5 结论 837
第24章 XML 838
24.1 本章主题 838
24.2 背景知识点拨 839
24.2.1 文本与二进制 840
24.2.2 通用解析器 840
24.2.3 XML的状态 840
24.2.4 The XML APIs 841
24.2.5 XML和Web浏览器 841
24.3 XML基础 841
24.3.1 属性 842
24.3.2 XML文档 843
24.3.3 编码 843
24.3.4 命名空间 844
24.3.5 验证 845
24.3.6 HTML向XHTML的转换 845
24.4 SAX 845
24.4.1 The SAX API 846
24.4.2 使用SAX构建模型 847
24.4.3 XML编码器/ 解码器 853
24.5 DOM 854
24.5.1 DOM API 854
24.5.2 试验DOM 855
24.5.3 用DOM生成XML 856
24.5.4 JDOM 857
24.6 XPath 858
24.6.1 节点 859
24.6.2 谓词 860
24.6.3 函数 861
24.6.4 XPath API 861
24.6.5 XMLGrep 862
24.7 XInclude 863
24.8 验证文档 865
24.8.1 使用文档验证 866
24.8.2 DTDs 866
24.8.3 XML Schema 868
24.8.4 验证API 872
24.9 JAXB和代码生成 874
24.9.1 注解我们的模型 874
24.9.2 从一个XML架构生成一个Java模型 880
24.9.3 从Java模型生成一个XML架构 880
24.10 用XSL/XSLT转换文档 880
24.10.1 XSL基础知识 881
24.10.2 转换动物园名册 883
24.10.3 XSLTransform 885
24.10.4 浏览器中的XSL 886
24.11 Web服务 886
24.12 本书的结尾 887
附录A Eclipse IDE 888
A.1 IDE战争 889
A.2 Eclipse入门 889
A.3 使用Eclipse 890
A.3.1 获取源代码 891
A.3.2 布局 892
A.3.3 运行示例 893
A.3.4 构建基于Ant的示例 894
A.3.5 独特示例 894
A.4 Eclipse功能 894
A.4.1 编码快捷 894
A.4.2 自动更正 895
A.4.3 重构 896
A.4.4 区分文件 897
A.4.5 组织导入 897
A.4.6 格式化源代码 897
A.5 结语 897
附录B BeanShell:简单Java脚本 898
B.1 运行BeanShell 898
B.2 Java语句和表达式 899
B.3 BeanShell命令 900
B.4 脚本化方法和对象 901
B.5 修改类路径 903
B.6 更多内容 903
· · · · · · (
收起)