Groovy 程序設計 (Programming Groovy 2: Dynamic Productivity for the Java Developer)
內容描述
《Groovy程序設計》是Groovy編程指南,結合諸多實例探索了Groovy語言特性。主要內容包括:Groovy基礎知識介紹、如何將Groovy應用於日常編碼、MOP與元編程、使用元編程等。
Java開發人員適合學習Groovy,對Groovy已有瞭解的程序員也可在本書中學到一些其他書中無從提及的訣竅和技巧。
目錄大綱
第一部分Groovy起步
第1章起步2
1.1安裝Groovy 2
1.1.1在Windows系統環境安裝Groovy 2
1.1.2在類Unix系統環境安裝Groovy 3
1.2管理多個版本的Groovy 3
1.3使用groovysh 4
1.4使用groovyConsole 5
1.5在命令行中運行Groovy 5
1.6使用IDE 6
1.6.1 IntelliJ IDEA 6
1.6.2 Eclipse Groovy插件6
1.6.3 TextMate Groovy Bundle 6
第2章面向Java開發者的Groovy 8
2.1從Java到Groovy 8
2.1 .1 Hello,Groovy 8
2.1.2實現循環的方式9
2.1.3 GDK一瞥11
2.1.4安全導航操作符13
2.1.5異常處理13
2.1.6 Groovy是輕量級的Java 15
2.2 JavaBean 15
2.3靈活初始化與具名參數19
2.4可選形參20
2.5使用多賦值21
2.6實現接口22
2.7布爾求值25
2.8操作符重載27
2.9對Java 5特性的支持28
2.9.1自動裝箱29
2.9.2 for-each 29
2.9.3 enum 30
2.9.4變長參數31
2.9.5註解32
2.9. 6靜態導入33
2.9.7泛型33
2.10使用Groovy代碼生成變換35
2.10.1使用@Canonical 35
2.10.2使用@Delegate 35
2.10.3使用@Immutable 36
2.10.4使用@Lazy 37
2.10.5使用@ Newify 38
2.10.6使用@Singleton 38
2.11陷阱40
2.11.1 Groovy的==等價於Java的equals() 40
2.11.2編譯時類型檢查默認為關閉42
2.11.3小心新的關鍵字43
2.11. 4別用這樣的代碼塊43
2.11.5閉包與匿名內部類的衝突43
2.11.6分號總是可選的45
2.11.7創建基本類型數組的不同語法45
第3章動態類型47
3.1 Java中的類型47
3.2動態類型48
3.3動態類型不等於弱類型49
3.4能力式設計50
3.4.1使用靜態類型50
3.4.2使用動態類型51
3.4.3使用動態類型需要自律53
3.5可選類型54
3.6多方法55
3.7動態還是非動態58
3.8關閉動態類型58
3.8.1靜態類型檢查59
3.8.2靜態編譯62
第4章使用閉包64
4.1閉包的便利性64
4.1.1傳統方式64
4.1.2 Groovy方式65
4.2閉包的應用67
4.3閉包的使用方式68
4.4向閉包傳遞參數69
4.5使用閉包進行資源清理70
4.6閉包與協程72
4.7科里化閉包74
4.8動態閉包75
4.9閉包委託77
4.10使用尾遞歸編寫程序80
4.11使用記憶化改進性能82
第5章使用字符串87
5.1字面常量與表達式87
5.2 GString的惰性求值問題90
5.3多行字符串93
5.4字符串便捷方法95
5.5正則表達式96
第6章使用集合類98
6.1使用List 98
6.2迭代ArrayList 100
6.2.1使用List的each方法100
6.2.2使用List的collect方法102
6.3使用查找方法102
6.4 List上的其他便捷方法103
6.5使用Map類106
6.6在Map上迭代108
6.6.1 Map的each方法108
6.6.2 Map的collect方法109
6.6.3 Map的find和findAll方法109
6.7 Map上的其他便捷方法110
第二部分使用Groovy
第7章探索GDK 114
7.1使用Object類的擴展114
7.1.1使用dump和inspect方法115
7.1.2使用上下文with()方法115
7.1.3使用sleep 116
7.1.4間接訪問屬性118
7.1.5間接調用方法119
7.2其他擴展119
7.2.1數組的擴展120
7.2.2使用java.lang的擴展120
7.2.3使用java.io的擴展122
7.2.4使用java.util的擴展124
7.3使用擴展模塊定制方法125
第8章處理XML 128
8.1解析XML 128
8.1.1使用DOMCategory 129
8.1.2使用XMLParser 131
8.1.3使用XMLSlurper 131
8.2創建XML 133
第9章使用數據庫136
9.1創建數據庫136
9.2連接到數據庫137
9.3數據庫的Select操作137
9.4將數據轉為XML表示139
9.5使用DataSet 140
9.6插入與更新140
9.7訪問Microsoft Excel 141
第10章使用腳本和類143
10.1 Java和Groovy的混合143
10.2運行Groovy代碼144
10.3在Groovy中使用Groovy類145
10.4利用聯合編譯混合使用Groovy和Java 145
10.5在Java中創建與傳遞Groovy閉包146
10.6在Java中調用Groovy動態方法148
10.7在Groovy中使用Java類150
10.8從Groovy中使用Groovy腳本151
10.9從Java中使用Groovy腳本153
第三部分MOP與元編程
第11章探索元對象協議158
11.1 Groovy對象159
11.2查詢方法與屬性162
11.3動態訪問對象164
第12章使用MOP攔截方法166
12.1使用GroovyInterceptable攔截方法166
12.2使用MetaClass攔截方法168
第13章MOP方法注入173
13.1使用分類註入方法173
13.2使用ExpandoMetaClass注入方法178
13.3向具體的實例中註入方法182
13.4使用Mixin注入方法184
13.5在類中使用多個Mixin 187
第14章MOP方法合成192
14.1使用methodMissing合成方法192
14.2使用ExpandoMetaClass合成方法196
14.3為具體的實例合成方法199
第15章MOP技術匯總201
15.1使用Expando創建動態類201
15.2方法委託:匯總練習203
15.3 MOP技術回顧207
15.3.1用於方法攔截的選項207
15.3.2用於方法注入的選項207
15.3.3用於方法合成的選項208
第16章應用編譯時元編程209
16.1在編譯時分析代碼209
16.1.1理解代碼結構210
16.1.2在代碼結構中導航211
16.2使用AST變換攔截方法調用214
16.3使用AST變換注入方法218
第四部分使用元編程
第17章Groovy生成器224
17.1構建XML 224
17.2構建JSON 227
17.3構建Swing應用229
17.4使用元編程定制生成器230
17.5使用BuilderSupport 233
17.6使用FactoryBuilderSupport 236
第18章單元測試與模擬240
18.1本書代碼與自動化單元測試240
18.2對Java和Groovy代碼執行單元測試241
18.3測試異常245
18.4模擬245
18.5使用覆蓋實現模擬247
18.6使用分類實現模擬250
18.7使用ExpandoMetaClass實現模擬251
18.8使用Expando實現模擬253
18.9使用Map實現模擬255
18.10使用Groovy Mock Library實現模擬255
18.10.1使用StubFor 256
18.10.2使用MockFor 257
第19章在Groovy中創建DSL 261
19.1上下文261
19.2流暢262
19.3 DSL的分類263
19.4設計內部的DSL 264
19.5 Groovy與DSL 264
19.6使用命令鏈接特性改進流暢性265
19.7閉包與DSL 266
19.8方法攔截與DSL 267
19.9括號的限制與變通方案268
19.10分類與DSL 270
19.11 ExpandoMetaClass與DSL 271
附錄A Web資源273
附錄B參考書目277
作者介紹
Venkat Subramaniam
Agile Developer公司創始人,敏捷開發權威人士。他培訓並指導了美國、加拿大、印度和歐洲多國的上千名軟件開發人員,並多次在各種大會上發表演講。除本書外,還著有Jolt大獎圖書《高效程序員的45個習慣:敏捷開發修煉之道》。
臧秀濤
畢業於中國科學院計算技術研究所。曾從事網絡遊戲、操作系統等方面的開發工作。喜愛編程語言和編譯器相關技術。熱愛讀書和翻譯。