Professional Documents
Culture Documents
Guillaume Laforge
Head of Groovy Development
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Guillaume Laforge
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
2
• Groovy overview
– Features at a glance
– Groovlets
– Groovy templates
• Grails overview
– The Grails stack
– The App Engine plugin
• Summary
• Q&A
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
3
A few words about Groovy
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
4
Features at a glance
• Fully Object-Oriented
• Joint compiler: seamless Java integration
• Closures: reusable/assignable code blocks
• Properties: no more getters / setters
• Optional typing: you decide!
• Various shortcut notations: less verbose than Java
• Handy wrapper APIs
– Groovlets, XML, JDBC, JMX, template engine, Swing
UIs, collections...
• Strong ability for authoring Domain-Specific
Languages
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
5
A “normal” servlet
• import javax.servlet.http.*
• General idea
– use scripts over classes
– use Groovy’s markup builder to easily create HTML
• html.html {
head {
title "Hello"
}
body {
p "Hello Groovy World!"
}
}
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
7
Groovylets: Groovy servlets
• <servlet>
<servlet-name>GroovyServlet</servlet-name>
<servlet-class>
groovy.servlet.GroovyServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GroovyServlet</servlet-name>
<url-pattern>*.groovy</url-pattern>
</servlet-mapping>
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
8
Groovy templates
• import groovy.text.SimpleTemplateEngine
def text = '''Dear $firstname,
So nice to meet you in <% print city %>.
See you in ${month},
<%= signed %>'''
def binding = [firstname: "Guillaume", month: "June",
city: "San Francisco", signed: "Duke"]
def engine = new SimpleTemplateEngine()
template = engine.createTemplate(text)
.make(binding)
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
9
The Servlet template
• Similar to JSPs
– <html>
<body>
<p>${message}</p>
</body>
</html>
• In your web.xml
– <servlet>
<servlet-name>GroovyTemplateServlet</servlet-name>
<servlet-class>
groovy.servlet.TemplateServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GroovyTemplateServlet</servlet-name>
<url-pattern>*.gtpl</url-pattern>
</servlet-mapping>
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
10
F GAELYK
• A thin layer on top of:
– Groovlets & servlet template
– Google App Engine Java SDK APIs
• What it does
– Inject all the services in servlets and templates
– Adds syntax sugar and dynamic methods to the SDK API
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
11
• Groovy overview
– Features at a glance
– Groovlets
– Groovy templates
• Grails overview
– The Grails stack
– The App Engine plugin
• Summary
• Q&A
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
12
From 10,000 feet...
=
+ +
QuickTime™ and a
BMP decompressor
are needed to see this picture.
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
13 13
In a few bullet points...
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
14
The big picture
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
15
The standard project structure
M C
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
16
The App Engine plugin
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
17
Setting up your project
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
18
Deploying applications
• On first deployment
•$APPENGINE_HOME/appcfg.sh update ./target/war
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
19
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
20
• Groovy overview
– Features at a glance
– Groovlets
– Groovy templates
• Grails overview
– The Grails stack
– The App Engine plugin
• Summary
• Q&A
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
21
Summary
• Groovy
– Groovy is a first-class citizen on Google App Engine
– Lots of shorcut notations can streamline your code
– Groovy servlets and templates are great for crafting
small applications
– Gaelyk further simplifies this pure Groovy approach
• Grails
– Grails is the next-generation web development stack
– Developing Grails application on the Google cloud is
almost as lean and simple as for the usual crop of
application servers
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
22
Further information
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
23
• Groovy overview
– Features at a glance
– Groovlets
– Groovy templates
• Grails overview
– The Grails stack
– The App Engine plugin
• Summary
• Q&A
Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
24
Q&A
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
25