Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

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.

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.

Dice.com Job Count - November 2007

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.

User Mailing List Traffic - November 2007

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. ;-)

Seam Logo

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!

Seam Logo

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.

Posted in Java at Nov 14 2007, 03:14:53 PM MST 39 Comments
Comments:

I feel that one of the pro's of GWT worth mentioning it the ease by which an offline version of the app can be made since the the view and controller logic are completely handled on the client side. With all the other frameworks besides Flex, this is no easy task as the page-to-page navigation is managed by the server and this does not fit well in an offline / serverless environment. With offline apps becoming the trend for rich desktop-like apps, I think this is a huge win. Additionally GWT API's for Google Gears makes this even easier to implement. Cons for GWT are that its not suitable for apps with SEO requirements. While there are workarounds for this like having a mirror site, its a pain and not easy to implement (can run into cloaking issues if not implemented correctly).

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 10:34 PM MST #

I think the Flex perceived popularity might be a function of it's difficulty. Just like with JSF. If you need a JSF guy and you don't want to ramp them up for a month or 2, then you _need_ a JSF guy. Not so with other frameworks where, if you know MVC, you can be productive after a couple days.

Posted by Demian Neidetcher on November 14, 2007 at 11:17 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. For a start, as a non-USian I had to google it to work out what you meant. And while compliance is clearly important, I would argue that accessibility shouldn't be turned into a rubber stamp of "yes, we're compliant"

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:

  • Lack of Java5 support is really painful.
  • It's hard to attach GWT on top of an existing code base.
  • GWT seems to invade your code base fairly thoroughly - you're end up writing GWT apps, not java apps with a GWT UI.
  • Adding ClickListeners, etc, reminds me of the bad old days. It's not awful, but it didn't feel comfortable
  • The UI is "nice" but it's not pretty unless you add in some decent stylesheets. And given how much of the HTML is generated by Javascript, that's harder than I wanted it to be.
  • The provided documentation ain't so nice, but there are books available (which I haven't read yet)
As I said, it was a brief experience, but it didn't really inspire me. I think taking an enterprise java team and trying to get them to build their UIs in GWT would be difficult. Any experts want to jump in and tell me what I'm missing?

Posted by Tim Vernum on November 14, 2007 at 11: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 15, 2007 at 12:04 AM MST #

Thanks 67.190.209.2 - too bad there's nothing on this logo that indicates Seam. Anyone know of a copy of this with "Seam" in text to go along with it?

Posted by Matt Raible on November 15, 2007 at 12:55 AM MST #

Matt, Those job listings, you don't think you got some "Flex Time" jobs mixed i there? :)

Posted by Thomas Risberg on November 15, 2007 at 01:03 AM 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 15, 2007 at 04:37 AM 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 15, 2007 at 05:32 AM MST #

Of course there won't be any non-valid "Flex" post on the front page because the ones that want Flex developers are likely to mention Flex several times and thus rank higher. But go a little bit farther down the page, and you get plenty of "flex time" posts. Why oh why did you not search by "Adobe Flex"? If you did, your results would change dramatically - 187 hits for the search I just did.

Posted by Kalle Korhonen on November 15, 2007 at 08:19 AM MST #

Oh, and btw, "Trails" would rank as second with 95 hits if searched by single word only; above Tapestry, which of course is completely wrong, but no hits for "tapestry trails". I'm just highlighting the ambiguity of your results. At a bare minimum, each search should have "java" added in them, after which flex search for example gets you 385 results.

Posted by Kalle Korhonen on November 15, 2007 at 08:29 AM MST #

Hi Matt,

Due to the length of my response, I've posted it on my blog:
http://www.jamesward.org/wordpress/2007/11/15/matt-raible-comparing-jvm-web-frameworks/

Let me know your thoughts. Thanks!

-James (Adobe)

Posted by James Ward on November 15, 2007 at 10:52 AM MST #

There are indeed a lot of "flex time" jobs, hence your data (and conclusion) is incorrect.

Here is a another query :

http://www.indeed.com/jobtrends?q=java+spring+MVC%2C+java+flex%2C+java+GWT&l=

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 11:03 AM MST #

Kalle and Julien - I'll redo the numbers and append "Java" to every query. I did append Flash previously to Flex. The reason I didn't add Java was I figured you aren't required to know Java to program in Flex. I'll make sure and add a disclaimer during my talk (if I give it today) that notes how statistics are often nothing more than pretty graphs. ;-)

Posted by Matt Raible on November 15, 2007 at 12:22 PM MST #

A pros : GWT Team is reactive
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 12:57 PM MST #

I've changed the Flex cons to the following:

  • Can be difficult for HTML/CSS Developers
  • Flash is difficult to test with open source tools
  • Difficult to do permissions checking and showing/hiding of components

#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 12:59 PM MST #

I'm glad Christian got you that Seam logo. The first one made it look like it was going down the drain.

...which I hope is not true :)

Posted by Jason Graff on November 15, 2007 at 01:10 PM MST #

Thanks to James Ward's feedback, I've updated Flex's cons to be as follows:

  • Not Search Engine Friendly
  • Doesn?t render HTML content well
  • Doesn?t print well by default

Posted by Matt Raible on November 15, 2007 at 01:55 PM 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.

Peace
-stephan

--
Stephan Schmidt :: [email protected]
Reposita Open Source - Monitor your software development
http://www.reposita.org
Blog at http://stephan.reposita.org - No signal. No noise.

Posted by Stephan Schmidt on November 15, 2007 at 02:46 PM MST #

I've updated the Dice.com graph to include "Java" with all the search terms. Let me know if you think there's a better way to filter these results.

Posted by Matt Raible on November 15, 2007 at 03:29 PM MST #

Hi Matt,

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.

thank you!

Posted by Alexander Rusmanov on November 15, 2007 at 04:42 PM MST #

You have an excellent point Alexander. As far as HDIV - even though it helps, it doesn't solve the fact that JSP EL doesn't escape XML by default.

Posted by Matt Raible on November 15, 2007 at 04:47 PM MST #

How does FlexUnit, that works like JUnit, measure up as far as testing flex applications?

http://code.google.com/p/as3flexunitlib/

Posted by Sib on November 15, 2007 at 05:28 PM MST #

Matt,

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?

Matt Stine

Posted by Matt Stine on November 15, 2007 at 07:46 PM MST #

Hi Matt,

I've written a feedback for your presentation on my blog since I need some formatting for the post.

Posted by Joshua on November 16, 2007 at 02:44 AM MST #

I am not sure, how you compiled graphs. I did simple search on dice, and i am getting different results.

Input params:
> 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 03:35 PM MST #

Ashish - I didn't narrow my search results by specifying a location.

Posted by Matt Raible on November 16, 2007 at 04:48 PM MST #

@Matt Stine: People say that Wicket is *very* easy to create custom components with, compared to JSF.

Posted by Antony Stubbs on November 20, 2007 at 12:04 AM MST #

Btw Matt - do you know if the presentations get recorded?

Posted by Antony Stubbs on November 20, 2007 at 12:05 AM MST #

Antony - I don't believe this presentation was recorded.

Posted by Matt Raible on November 20, 2007 at 06:09 AM MST #

Hi Matt,

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,

<application>
   <resource-bundle>
       <base-name>org.aldo.messages</base-name>
       <var>msg</var>
    </resource-bundle>
</application>

Regards,

Posted by Aldo Solis on November 21, 2007 at 01:16 AM MST #

Ashish's results match the things I see around here better. (I am in Malaysia and I regularly search these things on jobstreet.com which is the most popular here)

Posted by Siamak Sarmady on November 21, 2007 at 02:16 AM MST #

Have You evaluated the RAP/Qooxedoo FW?

Posted by Gadi on November 21, 2007 at 10: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.

Regards,
Lluis

Posted by Lluis Martinez on November 22, 2007 at 05:55 PM MST #

Hi

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

Cheers
ZedroS

Posted by ZedroS on November 26, 2007 at 03:57 PM MST #

Matt,

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 29, 2007 at 04:37 AM MST #

Matt,

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 12, 2007 at 02:07 AM MST #

Hello Matt,

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.

Thanks,
Chetan

Posted by Chetan Shah on August 05, 2010 at 05:18 AM MDT #

Chetan - you might look at my Comparing Kick-Ass Web Frameworks and Future of Web Frameworks presentations I delivered at the Irish Software Show. Other than that, I plan to refresh this presentation for this year's Devoxx. The 5 frameworks I'll be evaluating are TBD.

Posted by Matt Raible on August 05, 2010 at 08:04 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed