Wednesday, 26 December 2007

I Tried Grails!

I finally tried Grails.  The Groovy based knock off of Ruby on Rails.  I had earlier started reading " JRuby on Rails : Web 2.0 Projects" but just felt that Ruby was too different from Java to get excited about.  I felt like Grails fit in much more seamlessly into the Java ecosystem than JRuby and I didn't feel like I was missing out on the neater features of JRuby.  More importantly, having trusty old Spring and Hibernate right there if I needed them was certainly reassuring. 

 I started out by first by reading "Getting Started With Grails".  After I completed this book I jumped in and wrote a variation of an application I wrote earlier in Tapestry 4 which is a simple application that asks a bunch of categorized yes/no questions and calculates the yes answers in each category and saves them to a database which is retrievable later.  IMHO, I felt doing the project in Tapestry 4 did not have any advantages for a small project like this.  Here's some metrics:

Tapestry 4 Java Code Lines : 575

Grails Code Lines: 255

Grails Code Lines Excluding Auto Generated Configs and tests: 86 (Wow!) 

Things you don't need to deal with in a basic Grails app that you do with Tapestry 4 :Ant build file, Hibernate Config, Tapestry Application Descriptor, Component Specification (jwc), any additional libs except for the database jar.

 I have to level some criticisms at Grails though.  First, it tends to give some strange error messages when the environment isn't configured just right or you do something wrong.  Also, I had some trouble figuring out where to put stuff if I wanted it to be on the classpath.   Lastly the IDE integration is weaker than pure Java so autocomplete was mostly a manual process not assisted by the IDE.  Being able to quickly re-load and see changes compensates for this.

One more note.  As a Java developer I am a little prejudiced against loosely typed languages but Grails alleviates my fears by allowing me to easily interface with regular Java components  via Spring.

 All in All, I think Grails is the next big thing in Java development.  I have completed major projects professionally in Tapestry, Struts, and JSF and I feel like Grails just blows them all out of the water right now, especially for smaller projects.  I am going to try to use Grails on a much larger project to see how it works in that context.  The backend of my larger project is all in Java/Spring and uses some pretty tricky Hibernate stuff but I think that Grails will be great as a quick and agile web tier framework.

Technorati Tags:

Posted by justin at 1:23 AM in Java Programming
« December »
SunMonTueWedThuFriSat
      1
2345678
9101112131415
16171819202122
23242526272829
3031