Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
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