posted 2-May-2012 | 21 comments | , , , , , , , , , ,

At my company we are evaluating which web development framework we will use for the next few years.

Since our last evaluation we have been using Java application servers powered by Struts 2 as MVC, Tiles as templating engine, jQuery for Javascript awesomennes, DWR for AJAX calls and MyBatis as ORM.

But we think it’s time to re-evaluate and move on to a newer/better/friendlier framework.

In this post I’ll present you with our candidates and the criteria we are evaluating each framework with. Over the next weeks I’ll post the actual evaluation of each framework and finally what our choice is and why.

Before listing the candidates I should point out some of the assumptions and restrictions we made in order to shorten the list:

  • We will evaluate only frameworks based on Ruby, Python and Java. There is nothing wrong with .Net or PHP or other technologies, but we cannot cover them all and this three are our prime candidates anyway.
  • The company has a lot of experience and accumulated knowledge on the Java platform, so you will see more Java based frameworks. Though hopefully no bias towards them.
  • All frameworks must be free to use and preferrably open source. Additionally there has to be no need to use a proprietary IDE, application server or database to develop with them and/or use them in a production environment.

The candidates

The frameworks we chose to evaluate are:

  • Play Framework 2.0
  • Ruby on Rails
  • Django
  • Google Web Toolkit
  • Spring Roo
  • Spring Framework
  • Struts 2
  • JBoss Seam

Criteria

And the criteria we will use will be composed of the following items:

  • Learning curve
  • Development performance for simple tasks
  • Development performance for complex/singular tasks
  • Dependency management
  • Code performance/security tunning capabilities
  • Platform escalation/redundancy capabilities
  • Acceptance in corporate markets
  • Complexity of developing and consuming SOAP and REST services

A score scale of bad, medium and good will be assigned to each framework in each criteria item. To asses them we will perform the following tasks using each contender:

  • Install the framework in a development workstation
  • Setup a development environment using a free IDE, application server and database
  • Develop the “Hello world” or similar sample outlined by the frameworks tutorial
  • Modify the sample app to perform a specific database query over a custom structure and display the results
  • Add a dependency to a third party library and perform a computation using it in our app
  • Develop a “Hello world” REST service
  • Consume our own service from our app

We are starting with the Play Framework 2.0, I’ll post the results as I have them.

  • Nicolás Zuasti

    Im looking forward for the next post on this topic, i think it’s one of the main problems at the moment. Not the diversity of tools available, but rather the trust we (and our clients) have in them. Personally i love Rails, and i think its gainning a lot of momentum, but things like Django or Play can’t be left untried. 

  • Bruce Phillips

    Why are you not including Java EE 6 in your list of frameworks to evaluate – I think it would help others considering moving to a new framework.  There is some push within the Java community to go with the “standard” for new development.  I don’t necessarily agree with that dogma, but would be interested in hearing your team’s opinion of Java EE 6 for web application development.

  • http://ricardozuasti.com/ Ricardo Zuasti

    I am not a fan of Java EE, but your argument is solid, we’ll consider it and I’ll add it to the list if it gets traction :)

  • http://profiles.google.com/ricdex Ricardo Avila

    You can add some more task

     - Debug the “Hello world ” app.
     - Capability to logging and recovery for exceptions.

    Nice post!

  • http://profiles.google.com/ricdex Ricardo Avila

    *from exceptions.

  • Pablo

    And grails?

  • http://www.mahmoudhossam.info Mahmoud Hossam

    What about microframeworks? Flask is really nice, and you can use it to build practically anything.

  • http://ricardozuasti.com/ Ricardo Zuasti

    There are a lot of frameworks, I know Grails has a large community but it didn’t catch our eye and we have to keep the list short. Maybe next time :)

  • http://ricardozuasti.com/ Ricardo Zuasti

    Honestly I’ve never heard of Flask, I’ll give it a look and maybe consider it for future iterations.

  • http://www.mahmoudhossam.info Mahmoud Hossam

    There’s also web.py and web2py, I’ve never tried either, but they’re pretty popular.

  • Grant Callaghan

    Maybe look at something such as backbone.js and node.js?  All your options look great and well established, but I would also be interested in some bleeding edge technologies.

  • http://twitter.com/stlecho Stefan Lecho

    Any reason(s) why you’re not evaluating a JSF-based framework ?

  • http://ricardozuasti.com/ Ricardo Zuasti

    I’m not a big JSF fan, and since I got limited time/resources we decided to stick with the initial list. I will probably do a try out of JSF and JEE 6 based frameworks later on.

  • http://maxhodges.com Max Hodges

    hello world unit testing

  • Pingback: ricardozuasti.com - Web development frameworks – part 3 : Ruby on Rails «

  • jD

    Hello Ricardo,

    You put on your shoulders a not easy task, at all…

    I want to introduce to you, my developer blog site with based on one of the candidates web frameworks.
    Spring Roo. Which is a RAD application tool based on Spring Framework.
     
    I hope you find useful visiting my developers site at http://pragmatikroo.blogspot.com/?view=timeslide

    Spring Roo is not perfect! but none framework is. They are just tool. Developers make the difference I believe.

    Thank you
    jD

  • juanxyu

    And ZK

  • wodev

    Good luck, done serious dev with many of those and played with others. You should add Grails to your list. Stick with the conventions, use the plugins, you will be pleasantly surprised.

  • Palcsó Balázs

    If you are evaluating GWT, you might want to have a look at Vaadin. You get all advantages of GWT, with less boilerplate code.

  • Pingback: t8d blog » Blog Archiv » Choosing a PHP “micro framework” part I: collecting criteria

  • miquel

    Hello Ricardo, this comparison looks very interesting.
    Are you planning to finish the analysis with the remaining frameworks? Till now I only see Play2, RoR & Django.
    Thank you for sharing this!