Comparing JVM Web Frameworks Presentation
Early this morning, I assembled a Comparing JVM Web Frameworks presentation in preparation for my talk tomorrow at ApacheCon. As mentioned on Monday, this presentation compares Flex, Grails, GWT, Seam, Struts 2 and Wicket. While I think this presentation would be fun to deliver, I don't believe it has as much meat as the original talk I was planning to give. My original talk compares JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket. Since I've used all these frameworks, I'm able to compare them more on their technical features. Since I haven't used Flex, GWT or Seam, there was no way for me to 1) try them all before tomorrow and 2) do a thorough analysis of how well they each handle my desired features.
Since the abstract on ApacheCon's website mentions my original presentation, I don't want to yank out the carpet and present the second without asking. So my plan is to ask the audience which one they'd rather hear and continue from there. I've updated both presentations with the latest statistics and uploaded them for your review. For those of you who've used these frameworks, I'd be interested to hear how accurate you think my Pros and Cons section is. If you know of better pros or cons, please let me know and I'll adjust as needed.
- Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket
- Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
While creating the 2nd presentation, I found a couple things that surprised me. The first is how popular Flex is - not only in job listings, but also in skilled developers and mailing list traffic. Below is a graph that shows how there aren't many jobs for most of the frameworks, but there's lots for Flex.
The following graph illustrates while I chose to use Flex instead of OpenLaszlo as the Flash framework. OpenLaszlo has a much smaller community than Flex.
The second thing that was surprising is Seam doesn't have a logo! How does it ever expect to become a popular open source project without a logo?! It's amazing they've made it this far without having this essential feature. To motivate the creation of a Seam logo, I'm using the following butt-ugly logo in my presentation (found here). Hopefully something better comes along before I deliver my talk tomorrow.
Update: Monday's post started an interesting thread on Stripes' mailing list. Also, I really like Spring MVC's new annotation support. It'd be nice to see it go a step further and use defaults (like ControllerClassNameHandlerMapping + subpackage support) and only require annotations to override the defaults. IMO, Stripes, Spring MVC and Struts 2 are all excellent choices if a request-based framework provides the best architecture for your application.
Update 2: Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket seems to gave gained a lot of interest (and support) in the blogosphere. Because of this, I'm considering submitting it as a JavaOne talk. If I were to do this, how would you like to see this presentation changed and improved?
Update 3: I received the following Seam logo via e-mail. Thanks Christian!
Update 4: I've updated the Dice.com graph to include "Java" with every search term. To understand the comments on this entry, you might want to view the previous graph.
Update 5: This presentation was posted to the Wicket User mailing list. I followed up asking users to post the pros and cons of Wicket. Now there's a lengthy thread on Wicket's Pros and Cons. Good stuff.
As mentioned in my other post, I think Flex's sweet spots are collaboration, rich multimedia & charting and server push (no scalability issues like Comet). Flex has these advantages over all the other frameworks.
Posted by Sanjiv Jivan on November 14, 2007 at 04:34 PM MST #
Posted by Demian Neidetcher on November 14, 2007 at 05:17 PM MST #
Now, on to the meat of the presentation...
My brief experience with GWT was in trying to attach a web front end on top of an existing set of services and domain objects, which had been written in java 5. I'd have to say that it didn't turn out too well.
Conclusions I reached:
Posted by Tim Vernum on November 14, 2007 at 05:58 PM MST #
> I don't want to make changes to presentation at this late stage, but "508 compliance" is probably a bad term to use.
Thanks for the feedback Tim, this is very helpful. Please keep in mind that I do want to change this presentation to be the best it can be before tomorrow morning. To make this happen, I need the community's help - especially in the pros and cons section. I want them to be realistic and from folks that have used the frameworks.
So anyone who has feedback, please leave a comment. Even if it doesn't go into tomorrow's presentation - it'll likely help if/when I do this presentation in the future.
Posted by Matt Raible on November 14, 2007 at 06:04 PM MST #
Posted by 220.127.116.11 on November 14, 2007 at 06:51 PM MST #
Posted by Matt Raible on November 14, 2007 at 06:55 PM MST #
Posted by Thomas Risberg on November 14, 2007 at 07:03 PM MST #
> Matt, Those job listings, you don't think you got some "Flex Time" jobs mixed i there? :)
You are correct in that I searched for "Flex" without any additional keywords (like Flash or Java). However, if you look at the first page when searching for Flex, they all seem to be legit. I'm willing to modify the numbers if you think they're inaccurate.
Posted by Matt Raible on November 14, 2007 at 10:37 PM MST #
>> I think the Flex perceived popularity might be a function of it's difficulty.
I was on a Java team with no Flex experience and we grew weary of fighting x-browser issues building complex GUIs. We took on Flex and were productive with it in a very short time. In a matter of a few weeks we had some pretty pimped out GUIs going. It's really not that difficult. Matt, I'll be curious to see what your opinion is after you've gotten a chance to dive in with it.
Posted by ebc on November 14, 2007 at 11:32 PM MST #
Posted by Kalle Korhonen on November 15, 2007 at 02:19 AM MST #
Posted by Kalle Korhonen on November 15, 2007 at 02:29 AM MST #
Due to the length of my response, I've posted it on my blog:
Let me know your thoughts. Thanks!
Posted by James Ward on November 15, 2007 at 04:52 AM MST #
There are indeed a lot of "flex time" jobs, hence your data (and conclusion) is incorrect.Here is a another query :
I've added "Java" as a keyword, as anyway you want your developers to be Java-savvy, no matter what the framework is.
I must say that those trends make a lot more sense to me. For example, Flex has been Open-Sourced in June 2006, and you can see the Flex trend going up quicker after that.
Posted by Julien Dubois on November 15, 2007 at 05:03 AM MST #
Posted by Matt Raible on November 15, 2007 at 06:22 AM MST #
Just have a look on this issue : Issue 1792 - Hosted mode broken on MacOS X Leopard
Open : Oct 21, 2007.
First patch : Nov 06, 2007
Posted by Didier Girard on November 15, 2007 at 06:57 AM MST #
I've changed the Flex cons to the following:
#1 is from my own experience with OpenLaszlo. As a long-time HTML/CSS developer, it was frustrating to have to work with a new XML-based markup that I didn't know. Of course, this frustration will pass with time, but it also might motivate developers to switch jobs and stick with the HTML/Ajax that they're familiar with.
From James' blog, the big Flex testing integrating seems to be Mercury Quick Test Pro - which looks like it costs around $7200.
The 3rd con is true for any UI framework that's not rendered from the server-side.
Of course, if anyone has better (or more accurate) cons, I'd love to hear them.
Posted by Matt Raible on November 15, 2007 at 06:59 AM MST #
...which I hope is not true :)
Posted by Jason Graff on November 15, 2007 at 07:10 AM MST #
Thanks to James Ward's feedback, I've updated Flex's cons to be as follows:
Posted by Matt Raible on November 15, 2007 at 07:55 AM MST #
I second the other concerns. With dice you can directly go to searches beyond 500 by manipulating the URL. Very funny are the job offerings for Microsoft for Flex :-) They are flex-time, flex-budget etc. but it's funny when you consider that you have counted dozens of Microsoft offerings in your 969 Flex chart.
Searching for "Microsoft Flex" results in 150 hits.
Stephan Schmidt :: firstname.lastname@example.org
Reposita Open Source - Monitor your software development
Blog at http://stephan.reposita.org - No signal. No noise.
Posted by Stephan Schmidt on November 15, 2007 at 08:46 AM MST #
Posted by Matt Raible on November 15, 2007 at 09:29 AM MST #
I have read your presentation and I would like to add the advantages and disadvantages each framework has related to security. In my opinion it is very important for any company to develop secure web applications. That´s why choosing a framework that can avoid typical security vulnerabilities (integrity, data tampering...) is essencial.
From all the frameworks that are mentioned, only Wicket ensures data integrity! JSF ensures integrity of most data, but doesn´t protect against data tampering in a 100%. So, I think this is a con for Struts 2, Spring MVC, JSF, Stripes and Tapestry framework, because none of them protects us against data tampering.
I think it would be worthy to mention that new security frameworks have been developed to fill this gap. For example, HDIV supports Struts 1.x, Struts 2.x, Spring MVC and JSTL and ensures data integrity in a 100%. Besides, it offers data confidentiality to avoid users visualize sensitive data. As far as I have tested it, it is capable of defining XML rules to avoid cross-site scripting attacks.
So, in my opinion security is necessary in any business environment and, from my own experience, I can assure you that it is very helpful to use a framework which offers a minimun security level. Otherwise, it is a pain (and very risky) to apply it manually in the source code of the application.
Posted by Alexander Rusmanov on November 15, 2007 at 10:42 AM MST #
Posted by Matt Raible on November 15, 2007 at 10:47 AM MST #
How does FlexUnit, that works like JUnit, measure up as far as testing flex applications?
Posted by Sib on November 15, 2007 at 11:28 AM MST #
I have an interesting question. I've been discussing web frameworks quite a bit with my boss. We're very close to "moving on" from JSF, as the 5-10% of use cases where we are having pain are negating the savings for the other 90-95% of use cases that JSF is easing development. One of our primary problems is a need that occurs quite a bit in developing apps for the life sciences space: developing a UI that requires components that do not exist and probably never will unless we develop them ourselves. Developing a host of custom components negates much of the savings of JSF. So, my question is this. What framework allows you to "break out of its mold" the easiest? That is, what framework allows me to harness its power for those 90-95% cases, but also doesn't hinder me from truly "innovating" to solve those 5-10% cases?
Posted by Matt Stine on November 15, 2007 at 01:46 PM MST #
I've written a feedback for your presentation on my blog since I need some formatting for the post.
Posted by Joshua on November 15, 2007 at 08:44 PM MST #
I am not sure, how you compiled graphs. I did simple search on dice, and i am getting different results.
> 30 miles of princeton, nj (which includes nyc wall street)
> Employment_type = all
> Jobs posted in last 30 days
> Search using all keywords in box
1. flex java = 6
2. struts java = 68
3. gwt java = 0
4. seam java = 0
5. jsf java = 11
6. grails java = 0
7. wicket java = 0
and other technologies..
8. spring java = 34 (i know it's not web framework)
9. hibernate java = 29
Personally, If i have to pick another technology.. i will pick spring + hibernate + struts2.
again, it's personal opinion.
Posted by ashish jain on November 16, 2007 at 09:35 AM MST #
Posted by Matt Raible on November 16, 2007 at 10:48 AM MST #
Posted by Antony Stubbs on November 19, 2007 at 06:04 PM MST #
Posted by Antony Stubbs on November 19, 2007 at 06:05 PM MST #
Posted by Matt Raible on November 20, 2007 at 12:09 AM MST #
Well great presentations!,
In the internationalization section, you said that JSF need a declaration for the message bundle in every page but there is a way to declare it just once in the faces-config.xml,
Posted by Aldo Solis on November 20, 2007 at 07:16 PM MST #
Posted by Siamak Sarmady on November 20, 2007 at 08:16 PM MST #
Posted by Gadi on November 21, 2007 at 04:43 AM MST #
Ashish - Flex is not tied to Java as the other frameworks do (in some way or another). Putting Flex & Java is not fair. Putting Flex alone gives 966 results while putting GWT alone only 36. GWT + Java gives 31. So GWT pretty much implies Java.
This said, I'm not a Flex advocate. I'm still trying to decide which framework I should learn.
Posted by Lluis Martinez on November 22, 2007 at 11:55 AM MST #
Regarding Wicket, it seems to me that the html templates can be put somewhere else than next to the Java classes. It's just not the default behavior.
For the tight binding between pages and views, I don't really understand the point.
The view is, I guess, the html template where wicket only search for wicket id and otherwise one can put whatever he wants into it. Personally, the fact that the html is "just" straight html is really, I find, an advantage : your web designers can easily work with them !
And if one desires just a wicket id and nothing else, let's use a panel which encapsulates all the components and you're done.
Could you provide more explanations ?
Regarding Flex, I've the understanding it's not an open source framework, whereas all the others are. Am I correct ?
Thanks in advance
Posted by ZedroS on November 26, 2007 at 09:57 AM MST #
Thanks for the comparisons. I like the underdog on this one, stripes, less UG traffic, but higher quality conversations...and less xml.
Stripes has some good URL handling features in the works, and they've been very disciplined about controlling features to a smaller set. If they keep that up they'll have a nice framework that can be learned in a day or two.
The #1 thing java web frameworks need to solve is pretty URLS. The .action, .do, .jsp need to disapear.
Posted by Taylor on November 28, 2007 at 10:37 PM MST #
Great presentations on a very useful topic! You were asking for feedback in case you do something like this at JavaOne. One thing that I would like is a matrix comparing the selection criteria for each framework. You list out a lot of criteria, and then have room for only one slide of highlights for each framework. The highlights are great discussion points but they still leave lots of room for 'religious' arguments.
By doing them up in a spreadsheet matrix, it would force a more objective side-by-side comparison of each criteria. If the spreadsheet were distributed, perhaps we could all enter our own weighting factor for each criteria as suggested toward the end of your presentation. The winner would come out based on what is important for our site.
Posted by Bob O'Malley on December 11, 2007 at 08:07 PM MST #
Interesting presentation, though I am looking at it well past its time - 2007 :).
I am doing a similar evalution of frontend technologies, and was wondering if you have later updated this presentation with new information over the past 3 years.
Will be useful, if I can get the latest technologies in this arena and the pros and cons for each of them.
Posted by Chetan Shah on August 04, 2010 at 11:18 PM MDT #
Posted by Matt Raible on August 05, 2010 at 02:04 PM MDT #