by Chris Poteet
Software frameworks provide developers with powerful tools to develop more flexible and less error-prone applications in a more effective way. Software frameworks often help expedite the development process by providing necessary functionality “out of the box”. Such things include user/role management, data access, caching, and much more. These frameworks aid in helping you focus on the more important details of design and even project management by alleviating the need to reinvent the wheel for common development needs.
There are frameworks that cover specific areas of application development such as JavaScript/CSS frameworks that target the presentation (view) layer of the application, and there are others that handle more of the dynamic aspects of the application. Some include both!
In the following we present an overview of most popular web application frameworks; we cover both server-side (PHP, Java, C#, Ruby) and client-side approaches (JavaScript, CSS).
You can also take a look at
Before diving in, it’s necessary to first grasp the idea behind one of the fundamental concepts for web-applications. In the context of frameworks the model-view-controller architecture is particularly important, as this model is typical for most web-applications and is the definitive approach to choose once developing a new web-project.
Model-View-Controller (MVC) Architecture
CodeIgniter has probably the best definition of each the model, view, and controller.
MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.
- The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your your database.
- The View is the information that is being presented to a user.
- The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.

The Model-View-Controller Architecture.
There is also the Model-View-Presenter (MVP) model, and also the N-Tier Architecture approach amongst others. The difference between MVC and MVP in particular revolve around how data is passed from the model back to the view. In MVC it goes from the model to the view while MVP goes back through the presenter when handing data back to the view.
PHP
- CakePHP is a PHP framework that works on the MVC architecture and offers caching, application scaffolding, validation of model data and even a presentation API. One of the most popular PHP frameworks.
- CodeIgniter is a PHP framework that also uses the MVC platform, has classes for data access, e-mail, FTP, and XML-RPC. Also, CodeIgniter has an exciting community and thorough documentation to get you started.
- The Zend Framework is the self-proclaimed “leading open-source PHP framework.” Services included in the API include Ajax (JSON), search, syndication, web services, and a fully object oriented PHP class library.
Further PHP Frameworks
- Symfony – A feature packed framework, but has a reputation for being server-intensive.
- Prado – A component framework for PHP5 that has similar event based web apps similar to ASP.NET.
- BareBones – a one-file, no-configuration, MVC framework for PHP5.
Java
- Spring Framework is a MVC Java framework that can run on any J2EE server. The framework has a multi-layered architecture with an extensive API and supporting documentation.
- The Google Web Toolkit comes from the granddaddy of all Java development shops-Google. They have released their framework as open-source software. Functionality includes extensive interaction with Ajax, and you can simply write your front end in Java and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML. Also includes interaction with the newly released Google Gears for creating applications available offline.
- Apache Cocoon framework is a Java framework built around the concepts of separation of concerns and component-based development. There is a strong emphasis on working with XML and serializing into other portable formats.
Further Java Frameworks
- Aranea – a MVC framework that includes a web integration layer.
- AppFuse – a framework that is a self-described “project skeleton” similar to new projects created in an IDE.
C#
- The .NET Framework is an application framework taking application development by storm with its impressive collection of functionality. The great thing about the .NET framework is that you can build it around the MVC framework if you wish (there is an official Microsoft implementation coming out), or you can create your own architecture.The .NET framework is available out of the box for C# and Visual Basic, but there are extensions available to allow languages like PHP to access and utilize the framework. Look out for some new features including the Windows Workflow Foundation for building powerful business solutions and Silverlight which is set up to be a direct competitor to Flash.
- MonoRail is a MVC framework where the controllers handle solely application flow, the models represent the data, and the view is just about presentation logic. If your project depends too much on third party Web controls or if your IT team skill set is totally centered around WebForms, MonoRail would not be a good choice.
Ruby
- Ruby on Rails has taken the programming world by storm by popularizing the MVC approach to application development. The framework came out the work of 37Signals on their popular Basecamp application. There is also a great emphasis on agile development to “release early and release often.
Further Ruby Frameworks
- Nitro – a Ruby framework, but at the current time it lacks substantial documentation for their API.
- Camping is a micro-framework weighing 4Kb.
- Ramaze has principles on keeping things simple, modular design, and minimal dependencies with an impressive source browser for documentation.
Python
- Gluon comes from the billows of DePaul University designed for agile development and secure database-driven web-based applications.
- Django is the ever popular Python framework that has an impressive template system, caching, dynamic database access API, and more. Many high-profile sites use it including The Washington Post and Pownce.
- TurboGears is a framework that includes a templating system, access the database with obscuring the database, and it uses MochiKit to provide a JavaScript API.
Client-Side Frameworks
Client-side frameworks are frameworks that specifically target the user interface/view/presentation layer. Recently both JavaScript and CSS frameworks have started to enter the mainstream.
While these frameworks might provide the Ajax-functionality, they are not meant to actually complete the data transaction and manipulation. A client-side framework is usually a smaller subset in a larger application framework.
JavaScript
- Prototype is a JavaScript framework that serves as a foundation for other JavaScript frameworks. Don’t be fooled however, as Prototype can stand on its own.
- script.aculo.us is built on the Prototype framework and has found its way into many high-profile sites including Digg, Apple, and Basecamp. The documentation is clear, and has an easy learning curve. However, compared to other JavaScript frameworks it is larger in size.
- Mootools is a compact, modular, object-oriented JavaScript framework with impressive effects and Ajax handling. The framework is for advanced users as the learning curve is rather steep.
- jQuery continues to rise in popularity due to its extensive API and active development. jQuery is a great balance of complexity and functionality.
- For ASP.NET developers you can’t beat the ASP.NET AJAX framework which is built into the .NET Framework as of 3.5, but you can also download it for previous versions. The amount of documentation, examples, and community continues to increase. There are controls that you can simply drag-and-drop an update panel on an ASPX page and process Ajax!
Further JavaScript Frameworks
- The Yahoo! User Interface Library – Yahoo! released its impressed JavaScript library with incredible amounts of documentation.
- Ext JS – Originally built as an add-on to the YUI it can now extend Prototype and jQuery. Includes an impress interface.
- Dojo is a small library focused on interpreter independence and small core size.
- MochiKit – A framework that has focus on scripting language standards including ECMAScript and the W3C DOM.
CSS
CSS frameworks have grown in popularity recently, but there are many developers [ 1, 2 ] who do not think it is an ideal solution for presentation design but not without a rebuttal.
Considerations When Choosing
There are a couple of things to keep in mind when choosing a framework.
- Pick a framework that has extensive and accurate documentation. It is invaluable as you attempt to implement the technology.
- The framework should provide just that — a framework — that can fit your particular design methodology.
- Be sure to ask other developers about their experiences with frameworks in your chosen programming language.
- The larger the community the larger the odds that you will be able to find help when you need it, and it will continue to be improved and developed.
Chris Poteet is a WordPress/Web Designer consultant specializing in user interface, accessibility, usability, web standards, and content management. His main site is Siolon.com.