Frameworks Round-Up: When To Use, How To Choose?

Advertisement

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 definition3 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.

Model-View-Controller Architecture Explained4
The Model-View-Controller Architecture5.

There is also the Model-View-Presenter6 (MVP) model, and also the N-Tier Architecture7 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

  • CakePHP8 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.

    cakePHP9

  • CodeIgniter10 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.

    CodeIgniter11

  • The Zend Framework12 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.

    Zend13

Further PHP Frameworks

  • Symfony14 – A feature packed framework, but has a reputation for being server-intensive.
  • Prado15 – A component framework for PHP5 that has similar event based web apps similar to ASP.NET.
  • BareBones16 – a one-file, no-configuration, MVC framework for PHP5.

Java

  • Spring Framework17 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.

    Spring Framework18

  • The Google Web Toolkit19 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.

    Google Web Kit20

  • Apache Cocoon framework21 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.

    Apache Cocoon22

Further Java Frameworks

  • Aranea23 – a MVC framework that includes a web integration layer.
  • AppFuse24 – a framework that is a self-described “project skeleton” similar to new projects created in an IDE.

C#

  • The .NET Framework25 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 Foundation26 for building powerful business solutions and Silverlight 27which is set up to be a direct competitor to Flash.

    .NET28

  • MonoRail29 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.

    MonoRail30

Ruby

  • Ruby on Rails31 has taken the programming world by storm by popularizing the MVC approach to application development. The framework came out the work of 37Signals 32on their popular Basecamp 33application. There is also a great emphasis on agile development to “release early and release often.

    Rails34

Further Ruby Frameworks

  • Nitro35 – a Ruby framework, but at the current time it lacks substantial documentation for their API.
  • Camping36 is a micro-framework weighing 4Kb.
  • Ramaze37 has principles on keeping things simple, modular design, and minimal dependencies with an impressive source browser for documentation.

Python

  • Gluon38 comes from the billows of DePaul University designed for agile development and secure database-driven web-based applications.
  • Django39 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 Post40 and Pownce41.

    Django42

  • TurboGears43 is a framework that includes a templating system, access the database with obscuring the database, and it uses MochiKit6244 to provide a JavaScript API.

    Turbo Gears45

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

  • Prototype46 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.

    47

  • script.aculo.us48 is built on the Prototype framework and has found its way into many high-profile sites including Digg49, Apple50, and Basecamp51. The documentation is clear, and has an easy learning curve. However, compared to other JavaScript frameworks it is larger in size.

    Script.aculo.us52

  • Mootools53 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.

    54

  • jQuery55 continues to rise in popularity due to its extensive API and active development. jQuery is a great balance of complexity and functionality.

    56

  • For ASP.NET developers you can’t beat the ASP.NET AJAX57 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!

    ASP.NET58

Further JavaScript Frameworks

  • The Yahoo! User Interface Library59 – Yahoo! released its impressed JavaScript library with incredible amounts of documentation.
  • Ext JS60 – Originally built as an add-on to the YUI it can now extend Prototype and jQuery. Includes an impress interface.
  • Dojo61 is a small library focused on interpreter independence and small core size.
  • MochiKit6244 – A framework that has focus on scripting language standards including ECMAScript63 and the W3C DOM64.

CSS

CSS frameworks have grown in popularity recently, but there are many developers [ 165, 266 ] who do not think it is an ideal solution for presentation design but not without a rebuttal67.

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.

Footnotes

  1. 1 http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
  2. 2 http://www.smashingmagazine.com/2007/09/21/css-frameworks-css-reset-design-from-scratch/
  3. 3 http://codeigniter.com/user_guide/overview/mvc.html
  4. 4 http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/app-arch/app-arch2.html
  5. 5 http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/
  6. 6 http://www.mimuw.edu.pl/~sl/teaching/00_01/Delfin_EC/Overviews/ModelViewPresenter.htm
  7. 7 http://www.developerfusion.co.uk/show/3058/2/
  8. 8 http://www.cakephp.org/
  9. 9 http://www.cakephp.org/
  10. 10 http://codeigniter.com/
  11. 11 http://codeigniter.com/
  12. 12 http://framework.zend.com/
  13. 13 http://framework.zend.com/
  14. 14 http://www.symfony-project.com/
  15. 15 http://www.pradosoft.com/
  16. 16 http://code.google.com/p/barebonesmvc-php/
  17. 17 http://www.springframework.org/
  18. 18 http://framework.zend.com/
  19. 19 http://code.google.com/webtoolkit/
  20. 20 http://code.google.com/webtoolkit/
  21. 21 http://cocoon.apache.org/
  22. 22 http://cocoon.apache.org/
  23. 23 http://www.araneaframework.org/
  24. 24 http://appfuse.org/display/APF/Home
  25. 25 http://msdn2.microsoft.com/en-us/netframework/default.aspx
  26. 26 http://msdn2.microsoft.com/en-us/netframework/aa663328.aspx
  27. 27 http://silverlight.net/
  28. 28 http://msdn2.microsoft.com/en-us/netframework/default.aspx
  29. 29 http://www.castleproject.org/monorail/
  30. 30 http://www.castleproject.org/monorail/
  31. 31 http://www.rubyonrails.org/
  32. 32 http://www.basecamphq.com/
  33. 33 http://www.basecamphq.com/
  34. 34 http://www.rubyonrails.org/
  35. 35 http://www.nitroproject.org/
  36. 36 http://code.whytheluckystiff.net/camping/
  37. 37 http://ramaze.net/
  38. 38 http://mdp.cti.depaul.edu/
  39. 39 http://www.djangoproject.com/
  40. 40 http://www.washingtonpost.com/
  41. 41 http://www.pownce.com/
  42. 42 http://www.djangoproject.com/
  43. 43 http://www.turbogears.org/
  44. 44 http://www.mochikit.com/
  45. 45 http://www.turbogears.org/
  46. 46 http://www.prototypejs.org/
  47. 47 http://www.prototypejs.org/
  48. 48 http://script.aculo.us/
  49. 49 http://www.digg.com/
  50. 50 http://www.apple.com/
  51. 51 http://www.basecamphq.com/
  52. 52 http://script.aculo.us/
  53. 53 http://mootools.net/
  54. 54 http://mootools.net/
  55. 55 http://jquery.com/
  56. 56 http://jquery.com/
  57. 57 http://www.asp.net/ajax/
  58. 58 http://www.asp.net/ajax/
  59. 59 http://developer.yahoo.com/yui/
  60. 60 http://extjs.com/
  61. 61 http://dojotoolkit.org/
  62. 62 http://www.mochikit.com/
  63. 63 http://www.ecma-international.org/publications/standards/Ecma-262.htm
  64. 64 http://www.w3.org/DOM/
  65. 65 http://warpspire.com/features/css-frameworks/
  66. 66 http://mondaybynoon.com/2007/08/27/please-do-not-use-css-frameworks/
  67. 67 http://www2.jeffcroft.com/blog/2007/nov/17/whats-not-love-about-css-frameworks/
  68. 68 http://www.yaml.de/en/
  69. 69 http://www.yaml.de/en/
  70. 70 http://code.google.com/p/blueprintcss/
  71. 71 http://code.google.com/p/blueprintcss/
  72. 72 http://www.contentwithstyle.co.uk/
  73. 73 http://www.contentwithstyle.co.uk/Blog/162/hi-guys-whats-happening-with-cws/
  74. 74 http://www.contentwithstyle.co.uk/
  75. 75 http://developer.yahoo.com/yui/grids/

↑ Back to top Tweet itShare on Facebook

Chris Poteet is a senior user experience consultant working for Portal Solutions. One of his primary interests is helping others grow in their professional development.

Advertisement
  1. 1

    Nice overview, but I really think Symfony should have a bit more attention. There is a reason why yahoo picked this framework to build some of their apps, like answers, bookmarks and delicious (new one) with. As yahoo has like the most visitors in the world on its network, there should be no concern about wether this framework can handle that. Anyway I recommend anyone considering a framework to check them all out and see which one fits their needs. Java users might also want to checkout wicket (wicket.apache.org). Heard great things about it.

    0
  2. 52

    Will I troll here ? No, this one doesn’t worth it. Some more stupid bytes consumed.

    0
  3. 103

    Interesting article and great roundup of frameworks. I come from a .NET background, so was a little lost when I began doing some PHP. Have used CodeIgniter, and found it contained many things that I took for granted in ASP.NET.
    Now using Ruby on Rails. Don’t think many people will have heard of that one ;)

    0
  4. 154

    Phew…great list… though I didn’t learn the “When to use and How to choose” part :)

    0
  5. 205

    An excellent article. I really appreciate the efforts of the author.

    Thanks
    Soundararajan

    0
  6. 256

    “Dojo is a small library focused on interpreter independence and small core size. ”

    What is small? in size or in capabilities? Guess the amount of support from big corporations like IBM will not give Dojo the qualification of small, is it?

    0
  7. 307

    Hi, very interesting article. Next an article about CMF ! ??

    0
  8. 358

    This is a nice introduction for those who lived in caves. But generally this doesn’t any justice to most of the frameworks, as it’s not complete and way too short. But at least you can see the trends in this. Oh, btw, Seaside is missing.

    And to make a prediction: Python could be very interesting for the future because Google loves Python, their big community and interesting projects like IronPython for .NET and Jython for Java. It’s a strong, independant, portable and largely supported language. Just my two cents.

    0
  9. 409

    ajax.NET is no more.

    0
  10. 460

    I have been using symfony for almost a year and I would highly recommend it. The admin generator, caching and simple php templating are bliss. Tried both CI and Cake but I felt they didn’t come close. The speed issues are redundant with symfony, its even being used for delicious2.

    Surprised you put it in the ‘further’ section. But i suppose its just your view, as it doesn’t seem very objective.

    0
  11. 511

    Nice article, but you forgot the Struts2 Framework for Java! :)
    http://struts.apache.org/2.0.11/index.html

    0
  12. 562

    Nice list. I found the following listing quite helpfull, it’s a list of +- 30 AJAX frameworks

    AJAX frameworks – For newbies
    . Quite a few I am not familiar with…

    0
  13. 613

    You forgot YUI Javascript library.

    0
  14. 664

    lol… good work……. :) its sooo helpful…

    0
  15. 715

    +2 for Grails. I think Grails is mature enough to include. Use the Java platform for rock solid stability and Groovy as a great RAD development language.

    0
  16. 766

    P.S. Nice overview by the way. There’s nothing like web frameworks to stir the emotions of web developers.

    0
  17. 817

    Spanish frameworks exists too. For example Kumbia PHP Framework is a framework developed by spanish team that have many options to integrate specified frameworks ( css, javascript, … ) and is based into MVC pattern.

    SIte of Kumbia

    0
  18. 868

    Maybe you like to take a look at Java framework ztemplates.org too.

    Features:

    new and unique action processing module – clean, technology agnostic urls – fully JSP, Velocity and AJAX compatible – state-free – invisible to the web-client – convention over configuration – extensible – small and modular.

    ztemplates.org

    0
  19. 919

    Symfony is probably the most powerful framework for php. By far.
    Quite a bad writeup.

    1
  20. 970

    +1 for Stripes

    0
  21. 1021

    Nice article.. I think symfony is the most complete and have better documentation among others php framework, symfony deserve 1st place..

    1
  22. 1072

    Will all these Frameworks put the web developers out of job? Already, there has been serious talks about the economy heading for another recession…

    0
  23. 1123

    what about MochaChochaLatta framework? You didn’t include that?

    0
  24. 1174

    All you need to know is CakePHP is all you need to know =)

    Best PHP framework out there.

    -1
  25. 1225

    It’s amazing that Drupal wasn’t mentioned.

    Drupal has THE most useful community-added modules.

    No matter how fast your framework lets you code, it’s always faster if someone has already coded it for you.

    The problem with most frameworks is that they do not put enough importance on their communities. They might claim so. But they don’t walk the walk.

    0
  26. 1276

    great list, we are planning on using Django for our next project. Here we come..

    0
  27. 1327

    Symfony should be given more respect on this PHP framework list; should be highlighted with logo, if not moved to the top of the list. Rather silly that the most complete PHP framework is listed as a footnote. Please fix!

    1
  28. 1378

    you mush check Kohana Framework for PHP 5. Small footprint and based on Code Igniter.

    0
  29. 1429

    CMS’s I ever consider is: CodeIgniter, Silverstripe, ModxCMS, Symfony, CakePHP and RubyonRails. And from all, I use Modx and Silverstripe. Good luck ;)

    0
  30. 1480

    As a total new developer, I found the article very informing.. thank you..

    0
  31. 1531

    Guys remember that this article is old, but the time the author wrote this symfony wasn’t the best out there.

    Currently with the new launch Symfony 2.0 things are different, but still I agree that CodeIgniter is simpler to learn due to their video tutorials and a lot of examples.

    Symfony is harder to learn, but it’s very powerfull and robust.

    Zend is a pain in the $”#$… and it’s going to remain a pain in the #”$” for the future generations… hard to learn

    CakePHP seems to be easier… i’ve tested a few things.

    From all the above frameworks (related to php) I would choose between CodeIgniter and Symfony… but until Symfony can create some video tutorials, examples, and an easier way to provide documentation instead of showing us prices for conferences, private courses etc… CodeIgniter is my choice.

    At the moment I’m still learning Symfony.

    1
  32. 1582

    I ment to say “*By the time that the Author wrote this article”

    1
  33. 1633

    You should add Twitter Bootstrap CSS framework.

    0
  34. 1684

    How surprising it is that you have not included JSF (Java Server Faces). It’s a JEE standard. Among so many there is a new framework “Nano Web” from TechnoSeals at technoseals.com. I haven’t seen something as powerful and simple as this one. But it’s new.

    0

↑ Back to top