深入理解Java7:核心技术与最佳实践

深入理解Java7:核心技术与最佳实践
作 者: 成富
出版社: 机械工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: J2EE
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  成富 资深Java软件工程师,有多年Java企业级应用开发经验,对Java7和Java平台的各项技术的底层原理有深入透彻的研究。曾就职于IBM中国研发中心,先后在IBM新技术学院和Lotus部门参与了多个重要产品的开发工作,现就职于新西兰PropellerHead公司。他是非常受欢迎的技术作家,在IBMdeveloperWorks上发表中英文技术文章近30篇,获得了其颁发的“极具人气作者奖”;他还是知名技术网站InfoQ的专栏作家,撰写了“Java深度历险”专栏,共发表技术文章10余篇。此外,他还非常精通HTML5、CSS 3、JavaScript等Web 2.0核心技术,实战经验丰富。

内容简介

本书是学习Java7新功能和新特性以及深入理解Java核心技术的最佳选择之一。经过近6年的等待,Java迎来了它的又一个历史性的版本—Java7。Java 7在提高开发人员的生产效率、平台性能和模块方向上又迈进了一步,变得更加强大和灵活。本书不仅对Java7的所有重要更新进行了全面的解读,而且还对Java平台的核心技术的底层实现进行了深入探讨,包含大量最佳实践。全书的主要内容可分为三大部分:第一部分是1~6章,全面阐释Java7在语法、JVM、类库和API等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编码效率和提高代码质量;第二部分是7~13章,对JVM、Java源代码和字节代码操作、类加载器、对象生命周期、多线程、并发编程、泛型、安全等Java平台的核心技术进行了深入解析,掌握这部分内容有助于深入理解Java的底层原理;第三部分为第14章,是对Java8的展望,简要介绍了Java 8中将要增加的新特性。

图书目录

前 言

Java的挑战与展望

第1章 Java 7语法新特性 / 1

1.1 Coin项目介绍 / 1

1.2 在switch语句中使用字符串 / 2

1.2.1 基本用法 / 2

1.2.2 实现原理 / 3

1.2.3 枚举类型 / 5

1.3 数值字面量的改进 / 5

1.3.1 二进制整数字面量  / 6

1.3.2 在数值字面量中使用下划线 / 6

1.4 优化的异常处理 / 7

1.4.1 异常的基础知识 / 7

1.4.2 创建自己的异常 / 8

1.4.3 处理异常 / 12

1.4.4 Java 7的异常处理新特性 / 14

1.5 try-with-resources语句 / 17

1.6 优化变长参数的方法调用 / 19

1.7 小结 / 21

第2章 Java语言的动态性 / 22

2.1 脚本语言支持API / 22

2.1.1 脚本引擎 / 23

2.1.2 语言绑定 / 24

2.1.3 脚本执行上下文 / 25

2.1.4 脚本的编译 / 27

2.1.5 方法调用 / 28

2.1.6 使用案例 / 29

2.2 反射API / 31

2.2.1 获取构造方法 / 32

2.2.2 获取域 / 34

2.2.3 获取方法 / 34

2.2.4 操作数组 / 35

2.2.5 访问权限与异常处理 / 36

2.3 动态代理 / 36

2.3.1 基本使用方式 / 36

2.3.2 使用案例 / 40

2.4 动态语言支持 / 42

2.4.1 Java语言与Java虚拟机 / 43

2.4.2 方法句柄 / 44

2.4.3 invokedynamic指令 / 66

2.5 小结 / 73

第3章 Java I/O / 75

3.1 流 / 75

3.1.1 基本输入流 / 76

3.1.2 基本输出流 / 77

3.1.3 输入流的复用 / 78

3.1.4 过滤输入输出流 / 80

3.1.5 其他输入输出流 / 81

3.1.6 字符流 / 81

3.2 缓冲区 / 82

3.2.1 基本用法 / 83

3.2.2 字节缓冲区 / 84

3.2.3 缓冲区视图 / 86

3.3 通道 / 87

3.3.1 文件通道 / 88

3.3.2 套接字通道 / 93

3.4 NIO.2 / 98

3.4.1 文件系统访问 / 98

3.4.2 zip/jar文件系统 / 106

3.4.3 异步I/O通道 / 108

3.4.4 套接字通道绑定与配置 / 111

3.4.5 IP组播通道 / 111

3.5 使用案例 / 113

3.6 小结 / 115

第4章 国际化与本地化 / 117

4.1 国际化概述 / 117

4.2 Unicode / 118

4.2.1 Unicode编码格式 / 119

4.2.2 其他字符集 / 124

4.2.3 Java与Unicode / 124

4.3 Java中的编码实践 / 125

4.3.1 Java NIO中的编码器和解码器 / 126

4.3.2 乱码问题详解 / 130

4.4 区域设置 / 133

4.4.1 IETF BCP 47 / 134

4.4.2 资源包 / 135

4.4.3 日期和时间 / 143

4.4.4 数字和货币 / 144

4.4.5 消息文本 / 146

4.4.6 默认区域设置的类别 / 148

4.4.7 字符串比较 / 148

4.5 国际化与本地化基本实践 / 149

4.6 小结 / 152

第5章 图形用户界面 / 153

5.1 Java图形用户界面概述 / 153

5.2 AWT / 156

5.2.1 重要组件类 / 156

5.2.2 任意形状的窗口 / 157

5.2.3 半透明窗口 / 158

5.2.4 组件混合 / 159

5.3 Swing / 159

5.3.1 重要组件类 / 159

5.3.2 JLayer组件和LayerUI类 / 161

5.4 事件处理与线程安全性 / 163

5.4.1 事件处理 / 163

5.4.2 事件分发线程 / 165

5.4.3 SwingWorker类 / 167

5.4.4 SecondaryLoop接口 / 169

5.5 界面绘制 / 170

5.5.1 AWT中的界面绘制 / 170

5.5.2 Swing中的绘制 / 171

5.6 可插拔式外观样式 / 172

5.7 JavaFX / 175

5.7.1 场景图 / 175

5.7.2 变换 / 177

5.7.3 动画效果 / 177

5.7.4 FXML / 179

5.7.5 CSS外观描述 / 181

5.7.6 Web引擎与网页显示 / 182

5.8 使用案例 / 183

5.9 小结 / 185

第6章 Java 7其他重要更新 / 186

6.1 关系数据库访问 / 186

6.1.1 使用try-with-resources语句 / 186

6.1.2 数据库查询的默认模式 / 187

6.1.3 数据库连接超时时间与终止 / 188

6.1.4 语句自动关闭 / 189

6.1.5 RowSet实现提供者 / 190

6.2 java.lang包的更新 / 191

6.2.1 基本类型的包装类 / 191

6.2.2 进程使用 / 192

6.2.3 Thread类的更新 / 194

6.3 Java实用工具类 / 195

6.3.1 对象操作 / 195

6.3.2 正则表达式 / 197

6.3.3 压缩文件处理 / 200

6.4 JavaBeans组件 / 201

6.4.1 获取组件信息 / 201

6.4.2 执行语句和表达式 / 202

6.4.3 持久化 / 202

6.5 小结 / 203

第7章 Java虚拟机 / 205

7.1 虚拟机基本概念 / 205

7.2 内存管理 / 206

7.3 引用类型 / 208

7.3.1 强引用 / 209

7.3.2 引用类型基本概念 / 211

7.3.3 软引用 / 213

7.3.4 弱引用 / 215

7.3.5 幽灵引用 / 217

7.3.6 引用队列 / 220

7.4 Java本地接口 / 221

7.4.1 JNI基本用法 / 221

7.4.2 Java程序中集成C/C++代码 / 225

7.4.3 在C/C++程序中启动Java虚拟机 / 227

7.5 HotSpot虚拟机 / 228

7.5.1 字节代码执行 / 229

7.5.2 垃圾回收 / 229

7.5.3 启动参数 / 235

7.5.4 分析工具 / 236

7.5.5 Java虚拟机工具接口 / 241

7.6 小结 / 244

第8章 Java源代码和字节代码操作 / 245

8.1 Java字节代码格式 / 245

8.1.1 基本格式 / 246

8.1.2 常量池的结构 / 248

8.1.3 属性 / 249

8.2 动态编译Java源代码 / 249

8.2.1 使用javac工具 / 250

8.2.2 Java编译器API / 251

8.2.3 使用Eclipse JDT编译器 / 254

8.3 字节代码增强 / 257

8.3.1 使用ASM / 258

8.3.2 增强代理 / 267

8.4 注解 / 271

8.4.1 注解类型 / 271

8.4.2 创建注解类型 / 273

8.4.3 使用注解类型 / 274

8.4.4 处理注解 / 275

8.5 使用案例 / 284

8.6 小结 / 286

第9章 Java类加载器 / 287

9.1 类加载器概述 / 287

9.2 类加载器的层次结构与代理模式 / 288

9.3 创建类加载器 / 290

9.4 类加载器的隔离作用 / 294

9.5 线程上下文类加载器 / 296

9.6 Class.forName方法 / 298

9.7 加载资源 / 299

9.8 Web应用中的类加载器 / 301

9.9 OSGi中的类加载器 / 303

9.9.1 OSGi基本的类加载器机制 / 303

9.9.2 Equinox框架的类加载实现机制 / 303

9.9.3 Equinox框架嵌入到Web容器中 / 306

9.10 小结 / 308

第10章 对象生命周期 / 309

10.1 Java类的链接 / 309

10.2 Java类的初始化 / 311

10.3 对象的创建与初始化 / 312

10.4 对象终止 / 314

10.5 对象复制 / 318

10.6 对象序列化 / 322

10.6.1 默认的对象序列化 / 324

10.6.2 自定义对象序列化 / 326

10.6.3 对象替换 / 329

10.6.4 版本更新 / 330

10.6.5 安全性 / 331

10.6.6 使用Externalizable接口 / 332

10.7 小结 / 334

第11章 多线程与并发编程实践 / 335

11.1 多线程 / 335

11.1.1 可见性 / 336

11.1.2 Java内存模型 / 339

11.1.3 volatile关键词 / 340

11.1.4 final关键词 / 341

11.1.5 原子操作 / 342

11.2 基本线程同步方式 / 343

11.2.1 synchronized关键词 / 343

11.2.2 Object类的wait、notify和notifyAll方法 / 344

11.3 使用Thread类 / 346

11.3.1 线程状态 / 346

11.3.2 线程中断 / 347

11.3.3 线程等待、睡眠和让步 / 348

11.4 非阻塞方式 / 349

11.5 高级实用工具 / 352

11.5.1 高级同步机制 / 352

11.5.2 底层同步器 / 355

11.5.3 高级同步对象 / 357

11.5.4 数据结构 / 363

11.5.5 任务执行 / 365

11.6 Java SE 7新特性 / 368

11.6.1 轻量级任务执行框架fork/join / 368

11.6.2 多阶段线程同步工具 / 370

11.7 ThreadLocal类 / 373

11.8 小结 / 374

第12章 Java泛型 / 375

12.1 泛型基本概念 / 375

12.2 类型擦除 / 378

12.3 上界和下界 / 382

12.4 通配符 / 384

12.5 泛型与数组 / 385

12.6 类型系统 / 388

12.7 覆写与重载 / 391

12.7.1 覆写对方法类型签名的要求 / 391

12.7.2 覆写对返回值类型的要求 / 395

12.7.3 覆写对异常声明的要求 / 396

12.7.4 重载 / 396

12.8 类型推断和<>操作符 / 397

12.9 泛型与反射API / 400

12.10 使用案例 / 402

12.11 小结 / 403

第13章 Java安全 / 405

13.1 Java安全概述 / 405

13.2 用户认证 / 406

13.2.1 主体、身份标识与凭证 / 406

13.2.2 登录 / 407

13.3 权限控制 / 415

13.3.1 权限、策略与保护域 / 416

13.3.2 访问控制权限 / 418

13.3.3 特权动作 / 420

13.3.4 访问控制上下文 / 421

13.3.5 守卫对象 / 423

13.4 加密与解密、报文摘要和数字签名 / 424

13.4.1 Java密码框架 / 424

13.4.2 加密与解密 / 425

13.4.3 报文摘要 / 427

13.4.4 数字签名 / 428

13.5 安全套接字连接 / 430

13.5.1 SSL协议 / 431

13.5.2 HTTPS / 432

13.6 使用案例 / 434

13.7 小结 / 437

第14章 超越Java 7 / 438

14.1 lambda表达式 / 438

14.1.1 函数式接口 / 439

14.1.2 lambda表达式的语法 / 440

14.1.3 目标类型 / 440

14.1.4 词法作用域 / 441

14.1.5 方法引用 / 442

14.1.6 接口的默认方法 / 443

14.2 Java平台模块化 / 444

14.3 Java SE 8的其他更新 / 445

14.4 小结 / 445

附录A OpenJDK / 446

附录B Java简史 / 448