I'm digging Groovy and Grails - No Fluff Just Stuff

I'm digging Groovy and Grails

Posted by: Craig Walls on November 27, 2006

A month ago, if you would've told me that I was soon to become a raving Groovy and Grails fanatic, I would've told you that you were crazy. I've had a passing interest in Groovy for awhile, but not enough to really get excited. As for Grails...well...I just lumped it in along with Trails, Sails, and all of the other Rails wannabe frameworks.

But then I sat in on Venkat's Groovy and Grails talks at the LoneStar Software Symposium. In short, I was blown away!

The first thing I learned was that Groovy had matured quite a bit and is likely to reach 1.0 status in the very near future. This is good news because it will help bring Groovy out of its current "toy" status and into the proverbial "real world". Also, Venkat was able to demonstrate some killer language features in Groovy that up until now have been reserved for the Ruby folks.

Then in his next section, Venkat covered Grails. I sat in as a skeptic, but walked out a believer. Grails isn't just a Rails-wannabe...it's the real deal! While Venkat was demonstrating Grails, I downloaded and installed Grails and followed along, building the same example on my laptop. I was very impressed at how very Rails-like it felt. It's not a perfect match to Rails, but it's darn close...close enough to make me like it.

When developing in Grails, you can run your application within the built-in Jetty server. In many ways, this is much like running a Rails app in the built-in WebBrick server. Once you're done, Grails provides a command that creates a good old-fashioned WAR file, suitable for deployment in your favorite servlet container.

What's even more cool about Grails is that it has Spring and Hibernate under the covers. But you won't need to know that unless you want to wire dependencies into your controllers using some of Spring's dependency injection goodness or if you want to tweak the database mapping.

Speaking of database mapping, this is one place where Grails differs slightly from Rails. Where Rails uses ActiveRecord for domain object persistence, Grails uses GORM. Some folks I know are a bit put off (understandably so) by ActiveRecord which starts with a database schema and infers a domain model. GORM, on the other hand, takes the opposite approach, starting with domain objects and infers a database schema. Of course, if you don't like the inferred schema, it's Hibernate under the covers, so you're free to tweak the mapping to your heart's (or data architect's) content.

What's more, I also learned that Oracle has put their stamp of approval on Grails. Not that it matters much to me...but a big name like Oracle legitimizes Grails a bit more.

Finally, with a few Groovy and Grails books making their debut, now's a perfect time to plug in and learn some Groovy and Grails stuff.

You'll notice that I've added a "Groovy|Grails" category to my blog. This is the first and only blog entry under that category for now. But expect more stuff here as I dig into Groovy and Grails more.

Craig Walls

About Craig Walls

Craig Walls is a Principal Engineer, Java Champion, Alexa Champion, and the author of Spring AI in Action, Spring in Action, and Build Talking Apps. He's a zealous promoter of the Spring Framework, speaking frequently at local user groups and conferences and writing about Spring. When he's not slinging code, Craig is planning his next trip to Disney World or Disneyland and spending as much time as he can with his wife, two daughters, 1 bird and 2 dogs.

Why Attend the NFJS Tour?

  • » Cutting-Edge Technologies
  • » Agile Practices
  • » Peer Exchange

Current Topics:

  • Languages on the JVM: Scala, Groovy, Clojure
  • Enterprise Java
  • Core Java, Java 8
  • Agility
  • Testing: Geb, Spock, Easyb
  • REST
  • NoSQL: MongoDB, Cassandra
  • Hadoop
  • Spring 4
  • Cloud
  • Automation Tools: Gradle, Git, Jenkins, Sonar
  • HTML5, CSS3, AngularJS, jQuery, Usability
  • Mobile Apps - iPhone and Android
  • More...
Learn More »