译者序
前言
致谢
第1章Java8的流库1
1.1从迭代到流的操作1
1.2流的创建3
1.3f?ilter、map和f?latMap方法8
1.4抽取子流和组合流9
1.5其他的流转换10
1.6简单约简11
1.7Optional类型13
1.7.1获取Optional值13
1.7.2消费Optional值13
1.7.3管道化Optional值14
1.7.4不适合使用Optional值的方式15
1.7.5创建Optional值16
1.7.6用f?latMap构建Optional值的函数16
1.7.7将Optional转换为流17
1.8收集结果19
1.9收集到映射表中24
1.10群组和分区27
1.11下游收集器28
1.12约简操作32
1.13基本类型流34
1.14并行流39
第2章输入与输出43
2.1输入/输出流43
2.1.1读写字节43
2.1.2完整的流家族46
2.1.3组合输入/输出流过滤器50
2.1.4文本输入与输出53
2.1.5如何写出文本输出53
2.1.6如何读入文本输入55
2.1.7以文本格式存储对象56
2.1.8字符编码方式59
2.2读写二进制数据61
2.2.1DataInput和DataOutput接口61
2.2.2随机访问文件63
2.2.3ZIP文档67
2.3对象输入/输出流与序列化70
2.3.1保存和加载序列化对象70
2.3.2理解对象序列化的文件格式74
2.3.3修改默认的序列化机制79
2.3.4序列化单例和类型安全的枚举81
2.3.5版本管理82
2.3.6为克隆使用序列化84
2.4操作文件86
2.4.1Path86
2.4.2读写文件89
2.4.3创建文件和目录90
2.4.4复制、移动和删除文件91
2.4.5获取文件信息92
2.4.6访问目录中的项94
2.4.7使用目录流95
2.4.8ZIP文件系统98
2.5内存映射文件99
2.5.1内存映射文件的性能99
2.5.2缓冲区数据结构
2.6文件加锁机制
2.7正则表达式
2.7.1正则表达式语法
2.7.2匹配字符串
2.7.3找出多个匹配
2.7.4用分隔符来分割
2.7.5替换匹配
第3章XML
3.1XML概述
3.2XML文档的结构
3.3解析XML文档
3.4验证XML文档
3.4.1文档类型定义
3.4.2XMLSchema
3.4.3一个实践示例
3.5使用XPath来定位信息
3.6使用命名空间
3.7流机制解析器
3.7.1使用SAX解析器
3.7.2使用StAX解析器
3.8生成XML文档
3.8.1不带命名空间的文档
3.8.2带命名空间的文档
3.8.3写出文档
3.8.4使用StAX写出XML文档
3.8.5示例:生成SVG文件
3.9XSL转换
第4章网络
4.1连接到服务器
4.1.1使用telnet
4.1.2用Java连接到服务器
4.1.3套接字超时
4.1.4因特网地址
4.2实现服务器
4.2.1服务器套接字
4.2.2为多个客户端服务
4.2.3半关闭
4.2.4可中断套接字
4.3获取Web数据
4.3.1URL和URI
4.3.2使用URLConnection获取信息
4.3.3提交表单数据
4.4HTTP客户端
4.5发送E-mail
第5章数据库编程
5.1JDBC的设计
5.1.1JDBC驱动程序类型
5.1.2JDBC的典型用法
5.2结构化查询语言
5.3JDBC配置
5.3.1数据库URL
5.3.2驱动程序JAR文件
5.3.3启动数据库
5.3.4注册驱动器类
5.3.5连接到数据库
5.4使用JDBC语句
5.4.1执行SQL语句
5.4.2管理连接、语句和结果集
5.4.3分析SQL异常
5.4.4组装数据库
5.5执行查询操作
5.5.1预备语句
5.5.2读写LOB
5.5.3SQL转义
5.5.4多结果集
5.5.5获取自动生成的键
5.6可滚动和可更新的结果集
5.6.1可滚动的结果集
5.6.2可更新的结果集
5.7行集
5.7.1构建行集
5.7.2被缓存的行集
5.8元数据
5.9事务
5.9.1用JDBC对事务编程
5.9.2保存点
5.9.3批量更新
5.9.4高级SQL类型
5.10Web与企业应用中的连接管理
第6章日期和时间API
6.1时间线
6.2本地日期
6.3日期调整器
6.4本地时间
6.5时区时间
6.6格式化和解析
6.7与遗留代码的互操作
第7章国际化
7.1locale
7.1.1为什么需要locale
7.1.2指定locale
7.1.3默认locale
7.1.4显示名字
7.2数字格式
7.2.1格式化数字值
7.2.2货币
7.3日期和时间
7.4排序和规范化
7.5消息格式化
7.5.1格式化数字和日期
7.5.2选择格式
7.6文本输入和输出
7.6.1文本文件
7.6.2行结束符
7.6.3控制台
7.6.4日志文件
7.6.5UTF-8字节顺序标志
7.6.6源文件的字符编码
7.7资源包
7.7.1定位资源包
7.7.2属性文件
7.7.3包类
7.8一个完整的例子
第8章脚本、编译与注解处理
8.1Java平台的脚本机制
8.1.1获取脚本引擎
8.1.2脚本计算与绑定
8.1.3重定向输入和输出
8.1.4调用脚本的函数和方法
8.1.5编译脚本
8.1.6示例:用脚本处理GUI事件
8.2编译器API
8.2.1调用编译器
8.2.2发起编译任务
8.2.3捕获诊断消息
8.2.4从内存中读取源文件
8.2.5将字节码写出到内存中
8.2.6示例:动态Java代码生成
8.3使用注解
8.3.1注解简介
8.3.2示例:注解事件处理器
8.4注解语法
8.4.1注解接口
8.4.2注解
8.4.3注解各类声明
8.4.4注解类型用法
8.4.5注解this
8.5标准注解
8.5.1用于编译的注解
8.5.2用于管理资源的注解
8.5.3元注解
8.6源码级注解处理
8.6.1注解处理器
8.6.2语言模型API
8.6.3使用注解来生成源码
8.7字节码工程
8.7.1修改类文件
8.7.2在加载时修改字节码
第9章Java平台模块系统
9.1模块的概念
9.2对模块命名
9.3模块化的“Hello,World!”程序
9.4对模块的需求
9.5导出包
9.6模块化的JAR
9.7模块和反射式访问
9.8自动模块
9.9不具名模块
9.10用于迁移的命令行标识
9.11传递的需求和静态的需求
9.12限定导出和开放
9.13服务加载
9.14操作模块的工具
第10章安全
10.1类加载器
10.1.1类加载过程
10.1.2类加载器的层次结构
10.1.3将类加载器用作命名空间
10.1.4编写你自己的类加载器
10.1.5字节码校验
10.2安全管理器与访问权限
10.2.1权限检查
10.2.2Java平台安全性
10.2.3安全策略文件
10.2.4定制权限
10.2.5实现权限类
10.3用户认证
10.3.1JAAS框架
10.3.2JAAS登录模块
10.4数字签名
10.4.1消息摘要
10.4.2消息签名
10.4.3校验签名
10.4.4认证问题
10.4.5证书签名
10.4.6证书请求
10.4.7代码签名
10.5加密
10.5.1对称密码
10.5.2密钥生成
10.5.3密码流
10.5.4公共密钥密码
第11章高级Swing和图形化编程
11.1表格
11.1.1一个简单表格
11.1.2表格模型
11.1.3对行和列的操作
11.1.4单元格的绘制和编辑
11.2树
11.2.1简单的树
11.2.2节点枚举
11.2.3绘制节点
11.2.4监听树事件
11.2.5定制树模型
11.3高级AWT
11.3.1绘图操作流程
11.3.2形状
11.3.3区域
11.3.4笔画
11.3.5着色
11.3.6坐标变换
11.3.7剪切
11.3.8透明与组合
11.4像素图
11.4.1图像的读取器和写入器
11.4.2图像处理
11.5打印
11.5.1图形打印
11.5.2打印多页文件
11.5.3打印服务程序
11.5.4流打印服务程序
11.5.5打印属性
第12章本地方法
12.1从Java程序中调用C函数
12.2数值参数与返回值
12.3字符串参数
12.4访问域
12.4.1访问实例域
12.4.2访问静态域
12.5编码签名
12.6调用Java方法
12.6.1实例方法
12.6.2静态方法
12.6.3构造器
12.6.4另一种方法调用
12.7访问数组元素
12.8错误处理
12.9使用调用API
12.10完整的示例:访问Windows注册表
12.10.1Windows注册表概述
12.10.2访问注册表的Java平台接口
12.10.3以本地方法实现注册表访问函数