I’m a software engineer. I got my first computer when I was 7 and have loved programming ever since. I’ve been developing corporate web applications since 1999, mostly using Java based technologies, but I like to try and explore a little bit of everything interesting going around the web/mobile technology scene. I like hard rock, RPG video games (all flavors), science fiction and fantasy books, and almost all movies (unless they star Sandra Bullock or Hugh Grant). Ricardo is a DZone MVB and is not an employee of DZone and has posted 16 posts at DZone. You can read more from them at their website. View Full User Profile

Choosing a Web Development Framework: Options and Criteria

05.14.2012
| 31201 views |
  • submit to reddit

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.

Published at DZone with permission of Ricardo Zuasti, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Lajos Papp replied on Tue, 2012/05/15 - 6:36am

Why don't you consider JSF? For a long time (before JSF 2.0) i was also outscoping it, but checkout the new ajaxified shiny implementations such as primefaces, and you might quickly change your mind.

Spring roo also support JSF, so initial setup of a CRUD JSF app is like 10 minutes.

Ravi Hasija replied on Tue, 2012/05/15 - 5:04pm

I know you mentioned Java based platform. If you are open to consider JVM based languages, then Grails is AWESOME!

Pat Mccabe replied on Tue, 2012/05/15 - 6:30pm

I agree with Lajos that JSF has come a long way since 1.0, and it is definately something that is worth considering.  I'll also second his recommendation of PrimeFaces, which IMO is probably the best JSF component library out there.   Regardless, I am looking forward to your evaluations of each of the frameworks you have chosen. 


Hendrik Strydom replied on Tue, 2012/05/15 - 9:16pm

I agree , don't overlook JSF 2 and Primefaces which , in my opinion , is the best component library available today.

Otengi Miloskov replied on Tue, 2012/05/15 - 10:16pm

I will give you my opinion based on my experience so far.

Between Python and Ruby is a no brainer to choose a framework. If you like Ruby language and Ruby community go for Rails, If you like more Python the language and Python community go for Django. Personally I like more Python language but both communities are great. 

About Java is more complex, but the first question you have to ask your self is you want a component based freamework or a Action MVC share nothing.

Component Based go for JSF2/Primefaces it is the best. I tested Tapestry and Wicked are great but the support, mind share, tools etc are to small compared to JSF2.

Action Framework share nothing  I will go with 2 choices, Spring MVC(Roo I see it as it is just a boostrap tool nothing more), Play 2 Framework(This specially using it with Scala Rocks, Java version is ok).

Now between Python/Ruby vs Java well if you like type safety, always compile your code etc go for Java, If you are strict on your test and unit test and dont mind compilers well Python or Ruby is fine.

It is possible to create a enterprise huge project in Python and Scales same as with Java but remember choose the right tool for the job not always Python is the silver bullet or Java.

Me I use both actually I use 3 options right now.

Java with Spring MVC, Python with Django, Javascript with Node.js/Express.js.

thats my 2c.

 

 

Otengi Miloskov replied on Tue, 2012/05/15 - 10:30pm

By the way GWT is just a front end Toolkit, Think as it is like a jQuery but for Java, I will not count it as a framework. You need to put pieces together on the server side. If you go with GWT I will use on the Server Side Spring Framework.

Shishir Divkar replied on Tue, 2012/05/15 - 11:53pm

Here's is a very good comparision by Matt Raible:  http://www.slideshare.net/mraible/comparing-jvm-web-frameworks. I found it very useful in evaluatin frameworks. Hope it helps. :-)

Actual ratings for frameworks are on google docs : https://spreadsheets.google.com/pub?key=0AtkkDCT2WDMXdC1HOEtnUHpCejJMbUhGeGJWUmh5dVE&hl=en&output=html 

Mikael Bellec replied on Wed, 2012/05/16 - 6:33am

I would have included Play! 1 as Play 2 is a complete different framework. PLay 1 is the Java version of RoR and still great to develop with!

Jesse Long replied on Tue, 2012/05/22 - 2:41am

Is there a reason you are not evaluating Wicket?

Pavel Nunez replied on Thu, 2012/09/27 - 6:32pm

If you are talking about Web Frameworks, why did you exclude de PHP platform, just a few examples: 

 

- Zend Framework

- CakePHP

- Symfony

- CodeIgniter

The first two are, by far, the best PHP frameworks I've use, Symfony is kind of a nightmare for new starters because of the configuration files .yml and other things, CodeIgniter is a microframework that helps adopt best practices and design patterns in your PHP projects, without any loose of flexibility.

 

Thanks 

Pavel Nunez replied on Thu, 2012/09/27 - 8:33pm in response to: Jesse Long

Thats a good question.... I forgot it

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.