圖書簡介
國內也出版了中文翻譯版。第2版在第1版的基礎上增加了XML數據交換、Swing圖形用戶界面等高級主題。各專業領域的Java開發人員均可通過對本書的學習掌握在不同環境中運用Java語言和
API開發應用程式的技術。
目錄
第1章 Java深入介紹 1
1.1 Java體系結構 1
1.2.1JVM的不同實現 4
1.2.2 JVM作為運行時執行環境 4
1.2.3JVM運行時數據區 5
1.2.4 垃圾收集器 7
1.2.5 JVM:載入、連結和初始化 7
1.2.6 執行位元組碼 9
1.3 Java類檔案格式 11
1.4 Java程式語言與API 13
1.4.1 Java程式語言 13
1.4.2JavaAPI 13
1.5 JVM配套的Java實用工具 14
1.5.2 Java解釋器 15
1.5.3 Java類反彙編程式 16
1.6 小結 16
第2章 庫、類和方法的設計 19
2.1 庫的設計 19
2.2 類的設計 20
2.2.1 松耦合 21
2.2.2 強聚合 35
2.2.3 封裝 38
2.2.4 不變對象與不變欄位 41
2.2.5 重寫對象方法 42
2.3 方法設計 48
2.3.1 參數傳遞 49
2.3.2 方法命名 52
2.3.3 最小化代碼重複 53
2.3.4 變數參數 55
2.3.5 使用異常 57
2.3.6 斷言 75
2.3.7 枚舉 77
2.4 小結 79
第3章 在應用程式中使用執行緒 81
3.1 Java執行緒 81
3.2 創建執行緒 83
3.3 使用執行緒的缺點 85
3.3.1 初始啟動變慢 85
3.3.2 資源利用 85
3.3.3 複雜性增加 85
3.4 執行緒管理 87
3.5 共享資源的使用同步 91
3.5.2 同步代碼塊與同步方法 94
3.5.3 死鎖 95
3.6 執行緒優先權 98
3.7 監控程式執行緒 99
3.8 在應用程式中加入執行緒 101
3.9 執行緒控制 109
3.9.1 執行緒啟動 111
3.9.2 執行緒休眠 112
3.9.3 執行緒掛起 116
3.9.4 執行緒恢復 119
3.9.5 執行緒停止 120
3.9.6 執行緒中斷 121
3.11 執行緒中的過時方法 126
3.12 DownloadFiles類 127
3.13 未捕捉的異常 132
3.14 自願放棄處理器 133
3.15 並發工具 135
3.16 小結 136
第4章 集合 137
4.1 集合演變 139
4.1.1 Java2/Java1.2 139
4.1.2 Java5/Java1.5 140
4.2 集合類與接口 140
4.2.2 List 145
4.2.3 ListIterator 148
4.2.4 ArrayList 149
4.2.5 LinkedList 150
4.2.6 Vector 151
4.2.7 Stack 151
4.2.8 Set 152
4.2.9 HashSet 155
4.2.10 構造函式 155
4.2.11 LinkedHashSet 155
4.2.12 TreeSet 155
4.2.13 EnumSet 159
4.2.14 Map 160
4.2.15 HashMap 162
4.2.16 LinkedHashMap 163
4.2.17 TreeMap 163
4.2.18 EnumMap 163
4.2.19 IdentityHashMap 163
4.2.20 WeakHashMap 164
4.2.21 ConcurrentHashMap 165
4.2.22 Queue 165
4.2.23 PriorityQueue 166
4.2.24 PriorityBlockingQueue 166
4.2.25 ArrayBlockingQueue 166
4.2.26 LinkedBlockingQueue 166
4.2.27 ConcurrentLinkedQueue 167
4.2.28 SynchronousQueue 167
4.2.29 DelayQueue 167
4.3 集合使用技巧 168
4.3.1 淺副本和深副本 169
4.3.2 引用接口代替引用實現 169
4.4 小結 170
第5章 布局管理器 171
5.1 布局管理器與GUI構造 171
5.2 CardLayout 173
5.2.1 構造CardLayout 173
5.2.2 子組件尺寸 174
5.2.3 子組件位置 174
5.2.4 尺寸調整 175
5.2.5 容器尺寸 175
5.3FlowLayout 175
5.3.1 構造FlowLayout 175
5.3.2 約束 175
5.3.3 子組件尺寸 176
5.3.4 子組件位置 176
5.3.5 尺寸調整 178
5.3.6 容器尺寸 178
5.4 GridLayout 179
5.4.1 構造GridLayout 180
5.4.2 約束 182
5.4.3 子組件尺寸 182
5.4.4 子組件位置 182
5.4.5 尺寸調整 183
5.4.6 容器尺寸 183
5.5 BorderLayout 183
5.5.1 構造BorderLayout 185
5.5.2 約束 185
5.5.3 子組件尺寸 185
5.5.4 子組件位置 186
5.5.5 尺寸調整 186
5.5.6 容器尺寸 187
5.6 GridBagLayout 187
5.6.1 構造GridBagLayout 190
5.6.2 約束 190
5.6.3 子組件尺寸 210
5.6.4 子組件位置 211
5.6.5 尺寸變化 211
5.6.6 容器尺寸 212
5.7 BoxLayout 212
5.7.1 對齊值、上升和下降 212
5.7.2 構造BoxLayout 216
5.7.3 約束 216
5.7.4 子組件尺寸 216
5.7.5 子組件位置 218
5.7.6 尺寸縮放 218
5.7.7 容器尺寸 219
5.7.8 Swing中的Box類 219
5.8 布局管理器的使用準則 222
5.8.1 組合使用布局管理器 222
5.8.2 不使用布局管理器的絕對定位 224
5.8.3 不可見組件 224
5.8.4 添加組件時指定索引 225
5.9 創建自定義布局管理器 227
5.9.1 LayoutManager2接口方法 228
5.9.2 LayoutManager方法 230
5.9.3 使用自定義布局管理器 234
5.10 小結 235
第6章使用Swing的JTable組件 237
6.1數據模型 238
6.2使用含有JTable組件的JScrollPane類 242
6.3JTable組件的面向列設計 245
6.4調整表格尺寸 245
6.5調整列的尺寸 246
6.5.1AUTO_RESIZE_OFF 246
6.5.2AUTO_RESIZE_NEXT_COLUMN 246
6.5.3AUTO_RESIZE_SUBSEQUENT_COLUMNS 247
6.5.4AUTO_RESIZE_LAST_COLUMN 247
6.5.5AUTO_RESIZE_ALL_COLUMNS 248
6.6單元格繪製 248
6.6.1創建定製的繪製器 249
6.6.2JTable組件的默認繪製器 253
6.8表格選項設定 261
6.8.1行、列、以及單元格選項模式的結合 262
6.8.2列表選項模式 262
6.8.3選項模式的結合 263
6.8.4用編程方式設定選項 266
6.9表格的標題 267
6.9.1繪製標題 267
6.9.2工具提示及繪製器的重新使用 269
6.9.3JTableHeader 270
6.9.4創建行標題 275
6.10對表格按行進行排序 279
6.10.1對列選項進行動態排序 281
6.10.2使用比較 285
6.11添加和刪除表格行 287
6.12顯示特定的表格行 289
6.13小結 290
第7章使用Swing的JTree組件 291
7.1JTree術語簡介 292
7.2創建JTree實例 293
7.2.1TreeModel 296
7.2.2創建樹節點 297
7.3TreePath類 309
7.4TreeModelListener接口 311
7.4.1treeNodesChanged()方法 311
7.4.2treeNodesInserted()方法 311
7.4.3treeNodesRemoved()方法 311
7.4.4treeStructureChanged()方法 311
7.5TreeModelEvent類 311
7.5.1getTreePath()和getPath()方法 312
7.5.2getChildren()方法 312
7.5.3getChildIndices()方法 312
7.6DefaultTreeModel類 312
7.7繪製樹節點 314
7.8編輯樹的節點 320
7.8.1DefaultTreeCellEditor和DefaultCellEditor類 323
7.8.2創建自定義編輯器 324
7.8.3限制編輯某些節點 326
7.9定製分支節點句柄 327
7.10線型與Java或Metal外觀 328
7.11節點選擇 330
7.11.1選擇方式 330
7.11.2TreeSelectionListener類 332
7.11.3TreeSelectionEvent 333
7.11.4JTree中的選擇方法 333
7.12摺疊和展開節點 335
7.13小結 338
第8章添加剪下和貼上功能 350
8.1剪貼簿:剪下和複製數據的存儲位置 340
8.1.1系統剪貼簿 340
8.1.2剪貼簿 341
8.1.3Transferable 341
8.1.4ClipboardOwner實現 342
8.1.5DataFlavor的使用 343
8.2存取與檢索串列化的Java對象 345
8.3在Java程式和本地應用程式之間傳輸數據 357
8.4編寫任意的二進制數據 357
8.5小結 362
第9章添加拖放功能 363
9.1拖放操作的類型 363
9.2預定義游標 364
9.3從本地應用程式執行檔案選擇釋放 365
9.3.1添加對釋放操作的支持 365
9.3.2添加對拖動操作的支持 374
9.4執行本地傳輸 385
9.4.1本地對象DataFlavor的概念 386
9.4.2處理引用傳輸 387
9.5執行連結/引用操作 389
9.6在Java程式和本地應用程式之間傳輸 390
9.7傳輸文本數據 392
9.7.1在Java程式和本地應用程式之間傳輸文本數據 392
9.7.2為文本數據創建一個新的Transferable 394
9.8小結 396
第10章列印 397
10.1定位列印服務 398
10.1.1DocFlavor 399
10.1.2選擇正確的印表機 401
10.1.3AttributeSet 402
10.1.4Attribute類 402
10.1.5AttributeRoles 403
10.1.6接口和實現 403
10.1.7用戶界面的印表機選擇 406
10.2創建列印任務 407
10.3定義列印文檔 407
10.4初始化列印 408
10.5監控列印任務 408
10.5.1監控屬性變化 409
10.5.2取消列印任務 410
10.6Service-Formatted列印的概念 411
10.6.1支持類 412
10.6.2列印應用程式示例 416
10.7小結 422
第11章JDBC介紹 423
11.1SQL標準和JDBC版本 424
11.2JDBC驅動器 425
11.3獲得資料庫連線 428
11.3.2連線 429
11.3.3通過數據源獲得連線(2.x選擇包) 429
11.3.4DatabaseMetaData接口 432
11.4Statement 440
11.4.1executeUpdata()方法 441
11.4.2executeQuery()方法 441
11.4.3execute()方法 441
11.4.4addBatch()和executeBatch()方法 442
11.4.5PreparedStatement類 442
11.4.6CallableStatement 445
11.4.7ParameterMetaData類 446
11.5JDBC數據類型 447
11.5.1ARRAY 448
11.5.2BLOB、CLOB 449
11.5.3DATALINK 449
11.5.4DATE、TIME、TIMESTAMP 450
11.5.5DISTINCT 450
11.5.6STRUCT 450
11.5.7REF 451
11.5.8JAVA_OBJECT 451
11.5.9OTHER 451
11.6ResultSet類 451
11.6.1單向前與滾動(滾動類型) 452
11.6.2隻讀與可更新(併發模式) 452
11.6.3更新敏感性 452
11.6.4Holdability 453
11.6.5選擇ResultSet屬性 453
11.6.6使用ResultSet 454
11.7ResultSetMetaData 458
11.8RowSet 459
11.9事務 460
11.9.1保存點 463
11.9.2隻讀事務 464
11.9.3分散式事務 466
11.10連線池 466
11.11錯誤和警告 468
11.11.1SQLException 468
11.11.2SQLWarning 471
11.12調試功能 472
11.13釋放資源 473
11.14小結 473
第12章應用程式國際化 475
12.1地區 476
12.2資源綁定 477
12.3區分地區格式與分析 483
12.3.1日期的格式化和分析 484
12.3.2時間的格式化及分析 486
12.3.3數值的格式化及分析 487
12.4MessageFormat 489
12.4.1指定地區 491
12.4.2指定格式化對象 492
12.5ChoiceFormat 493
12.6分析文本數據 495
12.7文本比較與排序 501
12.7.1Collator強度 502
12.7.2分解模式 503
12.8應用程式國際化 504
12.9運行時修改Locale選項 515
12.10native2ascii 522
12.11小結 523
第13章XML的使用 525
13.1XML與HTML 526
13.1.1描述數據 527
13.1.2形式合理的文檔 528
13.2何時及為何使用XML 531
13.3創建XML文檔 532
13.3.1root元素 533
13.3.2XML文檔的組成部分 534
13.4分析及有效性 535
13.4.1使用JAXP中的DOM實現進行分析 535
13.4.2全面研究DOM文檔 550
13.4.3編輯DOM文檔 555
13.5轉換XML文檔 561
13.6小結 569
第14章添加註解 571
14.1註解的使用 572
14.1.1重寫 574
14.1.2SuppressWarnings註解 575
14.2創建定製註解 579
14.2.1Target註解 581
14.2.2Retention註解 582
14.2.3Documented註解 584
14.2.4Inherited註解 585
14.3替換外部元數據 587
14.4註解處理工具的使用 590
14.4.1AnnotationProcessorFactory接口 590
14.4.2Declaration接口 593
14.4.3產生Side檔案 595
14.5小結 597