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.