Puneet has posted 2 posts at DZone. You can read more from them at their website. View Full User Profile

Important Factors – Evaluation of Java Based Web Development Frameworks

06.04.2010
| 8287 views |
  • submit to reddit

With so many Java based web development frameworks available today, which one to select and which one not to, can be really tough at times. Even though there are well established frameworks available today, there can be some specific requirements which can make us feel that the chosen framework was not the best one.

I have tried to come up with factors that come into play while deciding or locking upon a given web framework.

Factors

Control over customization of URLs
No website is complete in itself if that is not listed on the first few pages of the search engine. URLs play a very important role in determining your site's rank on the search engine. Framework should ideally support meaningful urls. For e.g. no long parameter names and no long parameter values. Also, url should mean the content it is pointing to.  In cases where we want the website to have search-engine friendly URLs, a great lot of control is needed on the URLs of the website and frameworks totally control the way you define them. Framework that doesn't give you (as a developer) a good control over the customization of URLs of the website is not worth considering for development.

Configuration
A good number of java based frameworks are based on MVC pattern. Some of these frameworks require considerable plumbing for tying up varous layers / components together. Configuration can take a toll on the development / maintenance time especially for a small websites. For example, for adding a new error message can sometimes impact 3-4 different files in some frameworks. Conventions definitely help in such cases. Not to forget, for large websites, configuration can prove useful when compared with convention, because it gives you a good control when debugging the various layers because there is no magic happening behind the scenes ( and that's what you configured).

Convention
It's complementary of configuration. For small websites, convention can help you speed up the development. Whereas it can be of little use for large websites, because conventions can give you a impression of magic happening behind the scenes which can seriously impact the debugging of issues.

Support for implementing cross cutting concerns
Analyzing events, tracking user behaviour, securing certain parts of the website, playing around with URLs are some of the features that are much needed in any website today and especially in branding websites. Implementation of such requirements in a website can easily lead to a cluttered, clumsy and redundant code without the support of interception of http requests.  Any frameworks that provides good support for intercepting http requests can help in writing a more maintainable code.

IDE Support
Ideally speaking, no framework should ever be selected on the basis of its IDE support. But that's practically false. IDE support for a framework can improve the developer productivity to a good extent.

Active Development Community
Framework development teams sometimes have a good backup to keep up the good work whereas sometimes they don't. There are frameworks developed by a one-man-army as well. If the framework development team is not that active, then it may lead to a situation where the framework is not able to keep up the pace and hence there is no support of much needed features as the website grows.  To avoid such situations, it is must that framework is backed by an active development team.

Integration with Template engine
Instead of defining your own view layer in jsp / html, it is helpful sometimes to use a template engine such as free marker, velocity. However, a translation layer is needed in between to make the model accessible to the template engines. Frameworks that has these translation layer readily available can be helpful to leverage the benefits of the template engine quickly.

Integration with CMS
CMS plays a very important role in managing the content of a website. Any framework that supports the integration with CMS or makes the integration easy can be a real boost in development.

Tag libraries
Formatting dates, formatting numbers, pagination and various other concerns are almost common in any website today. Some frameworks have tag libraries for handling such concerns effectively in the view layer.

Support for Web Services
Web services can be useful in many cases such as integration with third parties, exposing the functionality as a web service etc. Frameworks that can handle repetitive or common concerns and other infrastructural issues in the implementation of web services efficiently can have  a upper hand on other frameworks that lack that support.

Support for ORM framework
There is a lot of boilerplate code that comes into picture while implementing data access layer for any website. Even though this boiler plate code can be implemented effectively so as to avoid redundancy, but there's no point in re-inventing the wheel. Some frameworks do have support for integrating with ORM framework effectively.

Testability
Frameworks should not only ease out the implementation but also ease out the testability of that implementation. Frameworks which puts the testability of the website at risk is not worth considering.

Support for Localization and Internationalization
To make your website accessible to as many users as possible, localization and internationalization are now inevitable features for any website. And frameworks do play an important role in implementing them effectively.

Published at DZone with permission of its author, Puneet Monga.

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

Comments

Nicolas Frankel replied on Fri, 2010/06/04 - 5:45am

Hi,

Interesting article but it seems to me that you miss some important point:

  • you constantly refer to website. The first thing to ask yourself is what you develop is mainly site or mainly application. In the case of an application, customization of URL or CMS integration are no factor
  • what about page flow vs components? In components frameworks, what it the relevance of templates?
  • etc.

IMHO, forgetting the previous points, whether intentionally or not, has potential to lead to incorrect choices.

Cheers!

Puneet Monga replied on Fri, 2010/06/04 - 6:33am in response to: Nicolas Frankel

Hi Nicolas,

 Thanks for the reply.

 I will update the article to make it more clear.

Puneet Monga

Senthil Balakrishnan replied on Sun, 2010/06/06 - 11:19am

"Integration with CMS"

Most of the CMS comes with WCM(Web Content Management), Why yet another framework when decided to go for CMS...

Btw, Nice checklist for choosing the right web framework.

Sen

 

Naveenr Ramaswamy replied on Tue, 2010/06/08 - 12:14pm

It would be useful if you could actually compare some of the existing frameworks and see the ones that satisfy the above list.

It sure would be a good matrix to have.

 

 

Puneet Monga replied on Thu, 2010/06/10 - 10:00am in response to: Naveenr Ramaswamy

I am working on it. I will post a new article soon in that regard.

Nikolay Skachkov replied on Fri, 2010/06/25 - 6:23pm

This may be a good start for a good article. But some things have yet to be clarified.

"URLs play a very important role in determining your site's rank on the search engine". Not quite clear how. There are tons of highly ranked sites with basic URL only (using HTTP POST).

Next. What do you mean by "Support for ORM framework"? Why Web Framework should support ORM framework? ORM Frameworks constitute an independent and pretty bug class of software frameworks that may be used not necessary in developmet of Web applications. What is there Web specific in ORM-s?

That is true that in books on Web Frameworks you usually read a big chapter on ORM. But that is a trick - in addition to Web Framework the authors in fact describe (and try to cell) a whole Web application architecture  (most probably originating from those authors' own practical experience, but that doesn't change anything). ORM may be a part of anything, not necessary of a Web application. By the way many successful applications do not use any ORM and I bet they work only faster.

"Support for Web Services". Why not for SMTP?

"Support for implementing cross cutting concerns". Again - what should support what? IHMO Web Framework is supported by programming language (say Java) and some quite non-Web-specific logging framework (like Log4J). And what is it - "code without the support of interception of http requests"? You really mean an HTTP server that does not intersept HTTP requests?

In other words a Web Framework is not equal to all the CS. It is even less than a Web Application Architecture.

You write that you will continue work on this article. I will be glad to read the next variant.

Puneet Monga replied on Sat, 2010/06/26 - 4:15am in response to: Nikolay Skachkov

 

Go through this link http://www.clickz.com/3622997. Go through the section called ""Dynamic URLs and SEO"" hope this explains how URLs plays a important role in determing page rank.

 

 

Nikolay Skachkov replied on Sun, 2010/06/27 - 2:39am in response to: Naveenr Ramaswamy

To Naveenr Ramaswamy:

 

There were several serious attempts to build such a matrix. A great one (attempt) is here: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks.

One problem is that if the matrix is open for editing competitors often anonymously remove each other even without comments.

Another problem is that when the matrix is closed for editing it often turns out that it is in the hands of someone related to only one development team. Of course, in this case the product of that team is absolutely the best.

How can we get an unbiassed picture? 

Comment viewing options

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