AppFuse vs. Grails vs. Rails
In the comments of my Choosing a JVM Web Framework, Graeme Rocher writes:
no offense Matt, but I fear you are a grossly inappropriate person to be writing such a study given your past history of claiming frameworks like Grails are competitors to AppFuse. Any such study will come laced with doubts over its honesty and I'm sure this doesn't just apply to Grails.
In the post Graeme linked to, I said:
I think Grails and AppFuse are more likely competitors rather than compatible. Grails uses Spring, Spring MVC and Hibernate under-the-covers, whereas AppFuse uses the raw frameworks. Of course, it would be cool to allow different classes w/in AppFuse to be written in Groovy or JRuby. At this point, I think it's probably better for users to choose one or the other.
Since writing that post a year ago, I've changed my opinion about AppFuse being competitors with Grails or Rails. Why? Because they're different languages. I don't think you should choose a web development stack first. I think you should choose your language first. For those that choose raw Java, I think AppFuse provides a good solution. To be more explicit, here's a private conversation that David Whitehurst (author of The AppFuse Primer) and I exchanged.
David: Have you been looking at Ruby on Rails any? And, if so, I'm sure you're as impressed by those who command the language as I am. But, I think the J2EE web application is not dead yet. Do you think any comparison of the complexity of AppFuse vs. Rails should be mentioned in the book?
Matt: I'm highly aware of Rails, have attended talks and tutorials on it, even bought books about it - but I've never written an app, done a tutorial or used it in the real-world. I'm afraid of it. I'm almost certain I'd like it, and I'd likely like Grails as well. However, the reason I stick with pure Java is because that's where my clients' demand is and hence the consulting dollars for me.
It's probably also possible to create AppFuse for both Rails and Grails. I believe Rails' Streamlined in much like AppFuse. I like to think of AppFuse as language agnostic - it's always been designed to eliminate ramp up time. While Rails and Grails simplify the programming API and make it possible to develop code with less lines of code, it'd be nice to have user management, file upload and other things like AppFuse has. When I start using these frameworks, it's likely I'll develop some sort of features like AppFuse has and use them on projects. Of course, if they already have all the features of AppFuse via plugins, I wouldn't reinvent the wheel - I'm simply use what's already there and be happy about it.
I don't know if it's relevant to mention Rails, but it probably doesn't hurt. There's no reason to ignore the competition if they're indeed competition. I don't see them as competition, and I almost don't see Grails as competition either. AppFuse (in its current state) is for developers that've chosen to use the language and frameworks that AppFuse supports. It's not trying to solve everyone's problems - it's merely trying to simplify things for those using the frameworks it supports.
There's nothing saying that AppFuse can't have a Rails or Grails version in the future. For me, it'll happen if I start developing applications using these frameworks and see the integration needs like I saw with the Java frameworks. The good news is most of these frameworks have done the integration work, so it's really just a matter of creating features or using plugins.
David: I keep getting these "dream-squasher" friends of mine showing me Rails, Grails, and how wonderful Ruby is. It's impressive, but I'm not convinced that big business is ready to adopt it any time soon.
Matt: As a Java programmer, I think you'd be a fool to ignore Rails or Grails and not at least be familiar with them. There's no reason to discount technology until you've used it on a real-world project - at least 6 months or longer - IMO.
Just because you're productive in Ruby and like it - that doesn't make you a bad Java programmer.
I hope this clears up any confusion on how I feel towards Rails or Grails. I would welcome the opportunity to use them on a project. If I was starting a products-based company, I certainly would give them a shot in the prototyping phase. However, I'm a consultant that makes money from clients hiring me to explain/do what I know best. At the current time, that happens to be open source Java frameworks.
I do plan on learning a plethora of other frameworks, in other languages, I just haven't had the time yet. When I do, I hope that I can somehow become proficient enough to help companies adopt them as well. However, to build up that experience and expertise will likely take years. I think this is how lots of companies feel. Can you blame them for not "jumping ship" on their current skills and knowledge?
Of course, then you have the Relevance guys who seem to be doing exactly what I hope to be doing in several years from now. Not only do they specialize in Java and its frameworks, but they also do consulting and training around Rails, Grails and Ajax. I can't help but admire them tremendously.
Posted by Paul Barry on August 08, 2007 at 11:47 AM MDT #
Posted by Gavin Terrill on August 08, 2007 at 12:05 PM MDT #
Posted by Graeme Rocher on August 09, 2007 at 02:37 AM MDT #
Posted by Justin Gehtland on August 09, 2007 at 06:44 PM MDT #
Posted by Kenneth Lee on August 09, 2007 at 07:23 PM MDT #
As a developer at a company that has a high interest in developing lots of applications for various clients quickly and efficiently, I'm interested in RoR, however, I question its enterprise-readiness. Maybe I'm being naive, but when I think about the out-of-the box functionality in JEE, such as remoting, security, messaging, along with all the presentation layer frameworks out there, it's hard to think about abandoning such a vast toolset.
I've had the pleasure of working on a project using Apple's WebObjects recently. I'm surprised this framework isn't more popular. It has great code generation features and in terms of persistence, EOF requires very little coding - you don't even have to create entities. In fact, it makes Hibernate feel like it's more work.
Posted by Geoff Raeder on August 18, 2007 at 08:04 AM MDT #
Posted by Julian on August 29, 2007 at 04:16 AM MDT #
What I don't get is, well, if this is about lines of code and auto generated crud etc.. well you can encapsulate all the way up to makeBlogFromDB(). Why not use andromda, Appfuse auto generates as well.
What I want to know is, what does Matt think about Jboss Seam :)
Posted by Richard Corsale on August 31, 2007 at 11:53 AM MDT #
Posted by sparqle on September 04, 2007 at 11:34 AM MDT #
Posted by rodrigo on November 29, 2007 at 08:28 PM MST #
(Uses Spring & Hibernate & Dojo 7 DWR).
I had a look at code and liked what it generated.
And ther is Sculptor too.
Haven't ever been able to totally get my head around it though...
I've just read Groovy in Action and and definately going to be looking into Grails in more detail. The one thing where I think apps with a pure Java pedigree will still win is when you have a lot of heavy computation. Groovy is like Smalltalk. Everything is an object. Dierk and the guys wheo wrote Groovy in Action pointed out that currency based arithmetic was done in cents due to the poor performance of BigDecimal on their first big commercial app. That makes me a little weary, but I think Grails brings a lot to the table and from first impressions it looks a lot easier than AppFuse. (which I think is great too!).
Has anyone looked at Skyway Builder yet?
Keep seeing Google ads all the time on it..
Posted by Jeremy Flowers on January 07, 2009 at 01:19 PM MST #
I always wonder what people mean by "enterprise ready". Several high traffic websites out there are built with Rails, Twitter probably being the most popular one. Qype.com is Europe's largest local review website and runs almost completely on Rails (except for the search). XING uses Rails on the Web and app layers. Those are all massive websites with millions of page impressions each month.
There are countless plugins for Rails to extend its functionality and it still grows very quickly. Plus, testability on Rails (Ruby in fact) is lightyears ahead of any Java framework I used. A major downside for many devs may be the weak IDE support for Ruby and Rails (even though I use Eclipse extensively, Aptana/RadRails just didn't quite cut it for me), but this is likely to change soon.
Oh and, today you can certainly use other webservers than mongrel with Rails, such as lighttpd and Apache mod_rails.
Posted by Matthias on April 16, 2009 at 02:24 PM MDT #
Regarding whether Rails is "enterprise"...
I do consulting for Dow Jones and the Wall Street Journal and it's currently used in mutiple apps- both Ruby and JRuby. And this is definitely an "enterprise" environment with messaging, SOAP, heavy security layers, etc...
Posted by AnothaOpinion on June 24, 2009 at 02:51 PM MDT #