Java核心技术 卷II 高级特性(第10版 英文版)(上下册)
目录
Chapter 1: The Java SE 8 Stream Library / Java SE 8流库 1
1.1 From Iterating to Stream Operations / 从迭代到流操作 2
1.2 Stream Creation / 创建流 5
1.3 The filter, map, and flatMap Methods / filter、map和flatMap方法 9
1.4 Extracting Substreams and Concatenating Streams / 提取子流和连接流 10
查看完整
Chapter 1: The Java SE 8 Stream Library / Java SE 8流库 1
1.1 From Iterating to Stream Operations / 从迭代到流操作 2
1.2 Stream Creation / 创建流 5
1.3 The filter, map, and flatMap Methods / filter、map和flatMap方法 9
1.4 Extracting Substreams and Concatenating Streams / 提取子流和连接流 10
查看完整
Cay S. Horstmann 是Core Java? for the Impatient(2015)、Java SE 8 for the Really Impatient(2014)和Scala for the Impatient(2012)等图书的作者。他还有很多写给职业程序员和计算机专业学生的专著。他是圣何塞州立大学的计算机科学教授,还是一名Java Champion。
本书是经典图书《Java核心技术 卷II:高级特性》的新版。这一版针对Java SE 8平台进行了全面更新,以反映Java SE 8的特性。
书中全面覆盖Java技术的高级主题,包括Java SE 8流库,输入与输出,XML,网络,数据库编程,日期与时间API,国际化,脚本、编译与注解处理,安全,高级Swing,高级AWT,以及本地方法等内容。本书对Java技术的阐述精que到位,叙述方式深入浅出,并包含大量程序示例,让读者充分理解Java语言以及Java类库的相关高级特性。
书中全面覆盖Java技术的高级主题,包括Java SE 8流库,输入与输出,XML,网络,数据库编程,日期与时间API,国际化,脚本、编译与注解处理,安全,高级Swing,高级AWT,以及本地方法等内容。本书对Java技术的阐述精que到位,叙述方式深入浅出,并包含大量程序示例,让读者充分理解Java语言以及Java类库的相关高级特性。
目录
Chapter 1: The Java SE 8 Stream Library / Java SE 8流库 1
1.1 From Iterating to Stream Operations / 从迭代到流操作 2
1.2 Stream Creation / 创建流 5
1.3 The filter, map, and flatMap Methods / filter、map和flatMap方法 9
1.4 Extracting Substreams and Concatenating Streams / 提取子流和连接流 10
1.5 Other Stream Transformations / 其他流变换 11
1.6 Simple Reductions / 简单规约 12
1.7 The Optional Type / Optional类型 13
1.7.1 How to Work with Optional Values / 如何使用Optional值 14
1.7.2 How Not to Work with Optional Values / 不使用Optional值会有什么问题 15
1.7.3 Creating Optional Values / 创建Optional值 16
1.7.4 Composing Optional Value Functions with flatMap / 使用flatMap组合Optional值函数 16
1.8 Collecting Results / 收集结果 19
1.9 Collecting into Maps / 收集到Map中 24
1.10 Grouping and Partitioning / 分组与分区 28
1.11 Downstream Collectors / 下游的收集器 29
1.12 Reduction Operations / 规约操作 33
1.13 Primitive Type Streams / 基本类型的流 36
1.14 Parallel Streams / 并行流 41
Chapter 2: Input and Output / 输入与输出 47
2.1 Input/Output Streams / 输入/输出流 48
2.1.1 Reading and Writing Bytes / 读写字节 48
2.1.2 The Complete Stream Zoo / 流谱系概览 51
2.1.3 Combining Input/Output Stream Filters / 组合输入/输出流过滤器 55
2.2 Text Input and Output / 文本输入与输出 60
2.2.1 How to Write Text Output / 输出文本 60
2.2.2 How to Read Text Input / 输入文本 62
2.2.3 Saving Objects in Text Format / 以文本格式保存对象 63
2.2.4 Character Encodings / 字符编码 67
2.3 Reading and Writing Binary Data / 读写二进制数据 69
2.3.1 The DataInput and DataOutput interfaces / DataInput和DataOutput接口 69
2.3.2 Random-Access Files / 随机访问文件 72
2.3.3 ZIP Archives / ZIP文档 77
2.4 Object Input/Output Streams and Serialization / 对象输入/输出流与序列化 80
2.4.1 Saving and Loading Serializable Objects / 序列化对象的保存与加载 80
2.4.2 Understanding the Object Serialization File Format / 理解对象序列化文件格式 85
2.4.3 Modifying the Default Serialization Mechanism / 修改默认的序列化机制 92
2.4.4 Serializing Singletons and Typesafe Enumerations / 序列化单例和类型安全的枚举 94
2.4.5 Versioning / 版本管理 95
2.4.6 Using Serialization for Cloning / 将序列化用于克隆 98
2.5 Working with Files / 处理文件 100
2.5.1 Paths / 路径 101
2.5.2 Reading and Writing Files / 读写文件 104
2.5.3 Creating Files and Directories / 创建文件与目录 105
2.5.4 Copying, Moving, and Deleting Files / 复制、移动和删除文件 106
2.5.5 Getting File Information / 获取文件信息 108
2.5.6 Visiting Directory Entries / 访问目录条目 110
2.5.7 Using Directory Streams / 使用目录流 111
2.5.8 ZIP File Systems / ZIP文件系统 115
2.6 Memory-Mapped Files / 内存映射文件 116
2.6.1 Memory-Mapped File Performance / 内存映射文件的性能 116
2.6.2 The Buffer Data Structure / 缓冲区数据结构 124
2.6.3 File Locking / 文件锁 126
2.7 Regular Expressions / 正则表达式 128
Chapter 3: XML 143
3.1 Introducing XML / XML简介 144
3.1.1 The Structure of an XML Document / XML文档的结构 146
3.2 Parsing an XML Document / 解析XML文档 149
3.3 Validating XML Documents / 验证XML文档 162
3.3.1 Document Type Definitions / 文档类型定义 163
3.3.2 XML Schema / XML模式 172
3.3.3 A Practical Example / 实用示例 175
3.4 Locating Information with XPath / 使用XPath定位信息 190
3.5 Using Namespaces / 使用命名空间 196
3.6 Streaming Parsers / 流解析器 199
3.6.1 Using the SAX Parser / 使用SAX解析器 199
3.6.2 Using the StAX Parser / 使用StAX解析器 205
3.7 Generating XML Documents / 生成XML文档 208
3.7.1 Documents without Namespaces / 不带命名空间的文档 209
3.7.2 Documents with Namespaces / 带命名空间的文档 209
3.7.3 Writing Documents / 写文档 210
3.7.4 An Example: Generating an SVG File / 示例:生成SVG文件 211
3.7.5 Writing an XML Document with StAX / 使用StAX写XML文档 214
3.8 XSL Transformations / XSL转换 222
Chapter 4: Networking / 网络 233
4.1 Connecting to a Server / 连接到服务器 233
4.1.1 Using Telnet / 使用Telnet 233
4.1.2 Connecting to a Server with Java / 使用Java连接到服务器 236
4.1.3 Socket Timeouts / 套接字超时 238
4.1.4 Internet Addresses / 因特网地址 239
4.2 Implementing Servers / 实现服务器 241
4.2.1 Server Sockets / 服务器套接字 242
4.2.2 Serving Multiple Clients / 为多个客户端服务 245
4.2.3 Half-Close / 半关闭 249
4.3 Interruptible Sockets / 可中断套接字 250
4.4 Getting Web Data / 获取Web数据 257
4.4.1 URLs and URIs / URL和URI 257
4.4.2 Using a URLConnection to Retrieve Information / 使用URLConnection获取信息 259
4.4.3 Posting Form Data / 提交表单数据 267
4.5 Sending E-Mail / 发送电子邮件 277
Chapter 5: Database Programming / 数据库编程 281
5.1 The Design of JDBC / JDBC的设计 282
5.1.1 JDBC Driver Types / JDBC驱动程序分类 283
5.1.2 Typical Uses of JDBC / JDBC的典型用法 284
5.2 The Structured Query Language / 结构化查询语言 285
5.3 JDBC Configuration / JDBC配置 291
5.3.1 Database URLs / 数据库URL 292
5.3.2 Driver JAR Files / 驱动程序JAR文件 292
5.3.3 Starting the Database / 启动数据库 293
5.3.4 Registering the Driver Class / 注册驱动程序类 294
5.3.5 Connecting to the Database / 连接到数据库 294
5.4 Working with JDBC Statements / 使用JDBC语句 297
5.4.1 Executing SQL Statements / 执行SQL语句 298
5.4.2 Managing Connections, Statements, and Result Sets / 管理连接、语句和结果集 301
5.4.3 Analyzing SQL Exceptions / 分析SQL异常 302
5.4.4 Populating a Database / 填充数据库 305
5.5 Query Execution / 执行查询 309
5.5.1 Prepared Statements / 预备语句 309
5.5.2 Reading and Writing LOBs / 读写LOB 316
5.5.3 SQL Escapes / SQL转义 318
5.5.4 Multiple Results / 多结果集 319
5.5.5 Retrieving Autogenerated Keys / 获取自动生成的主键 320
5.6 Scrollable and Updatable Result Sets / 可滚动和可更新的结果集 321
5.6.1 Scrollable Result Sets / 可滚动的结果集 321
5.6.2 Updatable Result Sets / 可更新的结果集 324
5.7 Row Sets / 行集 328
5.7.1 Constructing Row Sets / 构建行集 329
5.7.2 Cached Row Sets / 缓存的行集 329
5.8 Metadata / 元数据 333
5.9 Transactions / 事务 344
5.9.1 Programming Transactions with JDBC / 使用JDBC编程实现事务 344
5.9.2 Save Points / 保存点 345
5.9.3 Batch Updates / 批量更新 345
5.10 Advanced SQL Types / 高级SQL类型 347
5.11 Connection Management in Web and Enterprise Applications / Web与企业应用中的连接管理 349
Chapter 6: The Date and Time API / 日期与时间API 351
6.1 The Time Line / 时间线 352
6.2 Local Dates / 本地日期 355
6.3 Date Adjusters / 日期调整 358
6.4 Local Time / 本地时间 360
6.5 Zoned Time / 时区时间 361
6.6 Formatting and Parsing / 格式化与解析 365
6.7 Interoperating with Legacy Code / 与遗留代码互操作 369
Chapter 7: Internationalization / 国际化 371
7.1 Locales / 地域 372
7.2 Number Formats / 数字格式 378
7.3 Currencies / 货币 384
7.4 Date and Time / 日期与时间 385
7.5 Collation and Normalization / 排序规则与标准化 393
7.6 Message Formatting / 消息格式化 400
7.6.1 Formatting Numbers and Dates / 格式化数字和日期 400
7.6.2 Choice Formats / choice格式化选项 402
7.7 Text Input and Output / 文本输入与输出 404
7.7.1 Text Files / 文本文件 405
7.7.2 Line Endings / 文本行结尾符号 405
7.7.3 The Console / 控制台 405
7.7.4 Log Files / 日志文件 406
7.7.5 The UTF-8 Byte Order Mark / UTF-8字节顺序标记 406
7.7.6 Character Encoding of Source Files / 源文件的字符编码 407
7.8 Resource Bundles / 资源包 408
7.8.1 Locating Resource Bundles / 定位资源包 409
7.8.2 Property Files / 属性文件 410
7.8.3 Bundle Classes / 包类 411
7.9 A Complete Example / 完整示例 413
Chapter 8: Scripting, Compiling, and Annotation Processing / 脚本、编译与注解处理 429
8.1 Scripting for the Java Platform / Java平台的脚本 430
8.1.1 Getting a Scripting Engine / 获得脚本引擎 430
8.1.2 Script Evaluation and Bindings / 脚本求值与绑定 431
8.1.3 Redirecting Input and Output / 重定向输入与输出 434
8.1.4 Calling Scripting Functions and Methods / 调用脚本函数和方法 435
8.1.5 Compiling a Script / 编译脚本 437
8.1.6 An Example: Scripting GUI Events / 示例:用脚本处理GUI事件 437
8.2 The Compiler API / 编译器API 443
8.2.1 Compiling the Easy Way / 编译的简单使用方法 443
8.2.2 Using Compilation Tasks / 使用编译任务 443
8.2.3 An Example: Dynamic Java Code Generation / 示例:动态Java代码生成 449
8.3 Using Annotations / 使用注解 455
8.3.1 An Introduction into Annotations / 注解简介 455
8.3.2 An Example: Annotating Event Handlers 示例:注解事件处理程序 457
8.4 Annotation Syntax / 注解语法 462
8.4.1 Annotation Interfaces / 注解接口 462
8.4.2 Annotations / 注解 464
8.4.3 Annotating Declarations / 在声明的地方使用注解 466
8.4.4 Annotating Type Uses / 在类型使用的地方使用注解 467
8.4.5 Annotating this / 对this做注解 468
8.5 Standard Annotations / 标准注解 470
8.5.1 Annotations for Compilation / 用于编译的注解 471
8.5.2 Annotations for Managing Resources / 用于管理资源的注解 472
8.5.3 Meta-Annotations / 元注解 472
8.6 Source-Level Annotation Processing / 源码级注解处理 475
8.6.1 Annotation Processors / 注解处理器 476
8.6.2 The Language Model API / 语言模型API 476
8.6.3 Using Annotations to Generate Source Code / 使用注解生成源代码 477
8.7 Bytecode Engineering / 字节码引擎 481
8.7.1 Modifying Class Files / 修改类文件 481
8.7.2 Modifying Bytecodes at Load Time / 在加载时修改字节码 486
Chapter 9: Security / 安全 491
9.1 Class Loaders / 类加载器 492
9.1.1 The Class Loading Process / 类加载流程 492
9.1.2 The Class Loader Hierarchy / 类加载器层次结构 494
9.1.3 Using Class Loaders as Namespaces / 将类加载器作为命名空间 496
9.1.4 Writing Your Own Class Loader / 编写自己的类加载器 497
9.1.5 Bytecode Verification / 字节码验证 504
9.2 Security Managers and Permissions / 安全管理器与权限 509
9.2.1 Permission Checking / 权限检查 509
9.2.2 Java Platform Security / Java平台安全 510
9.2.3 Security Policy Files / 安全策略文件 514
9.2.4 Custom Permissions / 定制权限 522
9.2.5 Implementation of a Permission Class / 实现权限类 524
9.3 User Authentication / 用户认证 530
9.3.1 The JAAS Framework / JAAS框架 531
9.3.2 JAAS Login Modules / JAAS登录模块 537
9.4 Digital Signatures / 数字签名 546
9.4.1 Message Digests / 消息摘要 547
9.4.2 Message Signing / 消息签名 550
9.4.3 Verifying a Signature / 验证签名 553
9.4.4 The Authentication Problem / 认证问题 556
9.4.5 Certificate Signing / 证书签名 558
9.4.6 Certificate Requests / 证书请求 560
9.4.7 Code Signing / 代码签名 561
9.5 Encryption / 加密 567
9.5.1 Symmetric Ciphers / 对称密码 567
9.5.2 Key Generation / 生成密钥 569
9.5.3 Cipher Streams / 加密流 574
9.5.4 Public Key Ciphers / 公钥密码 575
Chapter 10: Advanced Swing / 高级Swing 581
10.1 Lists / 列表 582
10.1.1 The JList Component / JList组件 582
10.1.2 List Models / 列表模式 588
10.1.3 Inserting and Removing Values / 插入和移除值 593
10.1.4 Rendering Values / 值的绘制 595
10.2 Tables / 表 599
10.2.1 A Simple Table / 简单表 600
10.2.2 Table Models / 表模式 604
10.2.3 Working with Rows and Columns / 行列操作 608
10.2.3.1 Column Classes / 列类 609
10.2.3.2 Accessing Table Columns / 访问表列 610
10.2.3.3 Resizing Columns / 调整列 611
10.2.3.4 Resizing Rows / 调整行 612
10.2.3.5 Selecting Rows, Columns, and Cells / 选择行、列和单元格 612
10.2.3.6 Sorting Rows / 对行进行排序 614
10.2.3.7 Filtering Rows / 对行进行过滤 615
10.2.3.8 Hiding and Displaying Columns / 隐藏或显示列 617
10.2.4 Cell Rendering and Editing / 单元格的绘制与编辑 626
10.2.4.1 Rendering Cells / 绘制单元格 626
10.2.4.2 Rendering the Header / 绘制表头 627
10.2.4.3 Editing Cells / 编辑单元格 628
10.2.4.4 Custom Editors / 定制编辑器 629
10.3 Trees / 树 639
10.3.1 Simple Trees / 简单的树 640
10.3.2 Editing Trees and Tree Paths / 编辑树和树路径 650
10.3.3 Node Enumeration / 节点枚举 659
10.3.4 Rendering Nodes / 渲染节点 661
10.3.5 Listening to Tree Events / 监听树事件 664
10.3.6 Custom Tree Models / 定制树模型 671
10.4 Text Components / 文本组件 681
10.4.1 Change Tracking in Text Components / 跟踪文本组件的内容修改 682
10.4.2 Formatted Input Fields / 将输入的信息格式化 685
10.4.2.1 Integer Input / 整型输入 686
10.4.2.2 Behavior on Loss of Focus / 丢失焦点时行为 687
10.4.2.3 Filters / 过滤器 688
10.4.2.4 Verifiers / 验证器 690
10.4.2.5 Other Standard Formatters / 其他标准的格式化器 691
10.4.2.6 Custom Formatters / 定制格式化器 693
10.4.3 The JSpinner Component / JSpinner组件 703
10.4.4 Displaying HTML with the JEditorPane / 使用JEditorPane显示HTML 712
10.5 Progress Indicators / 进度指示器 719
10.5.1 Progress Bars / 进度条 719
10.5.2 Progress Monitors / 进度监视器 722
10.5.3 Monitoring the Progress of Input Streams / 监视输入流的进度 726
10.6 Component Organizers and Decorators / 组件组织器和装饰器 731
10.6.1 Split Panes / 分割面板 732
10.6.2 Tabbed Panes / 选项卡面板 735
10.6.3 Desktop Panes and Internal Frames / 桌面面板与内部框体 741
10.6.3.1 Displaying Internal Frames / 显示内部框体 741
10.6.3.2 Cascading and Tiling / 级联与平铺 744
10.6.3.3 Vetoing Property Settings / 否决属性设置 748
10.6.3.4 Dialogs in Internal Frames / 内部框体中的对话框 750
10.6.3.5 Outline Dragging / 拖曳概述 751
10.6.4 Layers / 层次 760
Chapter 11: Advanced AWT /高级AWT 765
11.1 The Rendering Pipeline / 绘制图形的流程 766
11.2 Shapes / 形状 769
11.2.1 The Shape Class Hierarchy / Shape类层次结构 769
11.2.2 Using the Shape Classes / 使用各种Shape类 772
11.3 Areas / 区域 786
11.4 Strokes / 画笔 788
11.5 Paint / 着色 797
11.6 Coordinate Transformations / 坐标变换 799
11.7 Clipping / 剪切 805
11.8 Transparency and Composition / 透明与组合 807
11.9 Rendering Hints / 绘图提示 817
11.10 Readers and Writers for Images / 图像的读者类和写者类 823
11.10.1 Obtaining Readers and Writers for Image File Types / 获得图像文件类型的读者类和写者类 824
11.10.2 Reading and Writing Files with Multiple Images / 多图文件的读写 825
11.11 Image Manipulation / 图像处理 834
11.11.1 Constructing Raster Images / 构建光栅图像 835
11.11.2 Filtering Images / 图像过滤 842
11.12 Printing / 打印 851
11.12.1 Graphics Printing / 图形打印 852
11.12.2 Multiple-Page Printing / 打印多页文件 862
11.12.3 Print Preview / 打印预览 864
11.12.4 Print Services / 打印服务 874
11.12.5 Stream Print Services / 流打印服务 878
11.12.6 Printing Attributes / 打印属性 879
11.13 The Clipboard / 剪贴板 887
11.13.1 Classes and Interfaces for Data Transfer / 用于数据传输的类和接口 888
11.13.2 Transferring Text / 传输文本 888
11.13.3 The Transferable Interface and Data Flavors / Transferable接口和数据的类型 892
11.13.4 Building an Image Transferable / 构建可传输的图像 894
11.13.5 Transferring Java Objects via the System Clipboard / 通过系统剪贴板传输Java对象 898
11.13.6 Using a Local Clipboard to Transfer Object References / 使用本地剪贴板传输对象引用 902
11.14 Drag and Drop / 拖放 903
11.14.1 Data Transfer Support in Swing / Swing对数据传输的支持 904
11.14.2 Drag Sources / 拖曳源 909
11.14.3 Drop Targets / 放置目标 912
11.15 Platform Integration / 平台集成 921
11.15.1 Splash Screens / 闪屏 921
11.15.2 Launching Desktop Applications / 启动桌面应用程序 927
11.15.3 The System Tray / 系统托盘 932
Chapter 12: Native Methods / 本地方法 939
12.1 Calling a C Function from a Java Program / 从Java程序中调用C函数 940
12.2 Numeric Parameters and Return Values / 数值参数与返回值 947
12.3 String Parameters / 字符串参数 949
12.4 Accessing Fields / 访问字段 956
12.4.1 Accessing Instance Fields / 访问实例字段 956
12.4.2 Accessing Static Fields / 访问静态字段 960
12.5 Encoding Signatures / 编码签名 961
12.6 Calling Java Methods / 调用Java方法 963
12.6.1 Instance Methods / 实例方法 963
12.6.2 Static Methods / 静态方法 964
12.6.3 Constructors / 构造器 965
12.6.4 Alternative Method Invocations / 其他调用方法的手段 966
12.7 Accessing Array Elements / 访问数组元素 970
12.8 Handling Errors / 处理错误 974
12.9 Using the Invocation API / 使用Invocation API 980
12.10 A Complete Example: Accessing the Windows Registry / 完整示例:访问Windows注册表 985
12.10.1 Overview of the Windows Registry / Windows注册表简介 985
12.10.2 A Java Platform Interface for Accessing the Registry / 访问注册表的Java平台接口 987
12.10.3 Implementation of Registry Access Functions as Native Methods / 以本地方法方式实现注册表访问功能 988
^ 收 起
Chapter 1: The Java SE 8 Stream Library / Java SE 8流库 1
1.1 From Iterating to Stream Operations / 从迭代到流操作 2
1.2 Stream Creation / 创建流 5
1.3 The filter, map, and flatMap Methods / filter、map和flatMap方法 9
1.4 Extracting Substreams and Concatenating Streams / 提取子流和连接流 10
1.5 Other Stream Transformations / 其他流变换 11
1.6 Simple Reductions / 简单规约 12
1.7 The Optional Type / Optional类型 13
1.7.1 How to Work with Optional Values / 如何使用Optional值 14
1.7.2 How Not to Work with Optional Values / 不使用Optional值会有什么问题 15
1.7.3 Creating Optional Values / 创建Optional值 16
1.7.4 Composing Optional Value Functions with flatMap / 使用flatMap组合Optional值函数 16
1.8 Collecting Results / 收集结果 19
1.9 Collecting into Maps / 收集到Map中 24
1.10 Grouping and Partitioning / 分组与分区 28
1.11 Downstream Collectors / 下游的收集器 29
1.12 Reduction Operations / 规约操作 33
1.13 Primitive Type Streams / 基本类型的流 36
1.14 Parallel Streams / 并行流 41
Chapter 2: Input and Output / 输入与输出 47
2.1 Input/Output Streams / 输入/输出流 48
2.1.1 Reading and Writing Bytes / 读写字节 48
2.1.2 The Complete Stream Zoo / 流谱系概览 51
2.1.3 Combining Input/Output Stream Filters / 组合输入/输出流过滤器 55
2.2 Text Input and Output / 文本输入与输出 60
2.2.1 How to Write Text Output / 输出文本 60
2.2.2 How to Read Text Input / 输入文本 62
2.2.3 Saving Objects in Text Format / 以文本格式保存对象 63
2.2.4 Character Encodings / 字符编码 67
2.3 Reading and Writing Binary Data / 读写二进制数据 69
2.3.1 The DataInput and DataOutput interfaces / DataInput和DataOutput接口 69
2.3.2 Random-Access Files / 随机访问文件 72
2.3.3 ZIP Archives / ZIP文档 77
2.4 Object Input/Output Streams and Serialization / 对象输入/输出流与序列化 80
2.4.1 Saving and Loading Serializable Objects / 序列化对象的保存与加载 80
2.4.2 Understanding the Object Serialization File Format / 理解对象序列化文件格式 85
2.4.3 Modifying the Default Serialization Mechanism / 修改默认的序列化机制 92
2.4.4 Serializing Singletons and Typesafe Enumerations / 序列化单例和类型安全的枚举 94
2.4.5 Versioning / 版本管理 95
2.4.6 Using Serialization for Cloning / 将序列化用于克隆 98
2.5 Working with Files / 处理文件 100
2.5.1 Paths / 路径 101
2.5.2 Reading and Writing Files / 读写文件 104
2.5.3 Creating Files and Directories / 创建文件与目录 105
2.5.4 Copying, Moving, and Deleting Files / 复制、移动和删除文件 106
2.5.5 Getting File Information / 获取文件信息 108
2.5.6 Visiting Directory Entries / 访问目录条目 110
2.5.7 Using Directory Streams / 使用目录流 111
2.5.8 ZIP File Systems / ZIP文件系统 115
2.6 Memory-Mapped Files / 内存映射文件 116
2.6.1 Memory-Mapped File Performance / 内存映射文件的性能 116
2.6.2 The Buffer Data Structure / 缓冲区数据结构 124
2.6.3 File Locking / 文件锁 126
2.7 Regular Expressions / 正则表达式 128
Chapter 3: XML 143
3.1 Introducing XML / XML简介 144
3.1.1 The Structure of an XML Document / XML文档的结构 146
3.2 Parsing an XML Document / 解析XML文档 149
3.3 Validating XML Documents / 验证XML文档 162
3.3.1 Document Type Definitions / 文档类型定义 163
3.3.2 XML Schema / XML模式 172
3.3.3 A Practical Example / 实用示例 175
3.4 Locating Information with XPath / 使用XPath定位信息 190
3.5 Using Namespaces / 使用命名空间 196
3.6 Streaming Parsers / 流解析器 199
3.6.1 Using the SAX Parser / 使用SAX解析器 199
3.6.2 Using the StAX Parser / 使用StAX解析器 205
3.7 Generating XML Documents / 生成XML文档 208
3.7.1 Documents without Namespaces / 不带命名空间的文档 209
3.7.2 Documents with Namespaces / 带命名空间的文档 209
3.7.3 Writing Documents / 写文档 210
3.7.4 An Example: Generating an SVG File / 示例:生成SVG文件 211
3.7.5 Writing an XML Document with StAX / 使用StAX写XML文档 214
3.8 XSL Transformations / XSL转换 222
Chapter 4: Networking / 网络 233
4.1 Connecting to a Server / 连接到服务器 233
4.1.1 Using Telnet / 使用Telnet 233
4.1.2 Connecting to a Server with Java / 使用Java连接到服务器 236
4.1.3 Socket Timeouts / 套接字超时 238
4.1.4 Internet Addresses / 因特网地址 239
4.2 Implementing Servers / 实现服务器 241
4.2.1 Server Sockets / 服务器套接字 242
4.2.2 Serving Multiple Clients / 为多个客户端服务 245
4.2.3 Half-Close / 半关闭 249
4.3 Interruptible Sockets / 可中断套接字 250
4.4 Getting Web Data / 获取Web数据 257
4.4.1 URLs and URIs / URL和URI 257
4.4.2 Using a URLConnection to Retrieve Information / 使用URLConnection获取信息 259
4.4.3 Posting Form Data / 提交表单数据 267
4.5 Sending E-Mail / 发送电子邮件 277
Chapter 5: Database Programming / 数据库编程 281
5.1 The Design of JDBC / JDBC的设计 282
5.1.1 JDBC Driver Types / JDBC驱动程序分类 283
5.1.2 Typical Uses of JDBC / JDBC的典型用法 284
5.2 The Structured Query Language / 结构化查询语言 285
5.3 JDBC Configuration / JDBC配置 291
5.3.1 Database URLs / 数据库URL 292
5.3.2 Driver JAR Files / 驱动程序JAR文件 292
5.3.3 Starting the Database / 启动数据库 293
5.3.4 Registering the Driver Class / 注册驱动程序类 294
5.3.5 Connecting to the Database / 连接到数据库 294
5.4 Working with JDBC Statements / 使用JDBC语句 297
5.4.1 Executing SQL Statements / 执行SQL语句 298
5.4.2 Managing Connections, Statements, and Result Sets / 管理连接、语句和结果集 301
5.4.3 Analyzing SQL Exceptions / 分析SQL异常 302
5.4.4 Populating a Database / 填充数据库 305
5.5 Query Execution / 执行查询 309
5.5.1 Prepared Statements / 预备语句 309
5.5.2 Reading and Writing LOBs / 读写LOB 316
5.5.3 SQL Escapes / SQL转义 318
5.5.4 Multiple Results / 多结果集 319
5.5.5 Retrieving Autogenerated Keys / 获取自动生成的主键 320
5.6 Scrollable and Updatable Result Sets / 可滚动和可更新的结果集 321
5.6.1 Scrollable Result Sets / 可滚动的结果集 321
5.6.2 Updatable Result Sets / 可更新的结果集 324
5.7 Row Sets / 行集 328
5.7.1 Constructing Row Sets / 构建行集 329
5.7.2 Cached Row Sets / 缓存的行集 329
5.8 Metadata / 元数据 333
5.9 Transactions / 事务 344
5.9.1 Programming Transactions with JDBC / 使用JDBC编程实现事务 344
5.9.2 Save Points / 保存点 345
5.9.3 Batch Updates / 批量更新 345
5.10 Advanced SQL Types / 高级SQL类型 347
5.11 Connection Management in Web and Enterprise Applications / Web与企业应用中的连接管理 349
Chapter 6: The Date and Time API / 日期与时间API 351
6.1 The Time Line / 时间线 352
6.2 Local Dates / 本地日期 355
6.3 Date Adjusters / 日期调整 358
6.4 Local Time / 本地时间 360
6.5 Zoned Time / 时区时间 361
6.6 Formatting and Parsing / 格式化与解析 365
6.7 Interoperating with Legacy Code / 与遗留代码互操作 369
Chapter 7: Internationalization / 国际化 371
7.1 Locales / 地域 372
7.2 Number Formats / 数字格式 378
7.3 Currencies / 货币 384
7.4 Date and Time / 日期与时间 385
7.5 Collation and Normalization / 排序规则与标准化 393
7.6 Message Formatting / 消息格式化 400
7.6.1 Formatting Numbers and Dates / 格式化数字和日期 400
7.6.2 Choice Formats / choice格式化选项 402
7.7 Text Input and Output / 文本输入与输出 404
7.7.1 Text Files / 文本文件 405
7.7.2 Line Endings / 文本行结尾符号 405
7.7.3 The Console / 控制台 405
7.7.4 Log Files / 日志文件 406
7.7.5 The UTF-8 Byte Order Mark / UTF-8字节顺序标记 406
7.7.6 Character Encoding of Source Files / 源文件的字符编码 407
7.8 Resource Bundles / 资源包 408
7.8.1 Locating Resource Bundles / 定位资源包 409
7.8.2 Property Files / 属性文件 410
7.8.3 Bundle Classes / 包类 411
7.9 A Complete Example / 完整示例 413
Chapter 8: Scripting, Compiling, and Annotation Processing / 脚本、编译与注解处理 429
8.1 Scripting for the Java Platform / Java平台的脚本 430
8.1.1 Getting a Scripting Engine / 获得脚本引擎 430
8.1.2 Script Evaluation and Bindings / 脚本求值与绑定 431
8.1.3 Redirecting Input and Output / 重定向输入与输出 434
8.1.4 Calling Scripting Functions and Methods / 调用脚本函数和方法 435
8.1.5 Compiling a Script / 编译脚本 437
8.1.6 An Example: Scripting GUI Events / 示例:用脚本处理GUI事件 437
8.2 The Compiler API / 编译器API 443
8.2.1 Compiling the Easy Way / 编译的简单使用方法 443
8.2.2 Using Compilation Tasks / 使用编译任务 443
8.2.3 An Example: Dynamic Java Code Generation / 示例:动态Java代码生成 449
8.3 Using Annotations / 使用注解 455
8.3.1 An Introduction into Annotations / 注解简介 455
8.3.2 An Example: Annotating Event Handlers 示例:注解事件处理程序 457
8.4 Annotation Syntax / 注解语法 462
8.4.1 Annotation Interfaces / 注解接口 462
8.4.2 Annotations / 注解 464
8.4.3 Annotating Declarations / 在声明的地方使用注解 466
8.4.4 Annotating Type Uses / 在类型使用的地方使用注解 467
8.4.5 Annotating this / 对this做注解 468
8.5 Standard Annotations / 标准注解 470
8.5.1 Annotations for Compilation / 用于编译的注解 471
8.5.2 Annotations for Managing Resources / 用于管理资源的注解 472
8.5.3 Meta-Annotations / 元注解 472
8.6 Source-Level Annotation Processing / 源码级注解处理 475
8.6.1 Annotation Processors / 注解处理器 476
8.6.2 The Language Model API / 语言模型API 476
8.6.3 Using Annotations to Generate Source Code / 使用注解生成源代码 477
8.7 Bytecode Engineering / 字节码引擎 481
8.7.1 Modifying Class Files / 修改类文件 481
8.7.2 Modifying Bytecodes at Load Time / 在加载时修改字节码 486
Chapter 9: Security / 安全 491
9.1 Class Loaders / 类加载器 492
9.1.1 The Class Loading Process / 类加载流程 492
9.1.2 The Class Loader Hierarchy / 类加载器层次结构 494
9.1.3 Using Class Loaders as Namespaces / 将类加载器作为命名空间 496
9.1.4 Writing Your Own Class Loader / 编写自己的类加载器 497
9.1.5 Bytecode Verification / 字节码验证 504
9.2 Security Managers and Permissions / 安全管理器与权限 509
9.2.1 Permission Checking / 权限检查 509
9.2.2 Java Platform Security / Java平台安全 510
9.2.3 Security Policy Files / 安全策略文件 514
9.2.4 Custom Permissions / 定制权限 522
9.2.5 Implementation of a Permission Class / 实现权限类 524
9.3 User Authentication / 用户认证 530
9.3.1 The JAAS Framework / JAAS框架 531
9.3.2 JAAS Login Modules / JAAS登录模块 537
9.4 Digital Signatures / 数字签名 546
9.4.1 Message Digests / 消息摘要 547
9.4.2 Message Signing / 消息签名 550
9.4.3 Verifying a Signature / 验证签名 553
9.4.4 The Authentication Problem / 认证问题 556
9.4.5 Certificate Signing / 证书签名 558
9.4.6 Certificate Requests / 证书请求 560
9.4.7 Code Signing / 代码签名 561
9.5 Encryption / 加密 567
9.5.1 Symmetric Ciphers / 对称密码 567
9.5.2 Key Generation / 生成密钥 569
9.5.3 Cipher Streams / 加密流 574
9.5.4 Public Key Ciphers / 公钥密码 575
Chapter 10: Advanced Swing / 高级Swing 581
10.1 Lists / 列表 582
10.1.1 The JList Component / JList组件 582
10.1.2 List Models / 列表模式 588
10.1.3 Inserting and Removing Values / 插入和移除值 593
10.1.4 Rendering Values / 值的绘制 595
10.2 Tables / 表 599
10.2.1 A Simple Table / 简单表 600
10.2.2 Table Models / 表模式 604
10.2.3 Working with Rows and Columns / 行列操作 608
10.2.3.1 Column Classes / 列类 609
10.2.3.2 Accessing Table Columns / 访问表列 610
10.2.3.3 Resizing Columns / 调整列 611
10.2.3.4 Resizing Rows / 调整行 612
10.2.3.5 Selecting Rows, Columns, and Cells / 选择行、列和单元格 612
10.2.3.6 Sorting Rows / 对行进行排序 614
10.2.3.7 Filtering Rows / 对行进行过滤 615
10.2.3.8 Hiding and Displaying Columns / 隐藏或显示列 617
10.2.4 Cell Rendering and Editing / 单元格的绘制与编辑 626
10.2.4.1 Rendering Cells / 绘制单元格 626
10.2.4.2 Rendering the Header / 绘制表头 627
10.2.4.3 Editing Cells / 编辑单元格 628
10.2.4.4 Custom Editors / 定制编辑器 629
10.3 Trees / 树 639
10.3.1 Simple Trees / 简单的树 640
10.3.2 Editing Trees and Tree Paths / 编辑树和树路径 650
10.3.3 Node Enumeration / 节点枚举 659
10.3.4 Rendering Nodes / 渲染节点 661
10.3.5 Listening to Tree Events / 监听树事件 664
10.3.6 Custom Tree Models / 定制树模型 671
10.4 Text Components / 文本组件 681
10.4.1 Change Tracking in Text Components / 跟踪文本组件的内容修改 682
10.4.2 Formatted Input Fields / 将输入的信息格式化 685
10.4.2.1 Integer Input / 整型输入 686
10.4.2.2 Behavior on Loss of Focus / 丢失焦点时行为 687
10.4.2.3 Filters / 过滤器 688
10.4.2.4 Verifiers / 验证器 690
10.4.2.5 Other Standard Formatters / 其他标准的格式化器 691
10.4.2.6 Custom Formatters / 定制格式化器 693
10.4.3 The JSpinner Component / JSpinner组件 703
10.4.4 Displaying HTML with the JEditorPane / 使用JEditorPane显示HTML 712
10.5 Progress Indicators / 进度指示器 719
10.5.1 Progress Bars / 进度条 719
10.5.2 Progress Monitors / 进度监视器 722
10.5.3 Monitoring the Progress of Input Streams / 监视输入流的进度 726
10.6 Component Organizers and Decorators / 组件组织器和装饰器 731
10.6.1 Split Panes / 分割面板 732
10.6.2 Tabbed Panes / 选项卡面板 735
10.6.3 Desktop Panes and Internal Frames / 桌面面板与内部框体 741
10.6.3.1 Displaying Internal Frames / 显示内部框体 741
10.6.3.2 Cascading and Tiling / 级联与平铺 744
10.6.3.3 Vetoing Property Settings / 否决属性设置 748
10.6.3.4 Dialogs in Internal Frames / 内部框体中的对话框 750
10.6.3.5 Outline Dragging / 拖曳概述 751
10.6.4 Layers / 层次 760
Chapter 11: Advanced AWT /高级AWT 765
11.1 The Rendering Pipeline / 绘制图形的流程 766
11.2 Shapes / 形状 769
11.2.1 The Shape Class Hierarchy / Shape类层次结构 769
11.2.2 Using the Shape Classes / 使用各种Shape类 772
11.3 Areas / 区域 786
11.4 Strokes / 画笔 788
11.5 Paint / 着色 797
11.6 Coordinate Transformations / 坐标变换 799
11.7 Clipping / 剪切 805
11.8 Transparency and Composition / 透明与组合 807
11.9 Rendering Hints / 绘图提示 817
11.10 Readers and Writers for Images / 图像的读者类和写者类 823
11.10.1 Obtaining Readers and Writers for Image File Types / 获得图像文件类型的读者类和写者类 824
11.10.2 Reading and Writing Files with Multiple Images / 多图文件的读写 825
11.11 Image Manipulation / 图像处理 834
11.11.1 Constructing Raster Images / 构建光栅图像 835
11.11.2 Filtering Images / 图像过滤 842
11.12 Printing / 打印 851
11.12.1 Graphics Printing / 图形打印 852
11.12.2 Multiple-Page Printing / 打印多页文件 862
11.12.3 Print Preview / 打印预览 864
11.12.4 Print Services / 打印服务 874
11.12.5 Stream Print Services / 流打印服务 878
11.12.6 Printing Attributes / 打印属性 879
11.13 The Clipboard / 剪贴板 887
11.13.1 Classes and Interfaces for Data Transfer / 用于数据传输的类和接口 888
11.13.2 Transferring Text / 传输文本 888
11.13.3 The Transferable Interface and Data Flavors / Transferable接口和数据的类型 892
11.13.4 Building an Image Transferable / 构建可传输的图像 894
11.13.5 Transferring Java Objects via the System Clipboard / 通过系统剪贴板传输Java对象 898
11.13.6 Using a Local Clipboard to Transfer Object References / 使用本地剪贴板传输对象引用 902
11.14 Drag and Drop / 拖放 903
11.14.1 Data Transfer Support in Swing / Swing对数据传输的支持 904
11.14.2 Drag Sources / 拖曳源 909
11.14.3 Drop Targets / 放置目标 912
11.15 Platform Integration / 平台集成 921
11.15.1 Splash Screens / 闪屏 921
11.15.2 Launching Desktop Applications / 启动桌面应用程序 927
11.15.3 The System Tray / 系统托盘 932
Chapter 12: Native Methods / 本地方法 939
12.1 Calling a C Function from a Java Program / 从Java程序中调用C函数 940
12.2 Numeric Parameters and Return Values / 数值参数与返回值 947
12.3 String Parameters / 字符串参数 949
12.4 Accessing Fields / 访问字段 956
12.4.1 Accessing Instance Fields / 访问实例字段 956
12.4.2 Accessing Static Fields / 访问静态字段 960
12.5 Encoding Signatures / 编码签名 961
12.6 Calling Java Methods / 调用Java方法 963
12.6.1 Instance Methods / 实例方法 963
12.6.2 Static Methods / 静态方法 964
12.6.3 Constructors / 构造器 965
12.6.4 Alternative Method Invocations / 其他调用方法的手段 966
12.7 Accessing Array Elements / 访问数组元素 970
12.8 Handling Errors / 处理错误 974
12.9 Using the Invocation API / 使用Invocation API 980
12.10 A Complete Example: Accessing the Windows Registry / 完整示例:访问Windows注册表 985
12.10.1 Overview of the Windows Registry / Windows注册表简介 985
12.10.2 A Java Platform Interface for Accessing the Registry / 访问注册表的Java平台接口 987
12.10.3 Implementation of Registry Access Functions as Native Methods / 以本地方法方式实现注册表访问功能 988
^ 收 起
Cay S. Horstmann 是Core Java? for the Impatient(2015)、Java SE 8 for the Really Impatient(2014)和Scala for the Impatient(2012)等图书的作者。他还有很多写给职业程序员和计算机专业学生的专著。他是圣何塞州立大学的计算机科学教授,还是一名Java Champion。
本书是经典图书《Java核心技术 卷II:高级特性》的新版。这一版针对Java SE 8平台进行了全面更新,以反映Java SE 8的特性。
书中全面覆盖Java技术的高级主题,包括Java SE 8流库,输入与输出,XML,网络,数据库编程,日期与时间API,国际化,脚本、编译与注解处理,安全,高级Swing,高级AWT,以及本地方法等内容。本书对Java技术的阐述精que到位,叙述方式深入浅出,并包含大量程序示例,让读者充分理解Java语言以及Java类库的相关高级特性。
书中全面覆盖Java技术的高级主题,包括Java SE 8流库,输入与输出,XML,网络,数据库编程,日期与时间API,国际化,脚本、编译与注解处理,安全,高级Swing,高级AWT,以及本地方法等内容。本书对Java技术的阐述精que到位,叙述方式深入浅出,并包含大量程序示例,让读者充分理解Java语言以及Java类库的相关高级特性。
比价列表