Groovy 程序設計 (Programming Groovy 2: Dynamic Productivity for the Java Developer) Groovy程序设计 (图灵程序设计丛书)

Venkat Subramaniam

買這商品的人也買了...

商品描述

《Groovy程序設計》是Groovy編程指南,結合諸多實例探索了Groovy語言特性。主要內容包括:Groovy基礎知識介紹、如何將Groovy應用於日常編碼、MOP與元編程、使用元編程等。
 Java開發人員適合學習Groovy,對Groovy已有瞭解的程序員也可在本書中學到一些其他書中無從提及的訣竅和技巧。

作者簡介

Venkat Subramaniam 

Agile Developer公司創始人,敏捷開發權威人士。他培訓並指導了美國、加拿大、印度和歐洲多國的上千名軟件開發人員,並多次在各種大會上發表演講。除本書外,還著有Jolt大獎圖書《高效程序員的45個習慣:敏捷開發修煉之道》。

 

臧秀濤

畢業於中國科學院計算技術研究所。曾從事網絡遊戲、操作系統等方面的開發工作。喜愛編程語言和編譯器相關技術。熱愛讀書和翻譯。

目錄大綱

第一部分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