Groovy入门经典
作者 : Kenneth Barclay;John Savage
译者 : 龚波 张平 陈蓓 王琦
丛书名 : 华章程序员书库
出版日期 : 2007-11-05
ISBN : 7-111-22493-8
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 352
开本 : 16开
原书名 : Groovy Programming: An Introduction for Java Developers
原出版社: Elsevier
属性分类: 教材
包含CD :
绝版 :
图书简介

适合Java开发者的Groovy入门书  

  Groovy是唯一能够扩展Java平台的脚本语言。Groovy提供类似于Java的语法结构,本地化支持映射和列表、方法、类、闭包和构造器等结构。由于具有动态弱类型,以及无缝访问Java API等特性,Groovy语言非常适合于开发中小型规模的应用程序。
  相对于Java语言,Groovy语言的表述性更强,抽象程度更高。它使得应用程序开发更加快捷,提升了程序员生产力。Groovy语言可以用作应用程序的“黏合剂”,而不必实现复杂的数据结构和算法。
  与Java代码比较起来,Groovy语言的另一个主要优势是,Groovy代码编写量相对小些。在一般情况下,Java代码过于复杂,难于理解和维护。这是因为Java需要大量的模板文件或者转换代码,而Groovy却不需要。
  本书是有关Groovy的第一本正式出版物,作者Kenneth Barclay和John Savage介绍了Groovy开发的所有主要领域,并解释了这种创新性的编程语言给Java平台赋予的动态特性。阅读本书只要求具备Java编程的一般性知识。不管你是经验丰富的Java开发者,还是脚本语言的新手,都会得到如何充分利用Groovy语言的专家性指导。

  本书特点
  ■ 第一本全面讲解Groovy编程的图书,演示如何快速和轻松地编写适用于Java平台的应用程序和脚本。
  ■ 本书由高水平软件工程师精心编写,并得到计算机老师和专家的高度赞扬。
  ■ 提供大量编程范例、代码范例、详细的案例分析、习题,非常适合自学。本书还有一个支持网站,并提供一个基于Windows的Groovy编辑器。

图书特色

图书前言

本书是脚本语言Groovy的入门书。对于Java开发者来说,Groovy语言会使得编写Java平台的脚本和应用程序变得既快又容易。Groovy语言包含很多在其他脚本语言(诸如Python、Ruby和Smalltalk)中可见的语言特性。因为Groovy是一种基于Java的语言,Groovy语言编写的应用程序可以完全使用Java应用程序编程接口(API)。这意味着,Groovy可以与使用Java语言所编写的框架和组件完美集成。
  脚本语言Groovy和系统编程语言Java相互补充,综合使用两者可以加速程序开发过程。比如,可以使用Java语言编写框架和组件,而把Groovy语言用作框架和组件的“黏合剂”。Groovy语言的易用性有利于大大扩展Groovy的应用范围。现在,组件架构、图形化用户界面(Graphical User Interface,GUI)、数据库访问以及因特网应用等日趋重要,这有利于Groovy脚本语言的应用和发展。
  Groovy开发者可以充分利用脚本语言所特有的快速应用程序开发特性,Groovy适合处理涉及大量数据或者文件操作的任务,应用程序测试,或者在小型或者中型项目中替代Java语言。
  Groovy的语法类似于Java编程语言的语法。这样可以大大缩短Java程序员学习Groovy语言的时间。Java平台的其他脚本语言通常都是基于早期的预处理器概念,这样就存在先天性的发展障碍。但是,Groovy语言“就是”Java语言,提供与Java平台更自然、更无缝地集成。
  本书组织方式
  本书的内容组织形式注重引导读者快速了解Groovy语言的基本元素,并且假定阅读本书的读者已经阅读过至少一本Java图书。对于本书最后几章,如果读者具有Swing、标准查询语言(Standard Query Language, SQL)、Spring、XML、Ant以及Web应用程序构建等方面的经验,则学习起来会更加自如。作者尽量保证每章目标的单一性和简要性。有些读者也许希望在一章中就可以学习到特定Groovy特性的全部内容,希望本书的这种组织方式能够实现读者的这个目标。同样,每章内容的简短性也有利于读者进行选择性学习,直接跳转到自己关注的内容章节。
  本书中很多章都有对应的附录,以更加详细地介绍所讨论的主题。比如,第7章介绍定义和使用Groovy方法的基本概念。附录G更加深入地讨论这个概念,诸如方法的重载和递归,这些更加高级的话题却不是正文的核心内容。同样,这样做也有利于正文中内容简短单一。
  本书中很多章也包含很多简短易懂的范例,以说明相应的语言概念。这些范例是完整的,建议读者在学习过程中尝试和试验这些范例。每章最后也有对应的练习,读者应该尝试做这些练习。本书的网站提供每章中范例的源代码,以及练习的解决方案。
  本书的一个特色是提供一个不断演化的学习案例—管理和维护一个电子图书馆的借阅库。在本书中,每一章都会逐步完善这个学习案例,使用刚讨论的Groovy新特性来增强这个学习案例的功能。比如,在第11章中,学习案例增加了以前章所介绍的方法、程序闭包(closure),以及文件处理等内容。
  本书第1部分包括第1~16章,介绍Groovy语言的基本特性。比如,讨论Groovy方法、程序闭包、列表、映射,以及对类和继承的支持。
  自动化单元测试也是本书的重要讨论主题。Groovy的快速创建-运行循环使之非常适合于开发单元测试。Groovy充分利用工业标准JUnit框架,来简化单元测试的创建和使用过程。单元测试在Groovy中的应用集成了动态类型语言的灵活性和静态类型语言的安全性。为加强说明这一点,本书把单元测试作为大多数学习案例中不可或缺的一部分。
  本书的第2部分包括第17~24章,讨论如何使用Groovy创建更加高级的应用程序。比如,使用Spring框架和Cloudscape/Derby关系型数据库管理系统来实现持久性。Groovy提供独特的生成器符号,以支持XML和GUI应用程序。本书最后讨论模板和Web应用程序。
  本书约定
  本书提供很多与所介绍主题相关的网站和参考书目。
  一般情况下不区分“程序”和“脚本”的概念,两个术语可以替换使用。但是,在本书中,这两个概念始终专指Groovy脚本。
  软件发布
  作者搭建本书的一个支持性网站—http://   www.dcs.napier.ac.uk/~kab/groovy/groovy.html,其中包含本书中所有范例和学习案例的脚本,也提供每章最后练习的答案。
  Groovy在不断发展变化着。作者希望通过这个网站让读者有机会了解最新的重要变更。因此,建议读者经常浏览这个网站,了解最新的信息。
  感谢
  本书作者非常感谢参与Groovy概念设计和开发,以及Java Specification Request (JSR-241)(http:// www.dcs.napier.ac.uk/~cs05/groovy/groovy.html)的人们。本书的目的是宣扬Groovy语言。我们感谢始终改进Groovy的Guillaume Laforge (Groovy Project Manager),感谢Andrew Glover (CTO, Vanward Technologies) 在IBM Developer网站发表有关Groovy的文章。同样,非常感谢Jon Kerridge教授(School of Computing, Napier University, Edinburgh),他始终鼓励和支持这个项目,并引导我们关注以前没有注意到的领域和挑战。
  本书作者也感谢Denise Penrose、Tim Cox、Mary James、Christine Brandt以及他们在Morgan Kaufmann的同事,感谢Elsevier在本书出版过程中给予的帮助。最后,感谢技术评审专家Andrew Glover和Sean Burke,他们提供大量有价值的建议。但是本书中出现的任何错误都是本书作者的责任。

图书序言

脚本语言不是新生事物。通常,脚本语言运行于Linux和UNIX操作系统环境下,可以完成很多shell脚本任务,比如软件自动安装和配置,平台定制,使用Python语言建立科学的应用程序原型,以及使用bash脚本完成一次性的命令行任务。有的脚本语言(如PHP)已经广泛地用于开发许多网站。事实证明,脚本语言适合于实现关键的业务应用程序。
  在通常情况下,脚本语言是独立的平台,一般情况下不与其他平台进行交互。尽管在桥接(bridge)其他系统时也许存在绑定现象,但是这种集成未必都非常直观或者自然。Groovy试图解决这个问题,它是一种创新的语言,能够自然地通过相同虚拟机的Java环境进行交互。
  Groovy使用简练的、易于理解的类Java语法,这样可以降低Java程序员学习Groovy语言的难度。除了语法类似于Java语言之外,Groovy给常见的JDK应用程序编程接口(Application Programming Interface)提供包装器API,进一步拓展Groovy的应用领域。借助Groovy,可以简化常见任务的实现,并集成元编程能力,以开发功能强大的新语言结构,或者轻松地处理已有的语言结构。
  Groovy可以用于多种情况,比如作为shell脚本语言完成数据处理和文件操作任务,或者试验使用新的API。它也适合于创建强大的小型或者中型应用程序,能够充分利用Java库和组件。除此之外,另一个重要用法是在Java或者Java EE应用程序中嵌入Groovy,实现Java和Groovy的集成。这样做有助于编写和集中处理经常变化的业务逻辑,或者给应用程序架构提供可编程的配置管理能力。
  尽管前两种用法很常见,但是我认为嵌入式应用是最吸引人的,也是最有前途的。现在,开发者始终使用模板引擎来定制和重构我们的视图,或者使用业务逻辑引擎来实现逻辑的外部化和集中化。对于一般的语言来说,除了有限的函数集外,程序员通常很难获得更多的开发支持。幸运的是,宿主于平台的脚本语言,比如Groovy语言,有助于解决这种功能需求障碍。Groovy及其后代Grails(一个功能强大的模型-视图-控制器Web框架)的成功就很能说明这个问题。Sun公司也认可这种向应用程序添加动态性的替代方法,在Java 6中包含新的Java 规范请求(Specification Request):javax.script.* API能够把任何脚本或者动态语言无缝地嵌入到具有一致的编程API的Java应用程序中。
  脚本语言的发展已经达到一定的成熟度,能够突破标准化主流平台的限制。当集成这些语言和平台时,你将会很快得到意想不到的欣喜。
  Ken Barclay和John Savage都是值得尊敬的讲师,完全有资格向有经验的开发者和开发新手讲解Groovy。他们以清晰有序的方式介绍如何使用Groovy增加Java平台的魅力,以及如何充分利用Groovy的新功能。本书浅显易懂,即使开发新手也能使用,内容全面详尽,涉及Groovy语言的方方面面。
  本书的组织结构是:前面几章着重介绍Groovy语言的基本知识,后面的章节分门别类讨论与该语言相关的高级概念。除此之外,本书还提供很多内容丰富的附录,让读者可以了解相关主题的更详细信息。
  本书每章的篇幅较小,易于选择性阅读;每章提供大量完整的代码范例、练习和解决方案。为尽可能清晰地展示如何使用Groovy语言,本书提供一个学习案例,随着每章的学习进度,这个学习案例逐渐演化,功能越来越复杂和完善。除此之外,增量开发和单元测试也是本书的一个重要主题,这是为了支持Groovy的动态特性。本书作者也认为Groovy是一种多模式语言。
  作者基于多年的行业开发经验,认为Groovy语言适合作为学校语言课程,也适合作为有经验开发者的常备开发工具。
  衷心希望你通过阅读本书能够很好地掌握Groovy,相信你不会感到遗憾的!

  Guillaume Laforge
  Groovy Project Manager
  JSR-241 Specification Lead

作者简介

Kenneth Barclay;John Savage:Kenneth Barclay;John Savage: Kenneth Barclay和John Savage都是Napier大学计算机学院(Edinburgh, Scotland)的教师。他们的专长是面向对象软件工程开发和编程。他们是《Object-Oriented Design with UML and Java》 (Butterworth-Heinemann, 2003)一书的合著者。

译者简介

龚波 张平 陈蓓 王琦:暂无简介

图书目录

序言
前言
第1章  Groovy 1
1.1  为什么使用脚本语言 1
1.2  为什么使用Groovy 2
第2章  数值和表达式 3
2.1  数值 3
2.2  表达式 3
2.3  运算符优先级 5
2.4  赋值 5
2.5  自增和自减运算符 6
2.6  对象引用 6
2.7  关系运算符和等于运算符 7
2.8  习题 8
第3章  字符串和正则表达式 10
3.1  字符串字面值 10
3.2  字符串索引和索引段 10
3.3  基本操作 11
3.4  字符串方法 11
3.5  比较字符串 14
3.6  正则表达式 15
3.7  习题 16
第4章  列表、映射和范围 18
4.1  列表 18
4.2  列表方法 19
4.3  映射 21
4.4  映射方法 22
4.5  范围 23
4.6  习题 24
第5章  基本输入输出 26
5.1  基本输出 26
5.2  格式化输出 27
5.3  基本输入 28
5.4  习题 30
第6章  学习案例:图书馆应用
程序(建模) 31
6.1  迭代1:需求规范和列表实现 31
6.2  迭代2:映射实现 32
6.3  习题 34
第7章  方法 35
7.1  方法 35
7.2  方法参数 37
7.3  默认参数 37
7.4  方法返回值 38
7.5  参数传递 39
7.6  作用域 40
7.7  集合作为参数和返回值 42
7.8  习题 42
第8章  流程控制 44
8.1  while语句 44
8.2  for语句 46
8.3  if语句 47
8.4  switch语句 49
8.5  break语句 53
8.6  continue语句 53
8.7  习题 54
第9章  闭包 57
9.1  闭包 57
9.2  闭包、集合和字符串 60
9.3  闭包的其他特性 65
9.4  习题 68
第10章  文件 71
10.1  命令行参数 71
10.2  File类 71
10.3  习题 77
第11章  学习案例:图书馆应用程序(方法、闭包) 79
11.1  迭代1:需求规范和映射实现 79
11.2  迭代2:基于文本的用户交互界面的实现 83
11.3  迭代3:使用闭包实现 85
11.4  习题 88
第12章  类 89
12.1  类 89
12.2  复合方法 95
12.3  习题 97
第13章  学习案例:图书馆应用
程序(对象) 99
13.1  需求规范 99
13.2  迭代1:最初的模型 99
13.3  迭代2:模型完善 101
13.4  迭代3:用户界面 106
13.5  习题 111
第14章  继承 113
14.1  继承 113
14.2  继承方法 115
14.3  方法重定义 117
14.4  多态性 117
14.5  抽象类 120
14.6  接口类 123
14.7  习题 126
第15章  单元测试(JUNIT) 130
15.1  单元测试 130
15.2  GroovyTestCase类和JUnit
TestCase类 131
15.3  GroovyTestSuite类和JUnit
TestSuite类 136
15.4  单元测试的角色 138
15.5  习题 141
第16章  学习案例:图书馆应用
程序(继承) 142
16.1  需求规范 142
16.2  迭代1:多态性 143
16.3  迭代2:功能性需求演示 145
16.4  迭代3:提供用户反馈 149
16.5  迭代4:强制性约束 157
16.6  习题 160
第17章  持久性 162
17.1  简单查询 162
17.2  关系 164
17.3  更新数据库 165
17.4  表的对象 170
17.5  继承 172
17.6  Spring框架 173
17.7  习题 176
第18章  学习案例:图书馆应用程序
(持久性) 177
18.1  迭代1:域模型的持久化 177
18.2  迭代2:持久性的影响 186
18.3  习题 192
第19章  XML构造器和解析器 193
19.1  Groovy标记 193
19.2  MarkupBuilder 194
19.3  XML解析 196
19.4  习题 207
第20章  GUI构造器 208
20.1  SwingBuilder 208
20.2  列表框和表格 215
20.3  Box类和BoxLayout类 220
20.4  习题 221
第21章  模板引擎 224
21.1  字符串 224
21.2  模板 224
21.3  习题 228
第22章  学习案例:图书馆应用
程序(GUI) 229
22.1  迭代1:GUI原型 229
22.2  迭代2:处理器的实现 231
22.3  习题 238
第23章  服务器端编程 239
23.1  Servlets 239
23.2  Groovlets 240
23.3  GSP页面 245
23.4  习题 249
第24章  学习案例:图书馆应用
程序(WEB) 250
24.1  迭代1:Web实现 250
24.2  习题 253
第25章  后记 254
附录A  软件发布 255
A.1  Java开发工具 255
A.2  Groovy开发工具 255
A.3  ANT 255
A.4  Derby/Cloudscape数据库 256
A.5  Spring框架 256
A.6  Tomcat服务器 256
A.7  Eclipse IDE 256
A.8  本书源文件 256
附录B  Groovy简介 258
B.1  简洁和优雅 258
B.2  方法 259
B.3  列表 260
B.4  类 260
B.5  多态性 261
B.6  闭包 262
B.7  异常 263
附录C  关于数值和表达式的更多信息 264
C.1  类 264
C.2  表达式 264
C.3  运算符结合性 264
C.4  定义变量 265
C.5  复合赋值运算符 266
C.6  逻辑运算符 266
C.7  条件运算符 267
C.8  数字字面值的分类 268
C.9  转换 268
C.10  静态类型 269
C.11  测试 270
附录D  关于字符串和正则表达式的
更多信息 272
D.1  正则表达式 272
D.2  单字符匹配 273
D.3  匹配开始部分 273
D.4  匹配结尾部分 273
D.5  匹配零次或者多次 273
D.6  匹配一次或者多次 273
D.7  匹配零次或者一次 274
D.8  次数匹配 274
D.9  字符类型 274
D.10  选择 275
D.11  辅助符号 275
D.12  组合 276
附录E  关于列表、映射和范围的
更多信息 278
E.1  类 278
E.2  列表 279
E.3  范围 279
E.4  展开操作符 280
E.5  测试 280
附录F  关于基本输入输出的更多信息 283
F.1  格式化输出 283
F.2  类Console 285
附录G  关于方法的更多信息 287
G.1  递归方法 287
G.2  静态类型 289
G.3  实参协议 290
G.4  方法重载 290
G.5  默认参数值的不确定性 291
G.6  参数和返回值类型为集合的方法 292
附录H  关于闭包的更多信息 295
H.1  闭包和不明确性 295
H.2  闭包和方法 295
H.3  默认参数 296
H.4  闭包和作用域 296
H.5  递归闭包 297
H.6  状态类型 297
H.7  有关实参的约定 298
H.8  闭包、集合和范围 298
H.9  Return语句 299
H.10  测试 300
附录I  关于类的更多信息 303
I.1  属性和可见性 303
I.2  对象导航 307
I.3  静态成员 310
I.4  操作符重载 312
I.5  调用方法 313
I.6  习题 315
附录J  高级闭包 316
J.1  简单闭包 316
J.2  部分应用 318
J.3  组合 319
J.4  计算模式 320
J.5  业务规则 322
J.6  打包 324
J.7  列表简化 330
J.8  习题 332
附录K  关于构造器的更多信息 334
K.1  AntBuilder 334
K.2  专用的构造器 341
附录L  关于GUI构造器的更多信息 345
L.1  菜单和工具条 345
L.2  对话框 350

教学资源推荐
作者: 苏俊
作者: [美] 凯·霍斯特曼(Cay Horstmann) 著
作者: [美] 凯·霍斯特曼(Cay Horstmann) 兰斯·尼塞斯(Rance Necaise) 著
参考读物推荐
作者: 陈丹丹 李银龙 等编著
作者: 兰小伟 著
作者: 陈宇姣,徐卉