本书是学习Java 7新功能和新特性以及深入理解Java核心技术的最佳选择之一。
经过近6年的等待,Java迎来了它的又一个历史性的版本——Java 7。Java 7在提高开发人员的生产效率、平台性能和模块方向上又迈进了一步,变得更加强大和灵活。本书不仅对Java 7的所有重要更新进行了全面的解读,而且还对Java平台的核心技术的底层实现进行了深入探讨,包含大量最佳实践。
全书的主要内容可分为三大部分:第一部分是1~6章,全面阐释Java 7在语法、JVM、类库和API等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编码效率和提高代码质量;第二部分是7~13章,对JVM、Java源代码和字节代码操作、类加载器、对象生命周期、多线程、并发编程、泛型、安全等Java平台的核心技术进行了深入解析,掌握这部分内容有助于深入理解Java的底层原理;第三部分为第14章,是对Java 8的展望,简要介绍了Java 8中将要增加的新特性。
封面图
目录
- 前言
- Java的挑战与展望
- 第1章Java 7语法新特性 / 1
- 1.1Coin项目介绍 / 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.4Java 7的异常处理新特性 / 14
- 1.5try-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.1Java语言与Java虚拟机 / 43
- 2.4.2方法句柄 / 44
- 2.4.3invokedynamic指令 / 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.4NIO.2 / 98
- 3.4.1文件系统访问 / 98
- 3.4.2zip/jar文件系统 / 106
- 3.4.3异步I/O通道 / 108
- 3.4.4套接字通道绑定与配置 / 111
- 3.4.5IP组播通道 / 111
- 3.5使用案例 / 113
- 3.6小结 / 115
- 第4章国际化与本地化 / 117
- 4.1国际化概述 / 117
- 4.2Unicode / 118
- 4.2.1Unicode编码格式 / 119
- 4.2.2其他字符集 / 124
- 4.2.3Java与Unicode / 124
- 4.3Java中的编码实践 / 125
- 4.3.1Java NIO中的编码器和解码器 / 126
- 4.3.2乱码问题详解 / 130
- 4.4区域设置 / 133
- 4.4.1IETF 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.1Java图形用户界面概述 / 153
- 5.2AWT / 156
- 5.2.1重要组件类 / 156
- 5.2.2任意形状的窗口 / 157
- 5.2.3半透明窗口 / 158
- 5.2.4组件混合 / 159
- 5.3Swing / 159
- 5.3.1重要组件类 / 159
- 5.3.2JLayer组件和LayerUI类 / 161
- 5.4事件处理与线程安全性 / 163
- 5.4.1事件处理 / 163
- 5.4.2事件分发线程 / 165
- 5.4.3SwingWorker类 / 167
- 5.4.4SecondaryLoop接口 / 169
- 5.5界面绘制 / 170
- 5.5.1AWT中的界面绘制 / 170
- 5.5.2Swing中的绘制 / 171
- 5.6可插拔式外观样式 / 172
- 5.7JavaFX / 175
- 5.7.1场景图 / 175
- 5.7.2变换 / 177
- 5.7.3动画效果 / 177
- 5.7.4FXML / 179
- 5.7.5CSS外观描述 / 181
- 5.7.6Web引擎与网页显示 / 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.5RowSet实现提供者 / 190
- 6.2java.lang包的更新 / 191
- 6.2.1基本类型的包装类 / 191
- 6.2.2进程使用 / 192
- 6.2.3Thread类的更新 / 194
- 6.3Java实用工具类 / 195
- 6.3.1对象操作 / 195
- 6.3.2正则表达式 / 197
- 6.3.3压缩文件处理 / 200
- 6.4JavaBeans组件 / 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.4Java本地接口 / 221
- 7.4.1JNI基本用法 / 221
- 7.4.2Java程序中集成C/C++代码 / 225
- 7.4.3在C/C++程序中启动Java虚拟机 / 227
- 7.5HotSpot虚拟机 / 228
- 7.5.1字节代码执行 / 229
- 7.5.2垃圾回收 / 229
- 7.5.3启动参数 / 235
- 7.5.4分析工具 / 236
- 7.5.5Java虚拟机工具接口 / 241
- 7.6小结 / 244
- 第8章Java源代码和字节代码操作 / 245
- 8.1Java字节代码格式 / 245
- 8.1.1基本格式 / 246
- 8.1.2常量池的结构 / 248
- 8.1.3属性 / 249
- 8.2动态编译Java源代码 / 249
- 8.2.1使用javac工具 / 250
- 8.2.2Java编译器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.6Class.forName方法 / 298
- 9.7加载资源 / 299
- 9.8Web应用中的类加载器 / 301
- 9.9OSGi中的类加载器 / 303
- 9.9.1OSGi基本的类加载器机制 / 303
- 9.9.2Equinox框架的类加载实现机制 / 303
- 9.9.3Equinox框架嵌入到Web容器中 / 306
- 9.10小结 / 308
- 第10章对象生命周期 / 309
- 10.1Java类的链接 / 309
- 10.2Java类的初始化 / 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.2Java内存模型 / 339
- 11.1.3volatile关键词 / 340
- 11.1.4final关键词 / 341
- 11.1.5原子操作 / 342
- 11.2基本线程同步方式 / 343
- 11.2.1synchronized关键词 / 343
- 11.2.2Object类的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.6Java SE 7新特性 / 368
- 11.6.1轻量级任务执行框架fork/join / 368
- 11.6.2多阶段线程同步工具 / 370
- 11.7ThreadLocal类 / 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.1Java安全概述 / 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.1Java密码框架 / 424
- 13.4.2加密与解密 / 425
- 13.4.3报文摘要 / 427
- 13.4.4数字签名 / 428
- 13.5安全套接字连接 / 430
- 13.5.1SSL协议 / 431
- 13.5.2HTTPS / 432
- 13.6使用案例 / 434
- 13.7小结 / 437
- 第14章超越Java 7 / 438
- 14.1lambda表达式 / 438
- 14.1.1函数式接口 / 439
- 14.1.2lambda表达式的语法 / 440
- 14.1.3目标类型 / 440
- 14.1.4词法作用域 / 441
- 14.1.5方法引用 / 442
- 14.1.6接口的默认方法 / 443
- 14.2Java平台模块化 / 444
- 14.3Java SE 8的其他更新 / 445
- 14.4小结 / 445
- 附录AOpenJDK / 446
- 附录BJava简史 / 448