Related Work

Introduction

There is an incredible paucity of existing comparisons between web application frameworks on different platforms. Each framework has the usual fan base extolling its virtues, but there only seem to be two serious studies. However, there are a number of comparative reviews of Java frameworks.

Better Web App Development

NASA's Jet Propulsion Lab produced an entertaining comparison entitled Better Web App. The comparison was based on a simple time logging system, built with four different frameworks; JEE, Zope, Django and TurboGears.

There are two severe problems with NASAs comparison which prevent it being useful in the context of this study.

The Infamous .NET Pet Shop

Sun Microsystems developed the Java Pet Store as a demonstration of how applications should be designed for J2EE. It uses the example of a functioning online pet store.

To demonstrate the alleged superiority of their .NET platforms, Microsoft developed the .NET Pet Shop. They ran benchmarks, showing significantly higher performance for .NET, with much less programming effort. The original comparison seems to have disappeared from its original URL, but a related document can be found on MSDN.

The comparison unleashed a storm of protest. (Unfortunately, most of the original URLs are no longer active, so citations are lacking.) The key complaints were:

Clearly, this commercially motivated comparison cannot be used in the context of an objective study. (A response from Microsoft appeared in TechRepublic.)

Comparison of Java Web Frameworks

Comparison of Java Web Frameworks is a paper presented at the 2004 Borland Convention by Neal Ford. Ford begins by presenting Model 2, a Java implementation of MVC. He then presents the architectures of Struts, Turbine, Tapestry, WebWork, Velocity, and InternetBeans Express. Ford's paper is about architecture, with little attention is paid to the actual experience of developing a web application. Unfortunately, the frameworks reviewed are all considerably outdated, and the paper is now only of historical relevance.

Comparing Web Frameworks

Comparing Web Frameworks, by Matt Raible of Raible Designs.com, compares JavaServer Faces, Spring MVC, Stripes, Struts 2, Tapestry and Wicket. A brief list of pros and cons for each is given, followed by the sweetspots (taken from Java Web Framework Sweet Spots, see below). This is followed by a detailed evaluation, where based on the criteria of Ajax Support, Bookmarkability, Validation, Testability, Post and Redirect, Internationalization, Page Decoration, Community and Support, Tools, Marketability of Skills, and Job Count. Raible's presentation is very similar in spirit to this study, and has many more evaluation criteria, but there is no sample application.

An earlier version described the architecture of the tested frameworks, and gave some examples, but like Neal Ford's comparison, it is severely outdated and no longer relevant.

Java Web Framework Sweet Spots

Also of interest is Java Web Framework Sweet Spots, likewise by Matt Raible. This is not a comparison as such, but a series of questions sent to the authors of various frameworks. Although many of the frameworks have evolved considerably since the questionnaire was presented, the philosophies behind a framework to not change as fast as its implementation, and it still makes a very interesting read. The authors were asked about their frameworks' sweet spots, how they compare to others, and a variety of other questions.

Comparing Webapp Frameworks

Simon Brown wrote a series of blog posts on java.net comparing some Java frameworks, beginning with Comparing Webapp Frameworks. He uses plain JavaServer Pages, JavaServer Pages Standard Tag Library, Struts, Wicket, Stripes, and WebWork to implement a simple read-only blog. Like most of the Java comparisons, it is too outdated to be relevant to someone faced with the choice of what to use today. The blog application demonstrates an approach which has been superseded by REST.