Long time member of the Java community. Author of JHTML and the SmugMug Java API, worked with the DZone crew for a while and Product Services Manager at Genuitec. Also the creator of The "Break it Down" Blog and comedy site Up My Own Ass. Riyad has posted 6 posts at DZone. View Full User Profile

Hottest Java Web Framework... Maybe Not Java?

06.10.2008
| 10904 views |
  • submit to reddit

I haven't sat down in a long time and actually tried to determine a trend in the Java web framework arena. The uncountable number of "easy to use" Java web frameworks that are out now adays is too many to even start to pay attention to.

Struts 1 came out at a perfect time in history... where your only choice was either hand-coding everything or Struts... and most people went with Struts.

Flash forward a few years later and now you are in a state where everyone has done, redone and re-redone Struts and the Model 2 style of web frameworks over and over and over, each on supposedly easier and faster than the previous one.

Some of the frameworks genuinely bring some pretty cool ideas to the table in new and interesting ways. Others of them accomplish basic tasks with the most convoluted/confusion syntax ever; requiring you to readjust your thinking that you've already spent years learning (sorta like Windows Vista did) and learn entirely new technology stacks from the ground up.

With so many choices for Java web frameworks out there, and most of them pretty decent from a technical level, the only thing causing the adoption of particular ones to grow are tools and tooling support.

Unfortunately, not a lot of the teams working on these frameworks understand/believe that or don't want to work on tools (understandably, it can be a lot different doing tools than it can be doing a framework).

That being said, what if you are a pretty accomplished developer, and don't need tools? Which Java web framework is the one for you to choose? Well, that's what I want to try and figure out...

I'm only going to consider frameworks that I've seen significant growth and news around for the last few years... I apologize if I've excluded your favorite framework here; if it's big enough let me know and I'll add it.

I also tried to include only next-gen frameworks... so no Struts or WebWork in this list. The Java web frameworks I narrowed down to are (in no particular order):

  • JavaServer Faces: It's part of the spec, have to consider it.
  • Apache Wicket: Big grassroots effort, personal favorite and strong team.
  • JBoss Seam: Lots of folks using it and saying it's pretty great solution to JSF development.
  • Spring MVC & WebFlow: I'm clumping them together because I don't think either have significant penetration on their own to justify separate categories.
  • Struts 2: Struts was too big not to include this.

And lastly, I wanted to take a look (out of curiosity) at the following non-Java web frameworks:

NOTE: I used Google Trends to determine a universal interest/penetration level for the individual technologies. Alternative names for some technologies were combined to create the single value (e.g. 'JSF' and 'JavaServer Faces' and 'Java Server Faces') in hopes of creating the most accurate values.

I used the following values in the Google Trends engine to represent each framework:

  • JavaServer Faces: (javaserver faces) | (java server faces) | jsf
  • Apache Wicket: (apache wicket) | wicket
  • JBoss Seam: (jboss seam) - Cannot use the term 'seam' it's too common
  • Spring MVC & WebFlow: (spring mvc) | (spring webflow) | (spring web flow)
  • Struts 2: (struts 2) | (struts2)

And for the non-Java frameworks:

  • Adobe Flex: (adobe flex) | (adobe air) | (flex 2) | (flex 3)
  • Ruby on Rails: (ruby on rails) | "RoR" | ruby rails

I've tried to include most all of the different name variations when representing the technology stacks and exclude potential false positives to give as accurate results as possible; especially with the frameworks that included normal-ish words in their names (e.g. Seam and Flex).

If you have any enhancements that you think might make the results more accurate, please let me know.

NOTE: Even with the liberal use of qualifiers I realize there is still a margin of error created for more common words that can possibly match for a term. So please do your own research and come to your own conclusions when researching frameworks for use at work.

Now let's start analyzing these. When you drop all 4 of the Java web frameworks onto a trend diagram, you end up with what I found to be a pretty surprising result, JSF is the clear winner with a surprising amount of Struts 2 mixed in there:

If we take JSF out of the picture so we can get a better idea of how the runners up stack up against each other, we get:

Which is much more interesting I think is how Wicket adoption has stayed almost flat while Struts 2 adoption has spiked. Spring MVC/WebFlow seems to be going no where fast and racing JBoss Seam there.

The popularity of Struts 2 really caught me off guard with it being quite a bit different from Struts 1, I figured it got thrown into the "just another web framework" category, but I guess there is something in a name and it's doing quite well.

Because of this trend I'd expect to see some Struts 2 tooling support start gracing some IDEs here in 2009.

Now let's switch gears and take a look at our non-Java web frameworks and see how those two are doing:

Again, very interesting. If I had to guess based on the buzz I hear, I would have guessed that Ruby on Rails would be destroying Adobe Flex, but as we see here Flex is really carving out a nitch for itself among developers.

I had a chance to speak to a predominately Spring-shop recently who had adopted Flex and their reason for doing so was:

  • low barrier to entry to get something up and off the ground working
  • easy to make a nice-looking UI that worked quickly and reasonably functional
  • focused tooling support

The fragmentation in the Java web framework space is certainly one of the biggest causes of the lack of great tooling for 1 particular framework over another. As soon as you support framework A, users scream for B support, and next thing you know you are trying to maintain tooling support for 6 frameworks across every single release (speaking from experience)... it's expensive and a huge nightmare. Having the focused language and platform that you can target your tools directly at is really nice... then again your trade off is a locked-in platform, sort of like the Visual Studio/Microsoft story all over again... but that's neither here nor there if your company has the money and has problems the technology solves well.

Getting back to our trend analysis, let's take the top 2 Java web frameworks we have and super-impose them on our 2 non-Java frameworks and see how they do:

Again, very interesting. I expected the gap between JSF, Ruby on Rails and Flex to be bigger... I'm not sure what I expected it to look like, just that it would be bigger. Remember that JSF was the far-dominate Java web framework by a factor of atleast 2x, and now super-imposed ontop of Ruby on Rails and Adobe Flex it is looking like a very close game, with Struts 2 (our 2nd highest Java contender) dragging below them all.

If we simplify the trend by removing Struts 2, we get:

Not too big of a difference, the three web frameworks look like they are in a pretty good race and may continue that way for a time to come.

An interesting way to predict how the future will look is to look at the history of the technologies, more specifically:

  • JSF hasn't been able to boost it's numbers by much at all over the last 4 years. There was a slight increase in 2004, even less in 2005 and then it just flattened out and decreased in '07/'08.
  • Ruby on Rails blew up in 2005 and 2006 and is settling a bit it looks like.
  • Adobe Flex didn't blow up but has had a pretty steady rise after a very slow start in 2007 and 2008.

I wonder if Adobe Flex is going to be the next vendor to lock-into in the classic Microsoft model?

Actually, that's an interesting question, where does .NET fit into all of this? Let's have a look:

NOTE: I only used 'asp.net' to represent .NET to have a more focused trend. Using '.net' almost completely flattens out the competition technologies and there is no guarantee that I wouldn't also be capturing a ton of client-side development using .NET as well.

Oh wow... now it's just embarrassing... the issue isn't even if Wicket is better than JSF, or if Spring WebFlow will trump Struts 2... it's a much, much more general question of: Is Java web development providing solutions to developers?

Given the incredible dominance of .NET and the growing rise of Adobe Flex, I have to imagine that, as developers, while we might squabble about the differences and benefits of framework X versus framework Y, these commercial, proprietary, complete-stack solutions from Microsoft and Adobe are being used to actually solve problems at companies.

Sort of puts the framework-wars on JavaLobby into perspective when you realize you might be fighting for 2% of a dirt-pie, while the guys outside are all sitting down to a lobster dinner.

Thoughts?

References
Published at DZone with permission of its author, Riyad Kalla. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

JeffS replied on Tue, 2008/06/10 - 6:05pm

But add all the Java frameworks together, including Struts 1 (still lot's of it out there), and the number probably exceeds, if not dwarfs, .Net and Flex.

 

Riyad Kalla replied on Tue, 2008/06/10 - 7:02pm

Jeff,

That's probably true, but if you are a Java web dev you can't use them all :)

Omar Palomino S... replied on Tue, 2008/06/10 - 7:03pm in response to: JeffS

That's the problem, all those efforts are focused in different directions, you cannot just simply "add" and think that everything is allright. If Java want to survive need that Java EE accomplished all of its promises, work as a standar and build an strong community to provide the innovation.

Better work in Java EE modules than in the just-another-simple-to-use-ready-to-cook new java web framework.

Take advantage of all the new ideas and complement the standar, and if there is not much of a problem, make it fast. Not by taking the JSR way, but an Open Source Community way.

Regards.

George Jiang replied on Tue, 2008/06/10 - 11:20pm in response to: Riyad Kalla

There is still a lot of plain JSP/Servlet development out there which is a more popular option than Struts 1 at present due to Struts 1's image as a dead technology. Probably also more popular than any other single Java Web framwork including JSF.

Roland Carlsson replied on Wed, 2008/06/11 - 12:33am

Take a look at http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html for larger perspective. On a language level java dwarfs the most languanges. They are thinking about doing a webframework-index after they removed ColdFusion from the languange-index. 

 Where are php? I imagine that php is the really big contender here mostly from being the hobbyist tool since is easy to getting to a publish webpage. 

 

Bruno Vernay replied on Wed, 2008/06/11 - 7:52am

You say that you tried "to determine a trend in the Java web framework arena" and "used Google Trends to determine a universal interest/penetration level"

What does it mean ? Popularity ? buzz ? adoption ? Why do people search for "Struts 2" or "asp.net" ?

The same thing happened about Netbeans and Eclipse, showing Netbeans "better" than Eclipse. It was obviously tricky.

For popularity : TIOBE does a good job (considering books, jobs, mailing list traffic ... )

Besides, "wicket" is as common as "Seam". Grails shouldn't have been excluded has its trends is between Strut2 and Seam.

The funny part is that it is the third time that I comment on the same post but on different places :-)

 

Dhananjay Nene replied on Wed, 2008/06/11 - 3:22pm

 

That being said, what if you are a pretty accomplished developer, and don't need tools? Which Java web framework is the one for you to choose? Well, that's what I want to try and figure out...

 

Using Google Trends ?

 

Even with the liberal use of qualifiers I realize there is still a margin of error created for more common words that can possibly match for a term. So please do your own research and come to your own conclusions when researching frameworks for use at work.

 

And this qualifies for Research ?

 

Which is much more interesting I think is how Wicket adoption has stayed almost flat while Struts 2 adoption has spiked

 

And google trends is supposed to indicate adoption ?

 

 

An interesting way to predict how the future will look is to look at the history of the technologies, more specifically:

  • JSF hasn't been able to boost it's numbers by much at all over the last 4 years. There was a slight increase in 2004, even less in 2005 and then it just flattened out and decreased in '07/'08.
  • Ruby on Rails blew up in 2005 and 2006 and is settling a bit it looks like.
  • Adobe Flex didn't blow up but has had a pretty steady rise after a very slow start in 2007 and 2008.

I wonder if Adobe Flex is going to be the next vendor to lock-into in the classic Microsoft model?

 

 

So now search trends is supposed to help us predict the vendor lock-into strategies and then into the future ?

 

NOTE: I only used 'asp.net' to represent .NET to have a more focused trend. Using '.net' almost completely flattens out the competition technologies and there is no guarantee that I wouldn't also be capturing a ton of client-side development using .NET as well.

 

Of course it doesn't matter that .NET is a complete platform strategy and ASP.NET is much much more than an MVC framework. And the general principle of scientific analysis would be - if any of your data points seem to make a particular hypothesis overridingly powerful compared to the alternative hypothesis - get rid of the data points ?

 

Oh wow... now it's just embarrassing... the issue isn't even if Wicket is better than JSF, or if Spring WebFlow will trump Struts 2... it's a much, much more general question of: Is Java web development providing solutions to developers?

 

Assuming for a moment I go along with the presumption that google trends is a good way to find these answers - why did you not plug in the word java in the search. We would've had an answer.

 

Given the incredible dominance of .NET and the growing rise of Adobe Flex, I have to imagine that, as developers, while we might squabble about the differences and benefits of framework X versus framework Y, these commercial, proprietary, complete-stack solutions from Microsoft and Adobe are being used to actually solve problems at companies.

 

So if your search count is not as good as your competitor and you do happen to squabble once in a while - you're squabbling and your competitor is actually solving problems !


Give me a break. Research is a serious business. To find out which framework is good for us to choose would require a tremendous amount of sweating out. It would require digging out much more information, figuring out what is likely to be required, and what is likely to better help meet these needs, and providing a clear traceable and defendable process of translating data points into judgements. Data should not masquerade as Information. Search should not masquerade as Research !

Dhananjay

-- I added the following in a subsequent edit --

PS : I have no axe to grind with RKalla. However I have at times seen other developers and sometimes even myself getting carried away by an idea or tool while completely losing focus on the problem or the process. I still remember the day more than a decade ago when I was publicly rebuked with the statement - "For some people, when they get a hammer in their hands - everything looks like a nail". I have been eternally thankful to the gentleman since then, since it helped me tremendously in my later days. One of my professors used to regularly encourage us to participate more strongly in the class while saying - "Don't be afraid to stick your neck out. Please do so. But if you do remember we may just chop it". I realise I have been a little harsh - but I think it is for the better. As bloggers while we should feel encouraged to blog more, we should also realise there is a burden on us - a burden of traceability of thoughts and process - a burden that we cannot casually ignore. The first time I saw this post, I simply gave it a thumbs down - but it just seemed to come at me again in different ways from different URLs. I realise I have been harsh.I hope at the end of the day I haven't been unkind.

Riyad Kalla replied on Wed, 2008/06/11 - 4:04pm in response to: Dhananjay Nene

Dhananjay,

Thanks for saying so, you brought up a lot of excellent short-comings in the original post; you are right, there is a lot more data that has to be considered to make accurate conclusions on the subject and I hope anyone in the boat trying to decide which stack to use does have the time to do that.

At the least I hope the post brought out some conversation and have read/digested everyone's feedback.

Dhananjay Nene replied on Thu, 2008/06/12 - 12:42am in response to: Riyad Kalla

Riyad,

I know this might sound strange .. but certainly hope I was able to help in a small way.

Cheers! 

Dhananjay

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.