Large sites powered by Java web frameworks and Tiles + WebWork
Yesterday, I delivered a Comparing Web Frameworks seminar that included Struts, Spring MVC, WebWork, JSF and Tapestry. This was for a client that's in the process of re-working an extremely high traffic site (50+ servers currently) from Servlets + JSPs to a web framework. They love the idea of Tiles (and know how to use it) as well as plan on integrating many Ajax features.
We quickly eliminated Struts because of ActionForms since they're planning on moving to persisted POJOs. Spring MVC and JSF had a notch up because they work with Tiles. However, JSF has reportedly had scalability issues. Furthermore, it's the most-complained about framework out there. One attendee noted how she was impressed with the low number of complaints about WebWork.
WebWork doesn't integrate with Tiles (but probably will soon) and they were concerned about SiteMesh performance with large pages (1MB + of text). While I believe SiteMesh can do almost everything that Tiles can do, I also agree that Tiles is a good technology. Furthermore, the "advanced features" of SiteMesh to be largely undocumented, which can be a barrier for adopting it as a "development standard".
Spring MVC was dinged because it doesn't have built-in Ajax support like WebWork and Tapestry (via Tacos). However, it's support for Tiles might just make it the one they choose - especially since they plan on using Spring in the middle-tier/backend. While they loved the idea of Tapestry, they didn't think they could afford the learning curve and I don't know enough about the @Border component to verify if it has all of Tile's functionality.
One interesting thing that came up was the list of high-volume sites using these various web frameworks. Tapestry seems to come out on top when you look at the list of well-known sites. However, I'm sure there are plenty I don't know about. If you know of high-volume sites using any of these five frameworks, please let me know. I'm looking for major sites with millions of hits per day. Here's my current list (extra points for fancy templating with SiteMesh/Tiles + Ajax widgets):
- Struts: None that I know of off the top of my head, but I'm sure there are plenty.
- Spring MVC: None that I know of.
- WebWork: JavaBlogs (don't know if this exactly qualifies as high-volume, there aren't that many Java developers). WebWork also has a few products based on it (i.e. Jive, JIRA, Confluence), but these companies also employ WebWork committers.
- JSF: None that I know of.
- Tapestry: NHL.com, TheServerSide.com (similar comments to JavaBlogs) and Zillow.com.
Thanks!
Related: How To use Tiles like SiteMesh and SourceLab's Web application technologies comparison (with performance numbers!).
Update: FWIW, I figured out How to use Tiles with WebWork and wrote a short howto for doing dependency injection with SiteMesh.
Posted by Jeff Sheets on February 15, 2006 at 07:17 PM MST #
Posted by Patrick Lightbody on February 15, 2006 at 07:31 PM MST #
Posted by Bob Hardner on February 15, 2006 at 07:52 PM MST #
Posted by Jason Carreira on February 15, 2006 at 08:23 PM MST #
I tried to get WebWork + Tiles working (using a nightly build), but no dice. The TilesFilter doesn't seem to load the definitions, so I tried using both the TilesServlet and the TilesFilter. TilesFilter is mapped to *.tile and all my view names in xwork.xml map to <em>viewname</em>.tile. I'm guessing the problem is WebWork communicating the name of the tiles definition to the filter.
Posted by Matt Raible on February 15, 2006 at 08:34 PM MST #
Posted by Matt Lewis on February 15, 2006 at 10:28 PM MST #
Posted by AJ on February 16, 2006 at 12:57 AM MST #
Posted by CB on February 16, 2006 at 01:43 AM MST #
Posted by Dan on February 16, 2006 at 01:58 AM MST #
Posted by Todd Huss on February 16, 2006 at 02:24 AM MST #
Posted by Matt Raible on February 16, 2006 at 08:12 AM MST #
Posted by Flan on February 16, 2006 at 11:04 AM MST #
Posted by Richard on February 16, 2006 at 01:54 PM MST #
Posted by Jacob on February 16, 2006 at 02:31 PM MST #
Posted by Rickard on February 16, 2006 at 02:57 PM MST #
Posted by Vic on February 16, 2006 at 03:30 PM MST #
Posted by 144.9.8.21 on February 16, 2006 at 04:01 PM MST #
The few other factors were good client-side validation and Ajax support. In other words, is it possible to configure client-side validation or work with Dojo w/o extra work. JSF doesn't have this, and if they do, it's not part of any open source implementations that I know of. I still find it surprising that this isn't part of the spec, but it probably will be soon with all the Ajax stuff going on. In addition, Ajax seems a bit harder with JSF because you have to talk to the component tree instead of merely manipulating the DOM. That being said, JSF is excellent at managing the state of different components and allowing small portions of your page to be independent, yet part of the whole page. This was definitely discussed and there were some big ASP.NET and JSF fans in the room. The consensus seemed to be that while JSF solved the problem, so did Ajax + request-based frameworks.
As far as WebWork *and* JSF - both could use a few more "non-involved" fans. Most of the big companies I know using WebWork have a WebWork committer on staff. And the JSF fans I know are committers (spec, ADF Faces, MyFaces) or they stand to directly profit from promoting it (books, training, etc.). I'm not saying this is a bad thing - companies that support committers are using open source wisely. It'd just be more believable if it had more <em>grass-roots</em> fans.
IMO, there's not a single framework that is best for *everything*. Instead, the needs for each application have to be evaluated, and then a small prototype should be done in 2-3 frameworks. If performance is a concern, these prototypes should be performance testing with tools like Grinder like there's no tomorrow.
Posted by Matt Raible on February 16, 2006 at 04:06 PM MST #
Posted by Matt Raible on February 16, 2006 at 04:08 PM MST #
Posted by Jacob on February 16, 2006 at 04:20 PM MST #
I also think that http://www.shopping.com uses tapestry for a lot of their functionality and supposedly will be using it for all new functionality.
Believe that http://ebay.com also uses tapestry for some portions.
I have no idea what google is doing with tapestry, but they're hiring tapestry developers http://www.google.com.
I'm not sure which portion of the Border component you are referring to, but I know that the Shell component hasn't failed to provide all the functionality I need so far.
On a side note, I think the next release of tapestry - 4.1 - will provide a somewhat unique level of built-in AJAX integration not seen by myself in any java based web framework thus far. I'm currently still working on it but feel that if nothing else, what we're going to be able to do with AJAX in tapestry should make it fairly clear why it's such an outstanding concept.
Posted by Jesse Kuhnert on February 16, 2006 at 06:05 PM MST #
Posted by Abdullah Jibaly on February 16, 2006 at 06:54 PM MST #
Posted by Vic on February 16, 2006 at 10:54 PM MST #
Posted by Edward Smithee on February 17, 2006 at 02:12 PM MST #
Posted by George Franciscus on February 17, 2006 at 08:01 PM MST #
Posted by td on February 18, 2006 at 06:12 PM MST #
Matt, short of building a small prototype in 2-3 frameworks, can you offer some rules of thumb for helping decide which framework might be most applicable to a certain application?
For example, do you see component-based frameworks and WebMVC action frameworks as being suitable for different classes of applications?
Thanks
Posted by Allen Halsey on February 23, 2006 at 03:35 AM MST #
Posted by Matt Raible on February 23, 2006 at 04:07 AM MST #
I did a Google search for our 'Where's the bottleneck...' presentation and ended up in the page.
So, answering Jacob's question ( ' I really wish I could find the slides for J1 2005's'), you can find the slides at one of my sites:
http://www.falcon.inf.br/java
Please notice that this site is a mess at the moment, as I'm playing around with Google tools. Once I feel comfortable to create a 'half-decent-ass' web site, I will migrate this stuff to http://felipeal.net
Regards,
-- Felipe
Posted by Felipe Leme on December 08, 2006 at 06:22 PM MST #
Posted by Ben on April 01, 2008 at 11:20 AM MDT #