《Java 2 编程详解》PDF下载

  • 购买积分:30 如何计算积分?
  • 作  者:(美)(J.L.韦伯)Joseph L.Weber著;卜照斌等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:1999
  • ISBN:7505353233
  • 页数:1234 页
图书介绍:Java是面向对象的、支持多线程的、体系结构独立的解释型动态语言,具有高度的安全性、可移植性和代码重用性,具有很高的运行效率,是目前软件中极为健壮的编程语言。Java 2是SUN公司1998年12月发行的Java版本,它对前面的版本进行了完善和提高,增加了基础类、二维图形接口类,媒体框架类和商业及Java Wallet等内容。本书较全面介绍了Java 2的内容,并就部分内容与Java 1.0和1.1版本作了对照讲解。本书是综合性的工具书,包含了Java编程语言的各方面的信息。如果读者不熟悉Java,使用这本书就箐合适;如果读者已是Java 专家,那么本书也将成为您的编程宝典。

第一部分 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