《Java核心技术》又推出了新版第9版!可见这套书在广大Java程序员和爱好者中心的地位。本书覆盖面广,几乎囊括了Java标准版的所有方面。这一版增加了有关Java SE 7的内容,并且几乎重新编写了全书所有的示例程序,使得用户能够更加容易地掌握Java的精髓。
《Java核心技术,卷II:高级特性》面向的是已经熟读并掌握了《Java核心技术,卷I:基础知识》内容的读者,或者是已经对Java语言的基本特性相当熟悉的读者。卷II的内容包含了流和文件、XML、网络、数据库编程、国际化、高级AWT、高级Swing、JavaBean构件、安全、脚本以及注解、分布式对象和本地方法等内容,把读者引入了Java世界的更深处。
我们翻译《Java核心技术,卷II:高级特性》始于第7版,由于水平有限,书中存在不少问题。如果读者对比之前的版本,一定能够发现我们订正了书中的许多错误,使得全书的阅读变得更加流畅了。当然,我们不敢说翻译中的谬误已经全部被订正,因此恳请读者能够批评指正,让我们共同创造精良的译本。
第9版的勘定由陈昊鹏完成,本书之前版本由陈昊鹏、王浩、姚建平、龚斌、楼钢、李伟、郭嘉和方小丽等共同完成。
封面图
目录
- 译者序
- 前言
- 第1章流与文件1
- 1.1流1
- 1.1.1读写字节1
- 1.1.2完整的流家族3
- 1.1.3组合流过滤器7
- 1.2文本输入与输出10
- 1.2.1如何写出文本输出10
- 1.2.2如何读入文本输入13
- 1.2.3以文本格式存储对象13
- 1.2.4字符集16
- 1.3读写二进制数据20
- 1.4ZIP文档27
- 1.5对象流与序列化29
- 1.5.1理解对象序列化的文件格式34
- 1.5.2修改默认的序列化机制39
- 1.5.3序列化单例和类型安全的枚举40
- 1.5.4版本管理42
- 1.5.5为克隆使用序列化44
- 1.6操作文件46
- 1.6.1Path46
- 1.6.2读写文件48
- 1.6.3复制、移动和删除文件49
- 1.6.4创建文件和目录50
- 1.6.5获取文件信息51
- 1.6.6迭代目录中的文件53
- 1.6.7ZIP文件系统55
- 1.7内存映射文件56
- 1.7.1缓冲区数据结构62
- 1.7.2文件加锁机制64
- 1.8正则表达式66
- 第2章XML76
- 2.1XML概述76
- 2.2解析XML文档81
- 2.3验证XML文档91
- 2.3.1文档类型定义92
- 2.3.2XML Schema98
- 2.3.3实用示例101
- 2.4使用XPath来定位信息113
- 2.5使用命名空间119
- 2.6流机制解析器121
- 2.6.1使用SAX解析器122
- 2.6.2使用StAX解析器126
- 2.7生成XML文档129
- 2.7.1不带命名空间的文档130
- 2.7.2带命名空间的文档130
- 2.7.3写出文档131
- 2.7.4示例:生成SVG文件131
- 2.7.5使用StAX写XML文档133
- 2.8XSL转换140
- 第3章网络151
- 3.1连接到服务器151
- 3.1.1套接字超时155
- 3.1.2因特网地址156
- 3.2实现服务器157
- 3.2.1为多个客户端服务160
- 3.2.2半关闭163
- 3.3可中断套接字164
- 3.4获取Web数171
- 3.4.1URL和URI171
- 3.4.2使用URLConnection获取信息173
- 3.4.3提交表单数据181
- 3.5发送E-mail187
- 第4章数据库编程191
- 4.1JDBC的设计191
- 4.1.1JDBC驱动程序类型192
- 4.1.2JDBC的典型用法193
- 4.2结构化查询语言194
- 4.3JDBC配置198
- 4.3.1数据库URL199
- 4.3.2驱动程序JAR文件199
- 4.3.3启动数据库199
- 4.3.4注册驱动器类200
- 4.3.5连接到数据库201
- 4.4执行SQL语句203
- 4.4.1管理连接、语句和结果集206
- 4.4.2分析SQL异常207
- 4.4.3组装数据库209
- 4.5执行查询操作212
- 4.5.1预备语句212
- 4.5.2读写LOB218
- 4.5.3SQL转义219
- 4.5.4多结果集220
- 4.5.5获取自动生成键221
- 4.6可滚动和可更新的结果集222
- 4.6.1可滚动的结果集222
- 4.6.2可更新的结果集224
- 4.7行集228
- 4.7.1构建行集228
- 4.7.2被缓存的行集229
- 4.8元数据231
- 4.9事务240
- 4.9.1保存点241
- 4.9.2批量更新241
- 4.9.3高级SQL类型243
- 4.10Web与企业应用中的连接管理244
- 第5章国际化246
- 5.1Locales 246
- 5.2数字格式251
- 5.3日期和时间257
- 5.4排序264
- 5.4.1排序强度265
- 5.4.2分解265
- 5.5消息格式化270
- 选择格式272
- 5.6文本文件和字符集273
- 源文件的字符编码274
- 5.7资源包275
- 5.7.1定位资源包275
- 5.7.2属性文件276
- 5.7.3包类277
- 5.8一个完整的例子278
- 第6章高级Swing293
- 6.1列表293
- 6.1.1JList构件293
- 6.1.2列表模式298
- 6.1.3插入和移除值302
- 6.1.4值的绘制304
- 6.2表格307
- 6.2.1简单表格307
- 6.2.2表格模型310
- 6.2.3对行和列的操作314
- 6.2.4单元格的绘制和编辑328
- 6.3树338
- 6.3.1简单的树339
- 6.3.2节点枚举352
- 6.3.3绘制节点353
- 6.3.4监听树事件356
- 6.3.5定制树模型362
- 6.4文本构件370
- 6.4.1文本构件中的修改跟踪371
- 6.4.2格式化的输入框373
- 6.4.3JSpinner构件388
- 6.4.4用JEditorPane显示HTML395
- 6.5进度指示器401
- 6.5.1进度条401
- 6.5.2进度监视器404
- 6.5.3监视输入流的进度407
- 6.6构件组织器和装饰器411
- 6.6.1分割面板411
- 6.6.2选项卡面板414
- 6.6.3桌面面板和内部框体419
- 6.6.4级联与平铺422
- 6.6.5否决属性设置425
- 第7章高级AWT440
- 7.1绘图操作流程440
- 7.2形状442
- 7.3区域456
- 7.4笔划458
- 7.5着色465
- 7.6坐标变换466
- 7.7剪切471
- 7.8透明与组合473
- 7.9绘图提示481
- 7.10图像的读取器和写入器486
- 7.10.1获得图像文件类型的读取器和写入器487
- 7.10.2读取和写入带有多个图像的文件488
- 7.11图像处理496
- 7.11.1构建光栅图像496
- 7.11.2图像过滤502
- 7.12打印510
- 7.12.1图形打印510
- 7.12.2打印多页文件518
- 7.12.3打印预览520
- 7.12.4打印服务程序528
- 7.12.5流打印服务程序531
- 7.12.6打印属性532
- 7.13剪贴板538
- 7.13.1用于数据传递的类和接口539
- 7.13.2传递文本540
- 7.13.3Transferable接口和数据风格543
- 7.13.4构建一个可传递的图像545
- 7.13.5通过系统剪贴板传递Java对象548
- 7.13.6使用本地剪贴板来传递对象引用552
- 7.14拖放操作552
- 7.14.1Swing对数据传递的支持553
- 7.14.2拖曳源557
- 7.14.3放置目标559
- 7.15平台集成566
- 7.15.1闪屏566
- 7.15.2启动桌面应用程序571
- 7.15.3系统托盘576
- 第8章JavaBean构件581
- 8.1为何使用Bean581
- 8.2编写Bean的过程583
- 8.3使用Bean构造应用程序585
- 8.3.1将Bean打包成JAR文件585
- 8.3.2在开发环境中组合Bean586
- 8.4Bean属性与事件的命名模式591
- 8.5Bean属性的类型594
- 8.5.1简单属性594
- 8.5.2索引属性594
- 8.5.3绑定属性595
- 8.5.4约束属性596
- 8.6BeanInfo类603
- 8.7属性编辑器607
- 8.8定制器616
- 8.9JavaBean持久化624
- 8.9.1JavaBean持久化可用于任何数据628
- 8.9.2一个JavaBean持久化的完整示例633
- 第9章安全644
- 9.1类加载器645
- 9.1.1类加载器的层次结构646
- 9.1.2将类加载器作为命名空间647
- 9.1.3编写你自己的类加载器648
- 9.2字节码校验653
- 9.3安全管理器与访问权限657
- 9.3.1Java平台安全性658
- 9.3.2安全策略文件661
- 9.3.3定制权限667
- 9.3.4实现权限类669
- 9.4用户认证674
- 9.5数字签名687
- 9.5.1消息摘要688
- 9.5.2消息签名691
- 9.5.3校验签名693
- 9.5.4认证问题695
- 9.5.5证书签名697
- 9.5.6证书请求698
- 9.6代码签名699
- 9.6.1JAR文件签名699
- 9.6.2软件开发者证书702
- 9.7加密704
- 9.7.1对称密码705
- 9.7.2密钥生成706
- 9.7.3密码流710
- 9.7.4公共密钥密码711
- 第10章脚本、编译与注解处理716
- 10.1Java平台的脚本716
- 10.1.1获取脚本引擎716
- 10.1.2脚本赋值与绑定717
- 10.1.3重定向输入和输出719
- 10.1.4调用脚本的函数和方法720
- 10.1.5编译脚本722
- 10.1.6一个示例:用脚本处理GUI事件722
- 10.2编译器API727
- 10.2.1编译便捷之法727
- 10.2.2使用编译工具727
- 10.2.3一个示例:动态Java代码生成732
- 10.3使用注解737
- 10.4注解语法743
- 10.5标准注解746
- 10.5.1用于编译的注解747
- 10.5.2用于管理资源的注解748
- 10.5.3元注解748
- 10.6源码级注解处理750
- 10.7字节码工程756
- 第11章分布式对象765
- 11.1客户与服务器的角色765
- 11.2远程方法调用767
- 11.3RMI编程模型769
- 11.3.1接口与实现769
- 11.3.2RMI注册表770
- 11.3.3部署程序774
- 11.3.4记录RMI活动的日志776
- 11.4远程方法中的参数和返回值778
- 11.4.1传递远程对象778
- 11.4.2传递非远程对象779
- 11.4.3动态类加载781
- 11.4.4具有多重接口的远程引用785
- 11.4.5远程对象与equals、hashCode和clone方法786
- 11.5远程对象激活786
- 第12章本地方法792
- 12.1从Java程序中调用C函数793
- 12.2数值参数与返回值797
- 12.3字符串参数799
- 12.4访问域804
- 12.4.1访问实例域804
- 12.4.2访问静态域808
- 12.5编码签名809
- 12.6调用Java方法810
- 12.6.1实例方法810
- 12.6.2静态方法813
- 12.6.3构造器814
- 12.6.4替代方法调用815
- 12.7访问数组元素816
- 12.8错误处理820
- 12.9使用调用API824
- 12.10完整的示例:访问Windows注册表829
- 12.10.1Windows注册表概述829
- 12.10.2访问注册表的Java平台接口830
- 12.10.3以本地方法方式实现注册表访问函数830