Practical Groovy for Java experts

Practical Groovy
for Java experts
Václav Pech
Software Developer and Product Evangelist
JetBrains, Inc
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Outline
●
Part 1: Groovy Syntax
●
Part 2: Fun with Groovy
●
–
Scripting
–
Meta-programming
–
DSLs
BEWARE!: Highly addictive
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Properties
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Closures
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Closures – implicit parameter
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Iterations
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
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(), …
…
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Some operators
●
[‘Java’, ‘Groovy’]*.toUpperCase()
●
customer?.shippingAddress?.street
●
return user.locale?:defaultLocale
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Syntax enhancements
●
●
●
Dynamic (duck) typing – optional!
GDK
Syntax enhancements
–
–
–
–
–
–
Properties
Closures
Named parameters
Collections and maps
Operator overloading
…
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Enjoy writing tests
●
●
●
For both Java and Groovy
Run with Ant, Maven, IDE, …
Integrated JUnit support
●
●
●
assert…(), shouldFail(), …
Relaxed typing
Easy mocking
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Big Boy Toys
●
Scripting
●
Builders
●
Domain Specific Languages
●
Meta-programming
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Scripting
●
Evaluate custom Groovy code
At run-time!!!
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Builders
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Builders - GAnt
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Builders – Spring config
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Categories
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
DSL
●
●
●
Limited purpose language
Targeted to a particular domain
Friendlier API to a framework
–
External
●
–
SQL, HTML, CSS, …
Internal
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
DSL – Date manipulation
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
DSL – Hibernate criteria
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
DSL – Account manipulation
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Dynamic method invocation
GroovyObject
invokeMethod()
getProperty()
MetaClass
setProperty()
methods
properties
methodMissing()
propertyMissing()
invokeMethod()
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Summary
Groovy
Powerful Java extension
Tests, Builders, Scripting, DSLs
– Contact me: [email protected]
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009
Questions
?
Václav Pech - [email protected] – JetBrains
Javaday Roma III Edizione – 24 gennaio 2009