Programming Groovy
Subtitle: Dynamic Productivity for the Java Developer
Publisher: Pragmatic Bookshelf
Published: 2008
Language: eng
Format: Paperback
Number of pages: 200
ISBN-13: 9781934356098
Subjects: General Theory of Computing; Computers; Computers - Languages / Programming; Computer Books: Languages; Internet - World Wide Web; Programming - General; Programming Languages - Java; Computers / Languages / Programming; Computers / Programming / General; Computers / Programming Languages / Java; Computers/Internet - World Wide Web; groovy, DSL, dynamic language, ruby, java, jvm, jdk, programming, programming language, unit testing, XML, metaprogramming
Table of contents: title: Foreword
pagenum: xvii; label: 1
title: Introduction
pagenum: 1; label: 1.1
title: Why Dynamic Languages?
pagenum: 1; label: 1.2
title: What's Groovy?
pagenum: 4; label: 1.3
title: Why Groovy?
pagenum: 5; label: 1.4
title: What's in This Book?
pagenum: 8; label: 1.5
title: Who Is This Book For?
pagenum: 11; label: 1.6
title: Acknowledgements
pagenum: 11; label: I
title: Beginning Groovy
pagenum: 15; label: 2
title: Getting Started
pagenum: 17; label: 2.1
title: getting Groovy
pagenum: 17; label: 2.2
title: Installing Groovy
pagenum: 18; label: 2.3
title: Test-Drive Using groovysh
pagenum: 19; label: 2.4
title: Using groovyConsolr
pagenum: 20; label: 2.5
title: Running Groovy on the Command Line
pagenum: 21; label: 2.6
title: Using an IDE
pagenum: 22; label: 3
title: Groovy for the Java Eyes
pagenum: 25; label: 3.1
title: From Java to Groovy
pagenum: 25; label: 3.2
title: Optional Parameters
pagenum: 38; label: 3.3
title: Optional Parameters
pagenum: 38; label: 3.4
title: Implementing Interfaces 39; label: 3.5
title: Groovy boolean Evaluation
pagenum: 43; label: 3.6
title: Operator Overloading
pagenum: 44; label: 3.7
title: Support of Java 5 Language Features
pagenum: 47; label: 3.8
title: Gotchas
pagenum: 55; label: 4
title: Dynamic Typing
pagenum: 63; label: 4.1
title: Typing in Java
pagenum: 63; label: 4.2
title: Dynamic Typing
pagenum: 66; label: 4.3
title: Dynamic Typing != Weak Typing
pagenum: 67; label: 4.4
title: Design by Capability
pagenum: 68; label: 4.5
title: Optional Typing
pagenum: 74; label: 4.6
title: Types in Groovy
pagenum: 74; label: 4.7
title: Multimethods
pagenum: 75; label: 4.8
title: Dynamic: To Be or Not to Be?
pagenum: 79; label: 5
title: Using Closures
pagenum: 81; label: 5.1
title: Closures
pagenum: 81; label: 5.2
title: Use of Closures
pagenum: 85; label: 5.3
title: Working with Closures
pagenum: 87; label: 5.4
title: Closure and Resource Cleanup
pagenum: 87; label: 5.5
title: Closures and Coroutines
pagenum: 90; label: 5.6
title: Curried Closure
pagenum: 91; label: 5.7
title: Dynamic Closures
pagenum: 94; label: 5.8
title: Closure Delegation
pagenum: 96; label: 5.9
title: Using Closures
pagenum: 99; label: 6
title: Working with Strings
pagenum: 101; label: 6.1
title: Literals and Expressions
pagenum: 101; label: 6.2
title: GString Lazy Evaluation Problem
pagenum: 104; label: 6.3
title: Multiline String
pagenum: 108; label: 6.4
title: String Convenience Methods
pagenum: 110; label: 6.5
title: Regular Expressions
pagenum: 111; label: 7
title: Working with Collections
pagenum: 115; label: 7.1
title: Using List
pagenum: 115; label: 7.2
title: Iterating Over an ArrayList
pagenum: 117; label: 7.3
title: Finder Methods
pagenum: 120; label: 7.4
title: collections' Convenience Methods
pagenum: 121; label: 7.5
title: Using Map
pagenum: 124; label: 7.6
title: Iterating Over Map
pagenum: 126; label: 7.7
title: Map Convenience Methods
pagenum: 128; label: II
title: Using Groovy
pagenum: 131; label: 8
title: Exploring the GDK
pagenum: 133; label: 8.1
title: Object Extensions
pagenum: 133; label: 8.2
title: Other Extensions
pagenum: 139; label: 9
title: Working with XML
pagenum: 147; label: 9.1
title: Parsing XML
pagenum: 147; label: 9.2
title: Creating XML
pagenum: 152; label: 10
title: Working with Databases
pagenum: 157; label: 10.1
title: Connecting to a Database
pagenum: 158; label: 10.2
title: Database Select
pagenum: 159; label: 10.3
title: Transforming Data to XML
pagenum: 160; label: 10.4
title: Using DataSet
pagenum: 161; label: 10.5
title: Inserting and Updating
pagenum: 162; label: 10.6
title: Accessing Microsoft Excel
pagenum: 162; label: 11
title: Working with Scripts and Classes
pagenum: 165; label: 11.1
title: The Melting Pot of Java and Groovy
pagenum: 165; label: 11.2
title: Running Groovy
pagenum: 166; label: 11.3
title: Using Groovy Classes from Groovy
pagenum: 167; label: 11.4
title: Using Groovy Classes from Java
pagenum: 168; label: 11.5
title: Using Java Classes from Groovy
pagenum: 169; label: 11.6
title: Using Groovy Scripts from Groovy
pagenum: 171; label: 11.7
title: Using Groovy Scripts from Java
pagenum: 173; label: 11.8
title: Ease of Integration
pagenum: 175; label: III
title: MOPping Groovy
pagenum: 177; label: 12
title: Exploring Meta-Object Protocol (MOP)
pagenum: 179; label: 12.1
title: Groovy Object
pagenum: 180; label: 12.2
title: Querying Methods and Properties
pagenum: 185; label: 12.3
title: Dynamically Accessing Objects
pagenum: 187; label: 13
title: Intercepting Methods Using MOP
pagenum: 189; label: 13.1
title: Intercepting Methods Using GroovyInterceptable
pagenum: 189; label: 13.2
title: Intercepting Methods Using MetaClass
pagenum: 192; label: 14
title: MOP Method Injection and Synthesis
pagenum: 197; label: 14.1
title: Injecting Methods Using Categories
pagenum: 198; label: 14.2
title: Injecting Methods Using ExpandoMetaClass
pagenum: 203; label: 14.3
title: Injecting Methods into Specific Instances
pagenum: 207; label: 14.4
title: Method Synthesis Using methodMissing
pagenum: 209; label: 14.5
title: Method Synthesis Using ExpandoMetaClass
pagenum: 214; label: 14.6
title: Synthesizing Methods for Specific Instances
pagenum: 217; label: 15
title: MOPping Up
pagenum: 219; label: 15.1
title: Creating Dynamic Classes with Expando
pagenum: 219; label: 15.2
title: Method Delegation: Putting It All Together
pagenum: 222; label: 15.3
title: Review of MOP Techniques
pagenum: 226; label: 16
title: Unit Testing and Mocking
pagenum: 229; label: 16.1
title: Code in This Book and Automated Unit Tests
pagenum: 229; label: 16.2
title: Unit testing Java and Groovy Code
pagenum: 231; label: 16.3
title: Testing for Exceptions
pagenum: 235; label: 16.4
title: Mocking
pagenum: 236; label: 16.5
title: Mocking by Overriding
pagenum: 239; label: 16.6
title: Mocking Using Categories
pagenum: 243; label: 16.7
title: Mocking Using expandoMetaClass
pagenum: 244; label: 16.8
title: Mocking Using Expando
pagenum: 246; label: 16.9
title: Mocking Using Map
pagenum: 248; label: 16.10
title: Mocking Using the Groovy Mock Library
pagenum: 249; label: 17
title: Groovy Builders
pagenum: 255; label: 17.1
title: Building XML
pagenum: 255; label: 17.2
title: Building Swing
pagenum: 259; label: 17.3
title: Custom Builder Suing Metaprogramming
pagenum: 260; label: 17.4
title: Using BuilderSupport
pagenum: 263; label: 17.5
title: Using FactoryBuilderSupport
pagenum: 267; label: 18
title: Creating DSLs in Groovy
pagenum: 273; label: 18.1
title: Context
pagenum: 273; label: 18.2
title: Fluency
pagenum: 275; label: 18.3
title: Types of DSLs
pagenum: 276; label: 18.4
title: Designing Internal DSLs
pagenum: 277; label: 18.5
title: Groovy and DSLs
pagenum: 277; label: 18.6
title: Closures and DSLs
pagenum: 278; label: 18.7
title: Method Interception and DSLs
pagenum: 279; label: 18.8
title: The Parentheses Limitation and a Workaround
pagenum: 281; label: 18.9
title: Categories and DSLs
pagenum: 282; label: 18.10
title: ExpandoMetaClass and DSLs
pagenum: 285; label: A
title: Web Resources
pagenum: 287; label: B
title: Bibliography
pagenum: 293; title: Index
pagenum: 295