Original Post Date: Friday, February 24, 2012

When software developers first starting writing programs for the Windows ® Operating System it wasn’t pretty.   Everything had to be done from scratch – there was no easy access to tools, libraries and drivers to facilitate development.  A similar tale can be told by the earliest web site developers.   A web application framework is an SDK (Software Development Kit) for web developers.  It is intended to support the development of web services, web applications and dynamic websites.  The framework is intended to increase web development productivity by offering libraries of functionality common to many web applications.  In the early days web development was done in HTML with CGI (Common Gateway Interface) making it possible to create dynamic content.  As websites became more pervasive, in fact in many cases they quickly became critical to the success of a business, new languages were developed specifically for web development such as PHP and Cold Fusion.

Web application frameworks are merely the next generation of web development.  Instead of being just a compiler, the web application framework gathers libraries of functionality useful for web development into a single environment – offering developers one stop shopping for the tools they need to develop applications for the web.  There are many different web application frameworks for many different web development languages.  Some examples include JavaEE, Open ACS, Catalyst, Ruby On Rails and Symfony

Web application frameworks offer a variety of features intended to increase productivity of the web application development process.  Not all frameworks contain all of these features – [3] contains a fairly comprehensive analysis of which frameworks offer which features for many popular programming languages.  The most common features of a web application framework include:


  •  Caching – frameworks allow developers to build speed into their web applications by storing copies of frequently accessed data to speed up refreshes.  This can make the website appear to load more quickly, while also reducing bandwidth and load.
  •  Security – frameworks offer tools to address user authorization and authentication along with  the ability to restrict access based on established criteria
  •  Templating – frameworks offer the developer the ability to create templates for their dynamic content.  The templates can then be used by multiple data sets.
  •  Data persistence – frameworks often contain a set of features to support persistence such as consistent Application Programming Interface(API) for accessing data from multiple storage system, automated storage and retrieval of data objects, data integrity checks, and SQL support.
  •  URL mapping – frameworks often provide a mechanism to map URLs from a clean and uncomplicated looking url to one that leads to the right place.
  •  Administrative tools such as common interface elements to form fields such as a date field with calendar and automatic configuration which eases the storage and retrieval of data objects from the database

Web applications frameworks are intended to increase the productivity of those folks who build websites.  Other potential benefits include: 

  •  Increased abstraction - business logic can be separated from implementation details
  •  Increased time to market and development productivity
  •  Increased reused
  •  Enforced best practices
  •  Ease transition from one platform to another

Some or all of these features and benefits are realizable depending on the specific web application framework employed.  As with all advances in technology, there is necessarily an investment in not only the technology but more importantly in training and education.  It is not realistic to expect immediate payoff until developers move down the learning curve with the technology.

As always, it is wise to remember the lessons of Fred Bookes in "The Mythical Man Month" that there are no silver bullets.  While Web Application Frameworks features of enhanced tools and libraries will increase the productivity with which code is delivered, these remain the accidental complexities of software engineering; the essential complexity of crafting a software solution to a problem is not going away.