Matt Raible compares web frameworks, Spring MVC wins


News: Matt Raible compares web frameworks, Spring MVC wins

  1. Matt Raible posted a slideshow from his preso at Devoxx, comparing web frameworks. Spring MVC won, although GWT and Ruby on Rails were right there with it. He's a struts snob so it wasn't even considered, and struts 2 was only okay; he posted the actual ratings on google docs.

    Things that stand out from the spreadsheet:

    1. Each grading point was equal. Developer perception gets one point. Same for risk, same forpublished books, same for REST support, and all the opinions were subjective.
    2. Tapestry got a 13.5. Struts 2 got a 14.5. Grails got 16.5, and Wicket got 14.5. (GWT, Ruby, and Spring MVC all got 17.) I know I'm subjective too, but Tapestry would have gotten like a 3 based on the people I've talked to, and Wicket would have gotten a 24 or so, because its fanboys would have stuffed the ballot boxes like wolverines.

    The spreadsheet's not all there is. The presentation slideshow itself was pretty interesting.

    It suggested that high-traffic internet apps should use request-based frameworks, intranet apps should use component frameworks (GWT, Wicket), long-lived projects should go for the largest community, and legacy apps should use the legacy apps language. Giant leaps huh?

    The pros and cons were inconsistent.

    Spring MVC was okay - no instant reload (JRebel got a shoutout).

    GWT had a con of "you have to know Java," but isn't that true of Spring MVC too? Plus, it was labeled as "more like a jsp tag library than a web framework," which is pretty much wrong based on what I've seen of GWT.

    Rails didn't have a con of "have to know ruby."

    Wicket: "no jobs or developers." Maybe I know all fifteen of the wicket developers and they're all "enthusiastic." (Wonder what Andrew Lombardi thinks, he's been doing the conference circuit with wicket.)

    It's a cool presentation, especially if you can imagine Raible talking his way through it.

    What's sad, though, is that all the graphs look like they're saying to use Ruby on Rails, or Struts. THIS would have been where the sound to the presentation would have been awesome. BTW, there are LOTS of graphs at the end, and you kinda have to look carefully to see that they're comparing and contrasting technologies as sets. Most of the graphs could have been eliminated, but then Matt would probably have had to come up with other filler for his presentation.

    Threaded Messages (20)

  2. Where did JSF go?[ Go to top ]

    This is a great presentation, as you'd expect from Matt. My biggest issue is the fact that he's comparing a variety of frameworks. It's like debating which steam locomotive is best at a time when gas powered locomotives are getting into production. It's time to start dealing with the fact that with Java EE 6, frameworks area dead, which makes the whole argument moot. 

    I noticed JSF on an early slide, and it only got 12.5 points on his scale. I'm guessing by the "JSF ball and chain cartoon" that he probably had a few unkind words to say about JavaServer Faces?

    We tentatively have Matt schedules for TheServerSide Java Symposium in Vegas on the 16th-18th of March. That'll give us a good chance to get to more of the meat of the presentation.

  3. Where did JSF go?[ Go to top ]

    I don't think he really evaluated JSF 2. If I use his own criteria, JSF 2 beats them all (being as objective as I can, which is still subjective). Plus, it is standard, contrarily to all the frameworks he talks about.

  4. JSF not alone[ Go to top ]

    JSF with Spring MVC makes a good choice at the U.I and Controller Level. Put JPA 2 Pojo as Bean. This makes a good architecture for an ideal web application. In order to provide integration of jsf with Spring MVC, We could configure listeners in web.xml.

  5. Where did JSF go?[ Go to top ]

    I don't think he really evaluated JSF 2. If I use his own criteria, JSF 2 beats them all (being as objective as I can, which is still subjective). Plus, it is standard, contrarily to all the frameworks he talks about.

    There is no way on the face of Mother's Green Earth that JSF 2 beats Grails.

    As for being "standard", please, for goodness's sake stop using that phrase. In practice, when you are out there working on a project, that means absolutely nothing.


  6. This is not my idea (I steal it from somewhere on the Internet): a REST-enabled server side and html + css + js (e.g. jQuery + jQuery template plugin) for the browser. So instead of learning jsp tag libraries (jstl, Spring jsp tags) we learn javascript which can be used any web application.

  7. Where did "no web framework at all" go?[ Go to top ]

    +1 for that. The Facebook Graph API has shown us the way of the future. Have a general purpose data acess (JSON) solution on the server and code your app UI with jquery.

  8. no web framework at all[ Go to top ]

    I can't agree with that. No abstraction doesn't mean more control. Robust development of web *applications* (not pages) is just easier to achieve when you can think using java oo-model instead of having to manage the js layer manually.

  9. no web framework at all[ Go to top ]

    I can't agree with that. No abstraction doesn't mean more control. Robust development of web *applications* (not pages) is just easier to achieve when you can think using java oo-model instead of having to manage the js layer manually.

    I don't think no abstraction means more control either. I only see 1 advantage of this "no web framework at all" which is loose coupling.

  10. about GWT...[ Go to top ]

    Saying that GWT is "more like a jsp tag library than a web framework" isn't so far off from the point of view of the maturity of the included widgets. There isn't a lot of complex functionality there, so it can feel somewhat like going back to the days of using a very basic set of JSP tags. Also, when you use UiBinder templates and start pulling in different packages of widgets in different XML namespaces, it can start to feel like JSP.

    That said, that's not my first not predominant impression of programming in GWT, so don't let that description put you off.

  11. While you compare the RIA you should also include swing in the list. don't compare like a child

  12. Stripes for me.[ Go to top ]

    I respect Matt a lot, and this comparison is great to consider regardless of anyone's opinion.  It generates thought and that is good.

    I do have to shout out for my framework of choice though:  Stripes.

    I've used a number of frameworks, and for me Action based frameworks (what Matt refers to as Request based frameworks) are the only way to go for the web.  The component based frameworks try to hide the web, and I dislike that.  So that eliminates a bunch of them.

    As far as Action based frameworks go, Stripes has been so great for me that I've not looked back since starting with it.  Every other framework I've used always had me hating some aspect or wanting some other.  Stripes seems to satisfy my every need and leaves me wanting for nothing.

    In addition to great form and validation framework, it's also great for simple web services (REST or XML RPC -- not so much SOAP, but not impossible). 

    It's all subjective, but Stripes is worth your time to try out.



  13. Stripes for me.[ Go to top ]


    After having tested Struts 1, Struts 2, and Spring MVC, Stripes seems so intuitive, while still being completely open, that it's the king of action-based frameworks IMHO.

  14. It was a great presentation and Matt made it pretty clear that it was based on his experiences and some polling of the community, but that it obviously wasn't a scientific study.  That said, he's indenpendant from all of the various frameworks and he's at least made a decent attempt to compare and contrast them.

    There was a Google doc survey put up afterwards by devoxx attendees to re-work Matt's comparison chart, not sure how unbiased that would be either though :-)

  15. Nice presentation!!

  16. spring mvc != "spring mvc"[ Go to top ]

    Looking at slide#32 of the presentation.

    There's a bug in the data if you search in dice for:

    spring mvc

    you get 570 results. But if you search for 

    "spring mvc"

    You get only 274 results. Therefore both GWT and Rails are more popular.

  17. Spring MVC has 17 like GWT and Rails. Where do you see Spring MVC wins ?


  18. Interesting catch all attempt presentation.

    I'm declaring my hand here. I am a Wicket junky and Matt got the following dead wrong on Wicket:

    1) Developer Productivity (No template tags to learn, abstracted session management, property models makes working with component input data very simple, and more). What else? Unless we're saying OOD is not productive for serious web app development.

    2) Learning Curve (You only need to know Java + HTML). Why the low score? Here is a Wicket hello world - Wicket Hello World

    3) Developer Availability (I have found the project to be very active and the developers have been decently responsive)

    4) Ajax (Ajax is built in at the core of Wicket, and is made so powerful and simple to use for a Java Web App Framework, that I had a hard time believing it was really useful. "It's too simple to use", I kept telling myself. Something must be wrong with it. :).

    You can also easily fold in custom JavaScript code to get more Ajax bang.)

    5) Scalability (Need some data here. How was this tested - i.e. benchmarks? Also, Wicket is ideal for building pure web applications that require user session management details which it keeps out of your way, not to mention all the other typical web app requirements.

    Why try to mix the requirements of a web application with those of a website, where the latter is usually thought of as primarily information display based? If we're comparing web frameworks, that is more of a discussion that should be held within the context of web applications, and things like session management usually pop-up. Talking about having HTML templates beside your Java Code (i.e. Convention) is a silly point to bring up in the context of building a web application, especially when you consider that web designers usually hate when their beautiful HTML templates get trashed with web framework tags/script code scribbled all over the place.

    If we're talking about websites, we need to be talking within the context of scripting, Content Management Systems, Wordpress, Drupal, LifeRay, etc.

    Either way, Wicket easily swings both ways, i.e. stateful, or stateless. Use bookmarkable web pages and setStatelessHint(boolean param)


    6) Testing - (Testing is also drop dead simple for Wicket and is built in at the core. The WicketTester class is the key here.)

    What version of Wicket is Matt talking about?

    Also, I think it would be nice to see how custom component development ease would be scored here (Wicket is known to be really strong in this area).

    Also, for those who prefer reading other references on wicket vs my fanatic claims, check out some of these old articles. I don't know if the comments of the guy in the first link will make much of a difference if you start comparing names, or who is who (i.e. Matt Raible vs Peter Thomas). :-)

    If I'm judge number two here, Wicket is looking like at least a 17.5 to me using this score card not including "Ring Generalship". :-)

    What say the other judges here? I know Cameron has called it for JEE 6 which wasn't even in this match up. lol.

  19. also quoth Raible for Wicket cons:

    Stateful by default

    HTML Templates live next to java code by default

    I don't quite understand how those are cons and if they are cons it's like complaining about a dreadfully unpleasant looking gnat on window 36 of an airliner. I have had some pains with Wickets URLs, especially with access logs that need to be processed by web analytics software, I do take that as a valid flaw. I also take issue with Wicket's AJAX model and some of the Wicket shipped AJAX components, I find myself constantly writing weird code I can't understand 2-3 months later and totally alienating Jr. Developers. I end up with much tidier solutions just writing Prototype / JQuery JavaScript when it's possible. Still wouldn't trade Wicket for anything else (except GWT). 

    GWT side note: Raible listed "slow to compile, difficult to test" as a con. I found this to be true prior to GWT 2.0, I don't think this is a valid con anymore with development mode (almost instant compile) working across multiple browsers and the improvements taken to reduce release mode compile time. The support for a subset-of-Java thing still gets me in GWT though. 

  20. >2) Learning Curve (You only need to know Java + HTML).

    What about ItsNat? (+ Spring)

  21. I really like the consistency of Matt's analysis over the years. If anything he has a refined set of criteria, weights, and trend analysis to help any group pick a new pony.  It's a good starting point at least.  I saw him present this several years ago and asked him after the session what he would pick "off mic."  He gave me a straight answer, which I won't repeat, and it wasn't what I would have expected based on the presentation.  So when I look at the latest presentation I have to think he makes every attempt to be objective and helpful.