Monday, January 28, 2008

Ruby, Rails, Groovy, Grails, What's a programmer to do?

I'm doing some prototyping on a possible project for a client and have been getting my feet wet with the Grails Framework. I feel like know my way around Rails fairly well as I've done a few different small web applications in the framework and although there was a learning curve and Rails does have it warts, overall Rails really has saved me a TON of time and made me write better and well tested code.
For this project with my client, I'll be leaving it in their possession and feel that selling them on Groovy and Grails was a slightly easier sale as they already are a 100% Java shop. I think making the switch to writing Groovy, using their existing IDE (IntelliJ) and deployment in a J2EE container, would make them a little more comfortable than having to learn Rails. The JRuby guys are doing awesome work and if it was entirely up to me, I'd take the Rails route and consider using JRuby for production deployment if needed. But, getting them even to consider another framework was enough of a strain and if I told them I was leaving them an application in Ruby, I think I would most likely have been shown the door.

So, alas, I walk the Grails line. I must admit, it has been an interesting experience so far and one that I'd like to write more about in a future posting. I did however come across this blog posting in my research and have found it sums up very well some of the feelings I have for the whole Grails / Rails debate I see ensuing. I'd highly suggest reading the article.

Overall, I think each has it's place. I would agree that with Grails I find myself spending more time learning the framework because of poor or outdated documentation, and picking p Groovy the language relatively quickly. Where with Rails, I find myself learning the framework quickly, but taking more time to learn Ruby. It might however have to do with the fact that I learned Rails first and in some ways have to break my mind of some of the differences between what I learned in Rails and how it's done in Grails.

Regardless of which side you land on, I think it's worth your time to atleast investigate and learn about these frameworks as these are going to become more and more popular methods in developing applications as time marches on.


Anonymous said...

I find it interesting that I spent over three years working with Java, but in reading about Groovy, clearly my exposure to Java wouldn't benefit me all that much. My corporate work environment was so closed and behind, that the beneficial Java technologies never reached me.

So now I'm all Ruby. I do think the framework research is worthwhile. I 'm starting to think I should be looking at Ramaze and Merb in order to grasp when lighter-weight solutions would be appropriate.

Localtone, LLC said...

Hey Barry,
Thanks for the comments!
Agreed on looking at other frameworks. I don't know about Ramaze, bit I have looked at Merb for a web service I'm planning to implement. It doesn't seem too much different, and pretty much tries to strip down the idea of MVC to the barebones.
It's tough though to consider other options when Rails does a pretty decent job and although it has it's warts, it's tough to climb a learning curve, without really knowing if learning another framework is going to be beneficial. Plus, I've found when I looked at Merb that in most cases, I ended up wanting to install most of the stuff the Rails already comes with, so it was just extra time to get something lightweight like Merb and then start adding a number of plugins.
Merb is supposed to have some performance improvements though.

Brian LeGros said...

I'm glad you enjoyed the post. We spent quite a bit of time putting the PoC's together, so I hope our perspective was able to help some. I'm about half way through implementing our JRuby on Rails solution and it is going well so it looks like the productivity we saw in the initial PoC is holding true. I still hold a flame for Groovy and Grails, so my work there definitely isn't over. Thanks for the link and best of luck in your journey with all of the languages and frameworks.