1. Smokejumping Grails
Robert Fischer, Smokejumper Consulting
robert . fischer @ SmokejumperIT . com
Presented Nov 17th, 2008
at the Triangle Java User Group (TriJUG)
Tuesday, November 18, 2008 1
6. Technical Blogger
EnfranchisedMind.com
• The Joy of BDD, or, Re-writing Your Code in
Mocks and Asserts is Not Unit Testing
• Functional (Meta)?Programming Stunts for Ruby
and Groovy (and a Little Perl)
• 7 Actually Useful Things You Didn’t Know Static
Typing Could Do: An Introduction for the
Dynamic Language Enthusiast
• A Defense of Prototypes, or, Why Does Tom
Christiansen Hate Perl?
Tuesday, November 18, 2008 6
7. Groovy/Grails Fanboy
• Introduced to Groovy/Grails at Carol.com,
Active in Groovy Users of Minnesota
• Uses Grails as freelancer to quickly develop
prototype applications
• Regular on IRC: FreeNode #groovy, #grails
• Active on Groovy and Grails mailing lists
• Autobase and BackgroundThread plugin
Tuesday, November 18, 2008 7
8. All Web App
Development Should
Be Grails
Tuesday, November 18, 2008 8
9. No, Really.
• Stunningly simple development.
• Succinct code using a superset of Java.
• Sane defaults, straightforward configuration.
• Static typing as deemed useful by developer.
• Standard deployment approach.
• SpringSource backed and here to stay.
Tuesday, November 18, 2008 9
10. What Is Grails?
• Web application development framework/
environment leveraging Java and Groovy.
• Convention-based MVC development with
a set of powerful command-line tools.
• Powered by pre-configured and pre-
integrated Spring, Hibernate, SiteMesh, and
JUnit.
Tuesday, November 18, 2008 10
11. How Would You
Like Your Grails?
• Conceptually thin dynamic MVC framework
• Dynamic, succinct domain and controllers
• Run from source code check-out
• Mash-up with extensible plugin architecture
• Actually approachable best-of-breed Java stack
• Prepackaged Java environment and build system
• Builds a WAR to plug into existing deployments
• Hooks for existing Spring and Hibernate config
Tuesday, November 18, 2008 11
12. Grails Before
Your Very Eyes!
Live Coding!
Tuesday, November 18, 2008 12
14. Autobase
• Manages database state using a non-linear
collection of database change sets.
• Leverages existing Grails database
automation to minimize effort.
• Provides a Liquibase-based embedded DSL
for database migrations.
• http://github.com/RobertFischer/autobase/
wikis/
Tuesday, November 18, 2008 14
15. Example Migration
changeSet(id:'rename_bar_to_baz', author:'Robert')
{
dropColumn(tableName:'foo', columnName:'baz')
renameColumn(tableName:quot;fooquot;,
oldColumnName:quot;barquot;,
newColumnName:quot;bazquot;)
}
Tuesday, November 18, 2008 15
16. Background Thread
• Provides a Spring bean that will execute
arbitrary closures in the background.
• Handles some awkwardness around
Hibernate sessions, and provides thread
pooling and logging.
• http://grails.org/BackgroundThread+Plugin
Tuesday, November 18, 2008 16
18. But What About
JRuby on Rails?
Tuesday, November 18, 2008 18
19. My JRuby on Rails
Street Cred
• Work history in Rails,
including last 5 months
on a JRuby on Rails
project
• Regular attendee,
competition member,
and one-time presenter
at Ruby Users of
Minnesota (RUM)
• Charlie “Headius”
Nutter fan
Tuesday, November 18, 2008 19
20. Why Not
JRuby on Rails?
• Although Java-in-Ruby is fairly slick, Ruby-in-Java is pretty
rough and best mediated via Groovy metaprogramming
• GORM is superior to ActiveRecord
• http://www.oreillynet.com/ruby/blog/2007/05/
bind_parameters_now.html
• GSPs are superior to ActionView
• Spring is superior to nothing
• Optional static typing is superior to pure dynamic typing
• You can code Grails without grokking its source
• Nobody is fired for choosing Java
Tuesday, November 18, 2008 20
21. The One Circumstance
I Would Still Use Rails
• Small CRUD-based app with its own DB
• No or very generous performance limits
• Owned by one or two developers
• Expected life cycle of less than a year
• Deployed system is without Java or is an
Apache web server with mod_passenger
and without mod_proxy or mod_jk
Tuesday, November 18, 2008 21
22. Your Grails
Adoption Plan
• Best approach: start with a roughly green-
field proof-of-concept web application
• Use GRAG on SourceForge to generate a
database front-end to impress your boss
• Wrap an existing Java web application in
Grails and use web.xml (installed via “grails
install-templates”) to map urls to servlets
Tuesday, November 18, 2008 22
23. Resources
• Home Pages:
http://grails.org
http://groovy.codehaus.org/
• Live Open Source Applications
Grails Crowd
Grails.org
Groovy Blogs
• Media
Groovy & Grails Podcast
GroovyMag
Tuesday, November 18, 2008 23
25. Sold?
Want to know more?
• Robert is offering “Introduction to Groovy,
Grails, and AJAX” training in the Triangle on
December 15th through 18th. Additional
training courses will be offered next year.
• Subscribe to “Smokejumper Training”
Google Group for more information.
• On-demand training, technical leadership,
and mentoring services are also available.
http://SmokejumperIT.com
Tuesday, November 18, 2008 25