關(guān)于我們
書單推薦
新書推薦
|
Java核心技術(shù) 卷II:高級(jí)特性 第11版·英文版 上下冊(cè)
本書是經(jīng)典的《Java核心技術(shù) 卷Ⅱ:高級(jí)特性》的新版。這一版對(duì)全書進(jìn)行了全面更新,以反映Java SE 9、Java SE 10和Java SE 11的特性。
本書是Java技術(shù)權(quán)威指南,全面覆蓋Java技術(shù)的高級(jí)主題,包括流,輸入與輸出,XML,網(wǎng)絡(luò)API,數(shù)據(jù)庫編程,日期與時(shí)間API,國際化,腳本、編譯與注解處理,Java平臺(tái)模塊系統(tǒng),安全,本地方法等內(nèi)容。本書對(duì)Java技術(shù)的闡述精確到位,敘述方式深入淺出,并包含大量程序示例,從而幫助讀者充分理解Java語言以及Java類庫的相關(guān)高級(jí)特性。
本書適合想將Java應(yīng)用于實(shí)際項(xiàng)目的軟件開發(fā)人員、高等院校教師和學(xué)生參考閱讀。
·Java領(lǐng)域極具影響力和參考價(jià)值的著作
·曾獲Jolt生產(chǎn)效率大獎(jiǎng)的Java圖書新版
·Java UI和企業(yè)級(jí)特性的權(quán)威指南——針對(duì)Java 11全面更新
對(duì)于希望為現(xiàn)實(shí)應(yīng)用程序編寫健壯Java代碼的有經(jīng)驗(yàn)的程序員而言,本書是領(lǐng)先且嚴(yán)謹(jǐn)?shù)慕坛毯蛥⒖假Y料,為反映Java 11的改進(jìn)做了修訂,完整覆蓋高級(jí)UI和企業(yè)級(jí)編程、網(wǎng)絡(luò)、安全性和Java強(qiáng)大的新模塊系統(tǒng)。
作者深入且完整地探索了Java復(fù)雜的新特性,演示了如何使用這些新特性來構(gòu)建專業(yè)級(jí)品質(zhì)的應(yīng)用程序。作者充分測試過的代碼示例,可以展現(xiàn)現(xiàn)代Java風(fēng)格和最佳實(shí)踐。為便于理解和實(shí)現(xiàn)實(shí)用價(jià)值最大化,所有示例都經(jīng)過精心設(shè)計(jì),讀者可以基于這些代碼開啟自己的項(xiàng)目。
凱·S. 霍斯特曼(Cay S. Horstmann) 圣何塞州立大學(xué)計(jì)算機(jī)科學(xué)教授,“Java大師”(Java Champion)。他是多卷本的《Java核心技術(shù)》《寫給大忙人看的Java核心技術(shù)(第2 版)》以及《快學(xué)Scala(第2 版)》的作者。他還編寫了很多針對(duì)專業(yè)程序員和計(jì)算機(jī)科學(xué)專業(yè)學(xué)生的其他圖書。
Chapter 1: Streams / 流 1
1.1 From Iterating to Stream Operations / 從迭代到流操作 2
1.2 Stream Creation / 流的創(chuàng)建 5
1.3 The filter, map, and flatMap Methods / filter、map和flatMap方法 11
1.4 Extracting Substreams and Combining Streams / 提取子流和組合流 12
1.5 Other Stream Transformations / 其他流變換 14
1.6 Simple Reductions / 簡單規(guī)約 15
1.7 The Optional Type / Optional類型 16
1.7.1 Getting an Optional Value / 獲得Optional值 17
1.7.2 Consuming an Optional Value / 消耗Optional值 17
1.7.3 Pipelining Optional Values / 流水線式的使用Optional值 18
1.7.4 How Not to Work with Optional Values / 避免錯(cuò)誤使用Optional值 19
1.7.5 Creating Optional Values / 創(chuàng)建Optional值 20
1.7.6 Composing Optional Value Functions with flatMap / 使用flatMap組合Optional值函數(shù) 21
1.7.7 Turning an Optional into a Stream / 將Optional值變到流中 22
1.8 Collecting Results / 收集結(jié)果 25
1.9 Collecting into Maps / 收集到Map中 30
1.10 Grouping and Partitioning / 分組與分區(qū) 34
1.11 Downstream Collectors / 下游的收集器 36
1.12 Reduction Operations / 規(guī)約操作 41
1.13 Primitive Type Streams / 基本類型的流 43
1.14 Parallel Streams / 并行流 48
Chapter 2: Input and Output / 輸入與輸出 55
2.1 Input / Output Streams / 輸入/輸出流 56
2.1.1 Reading and Writing Bytes / 讀寫字節(jié) 56
2.1.2 The Complete Stream Zoo / 流譜系概覽 59
2.1.3 Combining Input/Output Stream Filters / 組合輸入/輸出流過濾器 63
2.1.4 Text Input and Output / 文本輸入與輸出 68
2.1.5 How to Write Text Output / 輸出文本 68
2.1.6 How to Read Text Input / 輸入文本 70
2.1.7 Saving Objects in Text Format / 以文本格式保存對(duì)象 72
2.1.8 Character Encodings / 字符編碼 75
2.2 Reading and Writing Binary Data / 讀寫二進(jìn)制數(shù)據(jù) 78
2.2.1 The DataInput and DataOutput interfaces / DataInput和DataOutput接口 78
2.2.2 Random-Access Files / 隨機(jī)訪問文件 80
2.2.3 ZIP Archives / ZIP文檔 85
2.3 Object Input/Output Streams and Serialization / 對(duì)象輸入/輸出流與序列化 88
2.3.1 Saving and Loading Serializable Objects / 序列化對(duì)象的保存與加載 88
2.3.2 Understanding the Object Serialization File Format / 理解對(duì)象序列化文件格式 93
2.3.3 Modifying the Default Serialization Mechanism / 修改默認(rèn)的序列化機(jī)制 100
2.3.4 Serializing Singletons and Typesafe Enumerations / 序列化單例和類型安全的枚舉 102
2.3.5 Versioning / 版本管理 103
2.3.6 Using Serialization for Cloning / 將序列化用于克隆 106
2.4 Working with Files / 處理文件 109
2.4.1 Paths / 路徑 109
2.4.2 Reading and Writing Files / 讀寫文件 112
2.4.3 Creating Files and Directories / 創(chuàng)建文件和目錄 113
2.4.4 Copying, Moving, and Deleting Files / 復(fù)制、移動(dòng)和刪除文件 114
2.4.5 Getting File Information / 獲取文件信息 116
2.4.6 Visiting Directory Entries / 訪問目錄條目 118
2.4.7 Using Directory Streams / 使用目錄流 120
2.4.8 ZIP File Systems / ZIP文件系統(tǒng) 123
2.5 Memory-Mapped Files / 內(nèi)存映射文件 124
2.5.1 Memory-Mapped File Performance / 內(nèi)存映射文件的性能 125
2.5.2 The Buffer Data Structure / 緩沖區(qū)數(shù)據(jù)結(jié)構(gòu) 132
2.6 File Locking / 文件鎖 134
2.7 Regular Expressions / 正則表達(dá)式 137
2.7.1 The Regular Expression Syntax / 正則表達(dá)式語法 137
2.7.2 Matching a String / 匹配字符串 142
2.7.3 Finding Multiple Matches / 尋找多個(gè)匹配字符串 145
2.7.4 Splitting along Delimiters / 使用分隔符分解 147
2.7.5 Replacing Matches / 替換掉匹配字符串 148
Chapter 3: XML 153
3.1 Introducing XML / XML簡介 154
3.2 The Structure of an XML Document / XML文檔的結(jié)構(gòu) 156
3.3 Parsing an XML Document / 解析XML文檔 159
3.4 Validating XML Documents / 驗(yàn)證XML文檔 169
3.4.1 Document Type Definitions / 文檔類型定義 171
3.4.2 XML Schema / XML模式 179
3.4.3 A Practical Example / 實(shí)用示例 182
3.5 Locating Information with XPath / 使用XPath定位信息 188
3.6 Using Namespaces / 使用命名空間 193
3.7 Streaming Parsers / 流解析器 196
3.7.1 Using the SAX Parser / 使用SAX解析器 197
3.7.2 Using the StAX Parser / 使用StAX解析器 202
3.8 Generating XML Documents / 生成XML文檔 206
3.8.1 Documents without Namespaces / 不帶命名空間的文檔 206
3.8.2 Documents with Namespaces / 帶命名空間的文檔 207
3.8.3 Writing Documents / 寫文檔 208
3.8.4 Writing an XML Document with StAX / 使用StAX寫XML文檔 210
3.8.5 An Example: Generating an SVG File / 示例:生成SVG文件 215
3.9 XSL Transformations / XSL轉(zhuǎn)換 216
Chapter 4: Networking / 網(wǎng)絡(luò) 227
4.1 Connecting to a Server / 連接到服務(wù)器 227
4.1.1 Using Telnet / 使用Telnet 227
4.1.2 Connecting to a Server with Java / 使用Java連接到服務(wù)器 230
4.1.3 Socket Timeouts / 套接字超時(shí) 232
4.1.4 Internet Addresses / 因特網(wǎng)地址 234
4.2 Implementing Servers / 實(shí)現(xiàn)服務(wù)器 236
4.2.1 Server Sockets / 服務(wù)器套接字 236
4.2.2 Serving Multiple Clients / 服務(wù)多個(gè)客戶端 239
4.2.3 Half-Close / 半關(guān)閉 243
4.2.4 Interruptible Sockets / 可中斷套接字 244
4.3 Getting Web Data / 獲取Web數(shù)據(jù) 251
4.3.1 URLs and URIs / URL和URI 251
4.3.2 Using a URLConnection to Retrieve Information / 使用URLConnection獲取信息 254
4.3.3 Posting Form Data / 提交表單數(shù)據(jù) 261
4.4 The HTTP Client / HTTP客戶端 271
4.5 Sending E-Mail / 發(fā)送E-Mail 278
Chapter 5: Database Programming / 數(shù)據(jù)庫編程 283
5.1 The Design of JDBC / JDBC的設(shè)計(jì) 284
5.1.1 JDBC Driver Types / JDBC驅(qū)動(dòng)程序分類 285
5.1.2 Typical Uses of JDBC / JDBC的典型用法 286
5.2 The Structured Query Language / 結(jié)構(gòu)化查詢語言 287
5.3 JDBC Configuration / JDBC配置 293
5.3.1 Database URLs / 數(shù)據(jù)庫URL 294
5.3.2 Driver JAR Files / 驅(qū)動(dòng)程序JAR文件 294
5.3.3 Starting the Database / 啟動(dòng)數(shù)據(jù)庫 294
5.3.4 Registering the Driver Class / 注冊(cè)驅(qū)動(dòng)程序類 295
5.3.5 Connecting to the Database / 連接到數(shù)據(jù)庫 296
5.4 Working with JDBC Statements / 使用JDBC語句 299
5.4.1 Executing SQL Statements / 執(zhí)行SQL語句 299
5.4.2 Managing Connections, Statements, and Result Sets / 管理連接、語句和結(jié)果集 303
5.4.3 Analyzing SQL Exceptions / 分析SQL異常 304
5.4.4 Populating a Database / 填充數(shù)據(jù)庫 306
5.5 Query Execution / 執(zhí)行查詢 310
5.5.1 Prepared Statements / 預(yù)備語句 311
5.5.2 Reading and Writing LOBs / 讀寫LOB 317
5.5.3 SQL Escapes / SQL轉(zhuǎn)義 319
5.5.4 Multiple Results / 多結(jié)果集 321
5.5.5 Retrieving Autogenerated Keys / 獲取自動(dòng)生成的主鍵 322
5.6 Scrollable and Updatable Result Sets / 可滾動(dòng)和可更新的結(jié)果集 322
5.6.1 Scrollable Result Sets / 可滾動(dòng)的結(jié)果集 323
5.6.2 Updatable Result Sets / 可更新的結(jié)果集 325
5.7 Row Sets / 行集 329
5.7.1 Constructing Row Sets / 構(gòu)建行集 330
5.7.2 Cached Row Sets / 緩存的行集 330
5.8 Metadata / 元數(shù)據(jù) 334
5.9 Transactions / 事務(wù) 344
5.9.1 Programming Transactions with JDBC / 使用JDBC編程實(shí)現(xiàn)事務(wù) 344
5.9.2 Save Points / 保存點(diǎn) 345
5.9.3 Batch Updates / 批量更新 345
5.9.4 Advanced SQL Types / 高級(jí)SQL類型 348
5.10 Connection Management in Web and Enterprise Applications / Web與企業(yè)應(yīng)用中的連接管理 349
Chapter 6: The Date and Time API / 日期與時(shí)間API 353
6.1 The Time Line / 時(shí)間線 354
6.2 Local Dates / 本地日期 358
6.3 Date Adjusters / 日期調(diào)整 364
6.4 Local Time / 本地時(shí)間 365
6.5 Zoned Time / 時(shí)區(qū)時(shí)間 367
6.6 Formatting and Parsing / 格式化與解析 371
6.7 Interoperating with Legacy Code / 與遺留代碼互操作 376
Chapter 7: Internationalization / 國際化 379
7.1 Locales / 地域 380
7.1.1 Why Locales / 為什么要引入地域類 380
7.1.2 Specifying Locales / 指定地域 381
7.1.3 The Default Locale / 默認(rèn)地域 384
7.1.4 Display Names / 顯示地域名 384
7.2 Number Formats / 數(shù)字格式 387
7.2.1 Formatting Numeric Values / 格式化數(shù)字值 387
7.2.2 Currencies / 貨幣 393
7.3 Date and Time / 日期與時(shí)間 394
7.4 Collation and Normalization / 排序規(guī)則與標(biāo)準(zhǔn)化 402
7.5 Message Formatting / 消息格式化 409
7.5.1 Formatting Numbers and Dates / 格式化數(shù)字和日期 409
7.5.2 Choice Formats / choice格式化選項(xiàng) 411
7.6 Text Input and Output / 文本輸入與輸出 413
7.6.1 Text Files / 文本文件 414
7.6.2 Line Endings / 文本行結(jié)尾符號(hào) 414
7.6.3 The Console / 控制臺(tái) 414
7.6.4 Log Files / 日志文件 415
7.6.5 The UTF-8 Byte Order Mark / UTF-8字節(jié)順序標(biāo)記 415
7.6.6 Character Encoding of Source Files / 源文件的字符編碼 416
7.7 Resource Bundles / 資源包 417
7.7.1 Locating Resource Bundles / 定位資源包 417
7.7.2 Property Files / 屬性文件 418
7.7.3 Bundle Classes / 包類 419
7.8 A Complete Example / 完整示例 421
Chapter 8: Scripting, Compiling, and Annotation Processing / 腳本、編譯與注解處理 439
8.1 Scripting for the Java Platform / Java平臺(tái)的腳本 440
8.1.1 Getting a Scripting Engine / 獲得腳本引擎 440
8.1.2 Script Evaluation and Bindings / 腳本求值與綁定 441
8.1.3 Redirecting Input and Output / 重定向輸入輸出 444
8.1.4 Calling Scripting Functions and Methods / 調(diào)用腳本函數(shù)和方法 444
8.1.5 Compiling a Script / 編譯腳本 446
8.1.6 An Example: Scripting GUI Events / 示例:用腳本處理GUI事件 447
8.2 The Compiler API / 編譯器API 452
8.2.1 Invoking the Compiler / 調(diào)用編譯器 453
8.2.2 Launching a Compilation Task / 啟動(dòng)編譯任務(wù) 453
8.2.3 Capturing Diagnostics / 捕獲診斷信息 454
8.2.4 Reading Source Files from Memory / 從內(nèi)存讀取源文件 454
8.2.5 Writing Byte Codes to Memory / 將字節(jié)碼寫入內(nèi)存 455
8.2.6 An Example: Dynamic Java Code Generation / 示例:動(dòng)態(tài)Java代碼生成 457
8.3 Using Annotations / 使用注解 463
8.3.1 An Introduction into Annotations / 注解簡介 464
8.3.2 An Example: Annotating Event Handlers / 示例:注解事件處理程序 465
8.4 Annotation Syntax / 注解語法 471
8.4.1 Annotation Interfaces / 注解接口 471
8.4.2 Annotations / 注解 473
8.4.3 Annotating Declarations / 在聲明的地方使用注解 475
8.4.4 Annotating Type Uses / 在類型使用的地方使用注解 476
8.4.5 Annotating this / 對(duì)this做注解 477
8.5 Standard Annotations / 標(biāo)準(zhǔn)注解 478
8.5.1 Annotations for Compilation / 用于編譯的注解 480
8.5.2 Annotations for Managing Resources / 用于管理資源的注解 480
8.5.3 Meta-Annotations / 元注解 481
8.6 Source-Level Annotation Processing / 源碼級(jí)注解處理 484
8.6.1 Annotation Processors / 注解處理器 484
8.6.2 The Language Model API / 語言模型API 485
8.6.3 Using Annotations to Generate Source Code / 使用注解生成源代碼 486
8.7 Bytecode Engineering / 字節(jié)碼工程 489
8.7.1 Modifying Class Files / 修改類文件 490
8.7.2 Modifying Bytecodes at Load Time / 在加載時(shí)修改字節(jié)碼 495
Chapter 9: The Java Platform Module System / Java平臺(tái)模塊系統(tǒng) 499
9.1 The Module Concept / 模塊概念 500
9.2 Naming Modules / 命名模塊 501
9.3 The Modular“Hello, World!”Program / 模塊化的“Hello, World!”程序 502
9.4 Requiring Modules / 請(qǐng)求模塊 504
9.5 Exporting Packages / 導(dǎo)出包 506
9.6 Modular JARs / 模塊化的JAR文件 510
9.7 Modules and Reflective Access / 模塊與反射訪問 511
9.8 Automatic Modules / 自動(dòng)模塊 515
9.9 The Unnamed Module / 未命名模塊 517
9.10 Command-Line Flags for Migration / 用于遷移的命令行標(biāo)志 518
9.11 Transitive and Static Requirements / 傳遞和靜態(tài)請(qǐng)求 519
9.12 Qualified Exporting and Opening / 限制導(dǎo)出和打開 521
9.13 Service Loading / 服務(wù)加載 522
9.14 Tools for Working with Modules / 處理模塊的工具 524
Chapter 10: Security / 安全 529
10.1 Class Loaders / 類加載器 530
10.1.1 The Class-Loading Process / 類加載流程 530
10.1.2 The Class Loader Hierarchy / 類加載器層次結(jié)構(gòu) 532
10.1.3 Using Class Loaders as Namespaces / 將類加載器作為命名空間 534
10.1.4 Writing Your Own Class Loader / 編寫自己的類加載器 534
10.1.5 Bytecode Verification / 字節(jié)碼驗(yàn)證 541
10.2 Security Managers and Permissions / 安全管理器與權(quán)限 546
10.2.1 Permission Checking / 權(quán)限檢查 546
10.2.2 Java Platform Security / Java平臺(tái)安全 547
10.2.3 Security Policy Files / 安全策略文件 551
10.2.4 Custom Permissions / 定制權(quán)限 559
10.2.5 Implementation of a Permission Class / 實(shí)現(xiàn)權(quán)限類 560
10.3 User Authentication / 用戶認(rèn)證 566
10.3.1 The JAAS Framework / JAAS框架 566
10.3.2 JAAS Login Modules / JAAS登錄模塊 573
10.4 Digital Signatures / 數(shù)字簽名 582
10.4.1 Message Digests / 消息摘要 583
10.4.2 Message Signing / 消息簽名 587
10.4.3 Verifying a Signature / 驗(yàn)證簽名 589
10.4.4 The Authentication Problem / 認(rèn)證問題 592
10.4.5 Certificate Signing / 證書簽名 594
10.4.6 Certificate Requests / 證書請(qǐng)求 596
10.4.7 Code Signing / 代碼簽名 597
10.5 Encryption / 加密 599
10.5.1 Symmetric Ciphers / 對(duì)稱密碼 600
10.5.2 Key Generation / 生成密鑰 602
10.5.3 Cipher Streams / 加密流 607
10.5.4 Public Key Ciphers / 公鑰密碼 608
Chapter 11: Advanced Swing and Graphics / 高級(jí)Swing和圖形編程 613
11.1 Tables / 表格 613
11.1.1 A Simple Table / 簡單表格 614
11.1.2 Table Models / 表格模式 618
11.1.3 Working with Rows and Columns / 行列操作 622
11.1.3.1 Column Classes / 列類 622
11.1.3.2 Accessing Table Columns / 訪問表列 623
11.1.3.3 Resizing Columns / 調(diào)整列 624
11.1.3.4 Resizing Rows / 調(diào)整行 625
11.1.3.5 Selecting Rows, Columns, and Cells / 選擇行、列和單元格 626
11.1.3.6 Sorting Rows / 對(duì)行進(jìn)行排序 627
11.1.3.7 Filtering Rows / 對(duì)行進(jìn)行過濾 628
11.1.3.8 Hiding and Displaying Columns / 隱藏或顯示列 630
11.1.4 Cell Rendering and Editing / 單元格的繪制和編輯 639
11.1.4.1 Rendering Cells / 繪制單元格 639
11.1.4.2 Rendering the Header / 繪制表頭 641
11.1.4.3 Editing Cells / 編輯單元格 641
11.1.4.4 Custom Editors / 定制編輯器 642
11.2 Trees / 樹 652
11.2.1 Simple Trees / 簡單的樹 654
11.2.2 Node Enumeration / 節(jié)點(diǎn)枚舉 672
11.2.3 Rendering Nodes / 渲染節(jié)點(diǎn) 674
11.2.4 Listening to Tree Events / 監(jiān)聽樹事件 677
11.2.5 Custom Tree Models / 定制樹模型 684
11.3 Advanced AWT / 高級(jí)AWT 693
11.3.1 The Rendering Pipeline / 繪制圖形的流程 694
11.3.2 Shapes / 形狀 696
11.3.2.1 The Shape Class Hierarchy / Shape類層次結(jié)構(gòu) 697
11.3.2.2 Using the Shape Classes / 使用各種Shape類 698
11.3.3 Areas / 區(qū)域 714
11.3.4 Strokes / 畫筆 715
11.3.5 Paint / 著色 724
11.3.6 Coordinate Transformations / 坐標(biāo)變換 727
11.3.7 Clipping / 剪切 733
11.3.8 Transparency and Composition / 透明和組合 735
11.4 Raster Images / 光柵圖像 744
11.4.1 Readers and Writers for Images / 圖像的讀取器和寫入器 745
11.4.1.1 Obtaining Readers and Writers for Image File Types / 獲取圖像文件類型的讀取器和寫入器 745
11.4.1.2 Reading and Writing Files with Multiple Images / 讀寫包含多個(gè)圖像的文件 747
11.4.2 Image Manipulation / 圖像處理 756
11.4.2.1 Constructing Raster Images / 構(gòu)建光柵圖像 756
11.4.2.2 Filtering Images / 圖像過濾 763
11.5 Printing / 打印 772
11.5.1 Graphics Printing / 圖形打印 772
11.5.2 Multiple-Page Printing / 多頁打印 782
11.5.3 Print Services / 打印服務(wù) 792
11.5.4 Stream Print Services / 流打印服務(wù) 796
11.5.5 Printing Attributes / 打印屬性 799
Chapter 12: Native Methods / 本地方法 809
12.1 Calling a C Function from a Java Program / 從Java程序中調(diào)用C函數(shù) 810
12.2 Numeric Parameters and Return Values / 數(shù)值參數(shù)與返回值 817
12.3 String Parameters / 字符串參數(shù) 819
12.4 Accessing Fields / 訪問字段 825
12.4.1 Accessing Instance Fields / 訪問實(shí)例字段 825
12.4.2 Accessing Static Fields / 訪問靜態(tài)字段 829
12.5 Encoding Signatures / 編碼簽名 831
12.6 Calling Java Methods / 調(diào)用Java方法 832
12.6.1 Instance Methods / 實(shí)例方法 833
12.6.2 Static Methods / 靜態(tài)方法 834
12.6.3 Constructors / 構(gòu)造器 835
12.6.4 Alternative Method Invocations / 其他調(diào)用方法的手段 835
12.7 Accessing Array Elements / 訪問數(shù)組元素 840
12.8 Handling Errors / 處理錯(cuò)誤 844
12.9 Using the Invocation API / 使用Invocation API 849
12.10 A Complete Example: Accessing the Windows Registry / 完整示例:訪問Windows注冊(cè)表 855
12.10.1 Overview of the Windows Registry / Windows注冊(cè)表簡介 855
12.10.2 A Java Platform Interface for Accessing the Registry / 訪問注冊(cè)表的Java平臺(tái)接口 856
12.10.3 Implementation of Registry Access Functions as Native Methods / 以本地方法方式實(shí)現(xiàn)注冊(cè)表訪問功能 857
你還可能感興趣
我要評(píng)論
|