2. Groovy
• is an agile and dynamic language for JVM
• Features inspired from Python, Ruby …
• Seamless integration with all existing
Java classes and libraries.
• Groovysh and GroovyConsole
• Can run on .Net 2.0 using IKVM
• Latest version 1.5
• http://groovy.codehaus.org
3. Features
• Closures
• Dynamic Methods
• List & Maps
• Better XML/Swing Capabilities
4. Closure
• Statements enclosed within curly braces
“{}“
• Can be passed around like variables
• Return value either using return
keyword or the value of last executed
statement.
5. Closure (Contd)
square = { it * it }
square (4)
Output = 16
“it” implicit parameter representing the
passed value.
6. Closure (Contd)
square {
it * it
return 3
}
square (4)
Output = 3 (Since there is an explicit
return statement!)
8. Factorial using closures
fact = 1 fact = 1
for (i in 2..5) { (2..5).each {
number ->
fact *= i
fact *= number
} }
print fact print fact
// (2..5) = Range
9. Factorial again!
fact = 1
2.upto(5) { num ->
fact *= num
}
print fact
// Numbers are treated as object.
• upto method generates all number objects
• To each object, the closure gets passed
around!
11. Dynamic methods
class webcamp {
def haveTea() {
println quot;Time for teaquot;
}
}
camp = new webcamp()
camp.haveTea()
12. Dynamic methods (Contd)
• Add a new method “haveSamosa”
class webcamp {
def haveTea() {
println quot;Time for tea“
}
}
camp = new webcamp()
camp.haveTea()
webcamp.metaClass.haveSamosa = { ->
println quot;Have Samosa alsoquot;
}
camp = new webcamp() // Create a fresh object since the class has
changed!
camp.haveSamosa()
13. Lists and Maps
• Like python
List = [2,3,4]
Map = [„a‟ : 2, „b‟ : new Date()]
14. Grails
• Web Framework inspired by RoR
• Latest version is 1.0.1.
– The one in the DVD is 1.0 and doesn‟t run cleanly in
windows!
• Grails = Spring MVC 2.5.1 + Hibernate 3 +
SiteMesh 2.3
• Newbie‟s are unaware that Grails is full and full
Spring!
• Provides several commands to auto generate
code.
• Comes bundled with HSQLDB.
15. Create your first app
• Set environmental variables
GRAILS_HOME and PATH
• grails create-app firstapp
16. Directory Structure
Controllers
Domain
Views
Sources
Test cases
J2EE Web Appln.
21. Features (Contd)
• Flash scope - Data will be stored as
name-value pairs for current request
and the next request.
• Create custom tags just by creating a
new file in grails-
app/taglib/<name>TagLib.groovy
22. Features (Contd)
• AJAX Support
– Supports prototype, YUI, DOJO
– Use render method in your groovy code to
render text, HTML, JSON or OpenRico
Response XMLs
• Plays nicely with flex
– Simply add this
static expose = [“flex-remoting”]
– Automatic flex based CRUD generation and
Domain class to AS3 compilation coming up!
23. Features (Contd)
• Plays nicely with EJB
– http://www.infoq.com/articles/grails-ejb-
tutorial
• Has lots of plugins already!
– grails install-plugin <name>
– grails create-plugin <name>
24. Scalability
• Thanks to Spring and Hibernate, Grails
is highly scalable and already enterprise
ready!
25. RoR Competition?
• No.
– Instead going to compete with Java based
frameworks like struts 2, JSF, Seam.
26. Should I learn?
• If you are a Java guy, then yes.
• Companies like Oracle have already
started showing full support!