[Update: This was written in June of 07. I haven't been involved with Grails, or Rails, much since then, but I do know that the Grails people have been making some great improvements. Of course, the Rails people have been working hard too...]
Graeme Rocher just made a post entitled Grails vs Rails Myth #1: Grails has a fraction of what Rails has to offer
While I totally respect Graeme and the work he’s doing on Grails, after having written a project in it at work I have to say that� I think he’s not seeing the forest for the trees. In general I would agree that the component parts that make up Grails are significantly superior to those that make up Rails. Hibernate does kick ActiveRecord’s ass. Spring is incredibly flexible and powerful. But, Grails does, currently, have a fraction of what Rails has to offer. I think in about a year Grails will be pretty close.
The thing is that while Graeme has chosen some truly excellent libraries to built Grails on top of he’s missing the fact that people don’t use Rails because of the capabilities of it’s underlying libraries. In fact, I could care less if Rails uses ActiveRecord, Hibernate, or anything else because they aren’t what makes Rails special. Rails is special because it makes it incredibly easy to build web apps and it wraps the underlying services and extra features in such a way as to make them trivial to use. Grails just feels unfinished and rough compared to Rails. I think that in time Grails is going to be a truly awesome Rails competitor and when it’s made things as easy to do as Rails has, then the underpinnings will really start to be valuable.
But, as Grails stands, I personally feel you have to deal with too much cruft and jump through too many hoops to leverage the potential power. Let me give you a simple example with Hibernate. I wanted to do some custom mappings with one of my grails domain classes (a model for you Rails people), but I couldn’t because as far as I could tell it was an all or nothing proposition. Either you used the nice and easy GORM (Groovy Object Relational
Mapping) that came with Grails or you manually mapped everything. If I have to start doing everything manually then what benefit is Grails giving me? It felt like that in many places.
On the topic of languages:
I would be Ruby maniac right now if Ruby didn’t offer only a
fraction of what is available in Java. From the reams of web frameworks, to the
dozens of persistence engines, to distributed caches, enterprise integration
tools and testing frameworks. Java has it all. There is literally a library for
everything.
I think you’re conflating two issues Graeme. You should be a Ruby or Java maniac because of what they offer as languages NOT because of how many extra libraries there happen to be for them. That’s like being an artist and saying you’re not in love with using pencils because there are so many more ball point pens in the world. Yes it makes it� easier to find a tool to draw something with but it doesn’t mean the tool is better, more enjoyable to use, or produces a better result. Also, if you’re making your choice in language based on libraries you’re still using the wrong one because Perl kicks every language’s ass is that department.