书刊介绍
《Groovy程序设计》内容简介
本书是Groovy 编程指南,结合诸多实例探索了Groovy 语言特性。主要内容包括:Groovy 基础知识介绍、如何将Groovy 应用于日常编码、MOP 与元编程、使用元编程等。
本书适合Java 开发人员学习Groovy,对Groovy 已有了解的程序员也可在本书中学到一些其他书中无从提及的诀窍和技巧。
Venkat Subramaniam(作者),Agile Developer公司创始人,敏捷开发权威人士。他培训并指导了美国、加拿大、印度和欧洲多国的上千名软件开发人员,并多次在各种大会上发表演讲。除本书外,还著有Jolt大奖图书《高效程序员的45个习惯:敏捷开发修炼之道》。
臧秀涛(译者),硕士毕业于中国科学院计算技术研究所。曾从事网络游戏、操作系统等方面的开发工作。喜爱编程语言和编译器相关技术。热爱读书和翻译。作品目录
序
引言
Groovy是什么
为何要使用动态语言
为何选择Groovy
本书内容
相对于第1版的变化
目标读者
在线资源
致谢
第一部分
Groovy起步
第1章:起步
1.1、安装Groovy
1.1.1、在Windows系统环境安装Groovy
1.1.2、在类Unix系统环境安装Groovy
1.2、管理多个版本的Groovy
1.3、使用groovysh
1.4、使用groovyConsole
1.5、在命令行中运行Groovy
1.6、使用IDE
1.6.1、IntelliJ
IDEA
1.6.2、Eclipse
Groovy插件
1.6.3、TextMate
Groovy
Bundle
第2章:面向Java开发者的Groovy
2.1、从Java到Groovy
2.1.1、Hello,Groovy
2.1.2、实现循环的方式
2.1.3、GDK一瞥
2.1.4、安全导航操作符
2.1.5、异常处理
2.1.6、Groovy是轻量级的Java
2.2、JavaBean
2.3、灵活初始化与具名参数
2.4、可选形参
2.5、使用多赋值
2.6、实现接口
2.7、布尔求值
2.8、操作符重载
2.9、对Java
5特性的支持
2.9.1、自动装箱
2.9.2、for-each
2.9.3、enum
2.9.4、变长参数
2.9.5、注解
2.9.6、静态导入
2.9.7、泛型
2.10、使用Groovy代码生成变换
2.10.1、使用@Canonical
2.10.2、使用@Delegate
2.10.3、使用@Immutable
2.10.4、使用@Lazy
2.10.5、使用@Newify
2.10.6、使用@Singleton
2.11、陷阱
2.11.1、Groovy的==等价于Java的equals()
2.11.2、编译时类型检查默认为关闭
2.11.3、小心新的关键字
2.11.4、别用这样的代码块
2.11.5、闭包与匿名内部类的冲突
2.11.6、分号总是可选的
2.11.7、创建基本类型数组的不同语法
第3章:动态类型
3.1、Java中的类型
3.2、动态类型
3.3、动态类型不等于弱类型
3.4、能力式设计
3.4.1、使用静态类型
3.4.2、使用动态类型
3.4.3、使用动态类型需要自律
3.5、可选类型
3.6、多方法
3.7、动态还是非动态
3.8、关闭动态类型
3.8.1、静态类型检查
3.8.2、静态编译
第4章:使用闭包
4.1、闭包的便利性
4.1.1、传统方式
4.1.2、Groovy方式
4.2、闭包的应用
4.3、闭包的使用方式
4.4、向闭包传递参数
4.5、使用闭包进行资源清理
4.6、闭包与协程
4.7、科里化闭包
4.8、动态闭包
4.9、闭包委托
4.10、使用尾递归编写程序
4.11、使用记忆化改进性能
第5章:使用字符串
5.1、字面常量与表达式
5.2、GString的惰性求值问题
5.3、多行字符串
5.4、字符串便捷方法
5.5、正则表达式
第6章:使用集合类
6.1、使用List
6.2、迭代ArrayList
6.2.1、使用List的each方法
6.2.2、使用List的collect方法
6.3、使用查找方法
6.4、List上的其他便捷方法
6.5、使用Map类
6.6、在Map上迭代
6.6.1、Map的each方法
6.6.2、Map的collect方法
6.6.3、Map的find和findAll方法
6.7、Map上的其他便捷方法
第二部分
使用Groovy
第7章:探索GDK
7.1、使用Object类的扩展
7.1.1、使用dump和inspect方法
7.1.2、使用上下文with()方法
7.1.3、使用sleep
7.1.4、间接访问属性
7.1.5、间接调用方法
7.2、其他扩展
7.2.1、数组的扩展
7.2.2、使用java.lang的扩展
7.2.3、使用java.io的扩展
7.2.4、使用java.util的扩展
7.3、使用扩展模块定制方法
第8章:处理XML
8.1、解析XML
8.1.1、使用DOMCategory
8.1.2、使用XMLParser
8.1.3、使用XMLSlurper
8.2、创建XML
第9章:使用数据库
9.1、创建数据库
9.2、连接到数据库
9.3、数据库的Select操作
9.4、将数据转为XML表示
9.5、使用DataSet
9.6、插入与更新
9.7、访问Microsoft
Excel
第10章:使用脚本和类
10.1、Java和Groovy的混合
10.2、运行Groovy代码
10.3、在Groovy中使用Groovy类
10.4、利用联合编译混合使用Groovy和Java
10.5、在Java中创建与传递Groovy闭包
10.6、在Java中调用Groovy动态方法
10.7、在Groovy中使用Java类
10.8、从Groovy中使用Groovy脚本
10.9、从Java中使用Groovy脚本
第三部分
MOP与元编程
第11章:探索元对象协议
11.1、Groovy对象
11.2、查询方法与属性
11.3、动态访问对象
第12章:使用MOP拦截方法
12.1、使用GroovyInterceptable拦截方法
12.2、使用MetaClass拦截方法
第13章:MOP方法注入
13.1、使用分类注入方法
13.2、使用ExpandoMetaClass注入方法
13.3、向具体的实例中注入方法
13.4、使用Mixin注入方法
13.5、在类中使用多个Mixin
第14章:MOP方法合成
14.1、使用methodMissing合成方法
14.2、使用ExpandoMetaClass合成方法
14.3、为具体的实例合成方法
第15章:MOP技术汇总
15.1、使用Expando创建动态类
15.2、方法委托:汇总练习
15.3、MOP技术回顾
15.3.1、用于方法拦截的选项
15.3.2、用于方法注入的选项
15.3.3、用于方法合成的选项
第16章:应用编译时元编程
16.1、在编译时分析代码
16.1.1、理解代码结构
16.1.2、在代码结构中导航
16.2、使用AST变换拦截方法调用
16.3、使用AST变换注入方法
第四部分
使用元编程
第17章:Groovy生成器
17.1、构建XML
17.2、构建JSON
17.3、构建Swing应用
17.4、使用元编程定制生成器
17.5、使用BuilderSupport
17.6、使用FactoryBuilderSupport
第18章:单元测试与模拟
18.1、本书代码与自动化单元测试
18.2、对Java和Groovy代码执行单元测试
18.3、测试异常
18.4、模拟
18.5、使用覆盖实现模拟
18.6、使用分类实现模拟
18.7、使用ExpandoMetaClass实现模拟
18.8、使用Expando实现模拟
18.9、使用Map实现模拟
18.10、使用Groovy
Mock
Library实现模拟
18.10.1、使用StubFor
18.10.2、使用MockFor
第19章:在Groovy中创建DSL
19.1、上下文
19.2、流畅
19.3、DSL的分类
19.4、设计内部的DSL
19.5、Groovy与DSL
19.6、使用命令链接特性改进流畅性
19.7、闭包与DSL
19.8、方法拦截与DSL
19.9、括号的限制与变通方案
19.10、分类与DSL
19.11、ExpandoMetaClass与DSL
附录A
Web资源
附录B
参考书目