www.jetbrains.com Groovy for Java experts Václav Pech Software Developer and Product Evangelist JetBrains, Inc.
www.jetbrains.com
Groovy for Java experts
Václav PechSoftware Developer and Product Evangelist
JetBrains, Inc.
2www.jetbrains.com
Properties
3www.jetbrains.com
Closures
4www.jetbrains.com
Closures – implicit parameter
5www.jetbrains.com
Iterations
6www.jetbrains.com
GDK = JDK + FUN• java.util.Collection
– each(), find(), join(), min(), max() …
• java.lang.Object– any(), every(), print(), invokeMethod(), …
• java.lang.Number– plus(), minus(), power(), upto(), times(), …
• …
7www.jetbrains.com
Some operators
• [‘Java’, ‘Groovy’]*.toUpperCase()
• customer?.shippingAddress?.street
• return user.locale ?: defaultLocale
8www.jetbrains.com
Syntax enhancements• Dynamic (duck) typing – optional!• GDK• Syntax enhancements
– Properties– Closures– Named parameters – Collections and maps– Operator overloading– …
9www.jetbrains.com
Enjoy writing tests• For both Java and Groovy• Run with Ant, Maven, IDE, …• Integrated JUnit support
• assert…(), shouldFail(), …• Relaxed typing• Easy mocking
10www.jetbrains.com
Big Boy Toys• Scripting
• Builders
• Domain Specific Languages
• Meta-programming
11www.jetbrains.com
Scripting• Evaluate custom Groovy code
At run-time!!!
12www.jetbrains.com
Builders• Construct hierarchies
13www.jetbrains.com
Builders - GAnt
14www.jetbrains.com
Builders – Spring config
15www.jetbrains.com
Categories
16www.jetbrains.com
DSL• Limited purpose language• Targeted to a particular domain• Friendlier API to a framework
– External• SQL, HTML, CSS, …
– Internal
17www.jetbrains.com
DSL – Date manipulation
18www.jetbrains.com
DSL – Hibernate criteria
19www.jetbrains.com
DSL – Account manipulation
20www.jetbrains.com
Dynamic method invocation
GroovyObjectinvokeMethod()getProperty()setProperty()
methodMissing()propertyMissing()
MetaClass
invokeMethod()
propertiesmethods
21www.jetbrains.com
SummaryGroovy
Powerful Java extension
Tests, Builders, Scripting, DSLs
– Contact me: [email protected]
22www.jetbrains.com
Questions