I've been a zone leader with DZone since 2008, and I'm crazy about community. Every day I get to work with the best that JavaScript, HTML5, Android and iOS has to offer, creating apps that truly make at difference, as principal front-end architect at Avego. James is a DZone Zone Leader and has posted 639 posts at DZone. You can read more from them at their website. View Full User Profile

JavaLobby Web Framework Comparison Guide: A Call To Arms

01.19.2009
| 17174 views |
  • submit to reddit

Over the next few months here at JavaLobby and Web Builder Zone, we plan to provide the most comprehensive guide to the Java Web Frameworks available. The idea for this came about when I, a desktop developer, decided that I wanted to write a web application using one of the Java-based web frameworks. It became apparent that we have a lot of choice (maybe too much!) and that there is no single source of comparison for these frameworks.

This effort will involve a lot of community involvement and hard work. I'd like to go through the main points of this drive here.

  • We've all heard, and read, the heated discussions that happen centered around "why do you used framework X when framework Y is so much better and newer". There's a common reason for this: the developer works for a company who have mandated that this is the technology to be used. It probably happens even more in the current economy, where there's no time for research or changing frameworks.
    By providing an informed comparison between all frameworks,  we do the research for these companies.
  • By having a benchmark, perhaps we can ensure higher quality of web frameworks. I don't mean to say here that frameworks are unstable or written badly. But with a benchmark to aim for, new (and current) framework developers have something to test against - this can't be a bad thing.
  • End the search for people like me! When someone new to (or rusty on) web development needs to find a framework, they can look at the framework comparison to find the best fit for their project.

The Process Behind It All  

I have a process in my head for how this should work, but I need you, the community, to help me fine-tune and agree on this. Here's the plan:

  1. Volunteers. The first thing that we need are people who can put the time into evaluating one web framework. When you consider the amount out there, you can see how many volunteers need to get involved! You can volunteer to this effort anytime - I guess the easiest way is to indicate your interest in the comments thread in this article. If you have a particular framework you are interested in evaluating, let us know. 
  2. A List Of Frameworks. Once we have a list of volunteers, we need to decide what we'll get them to evaluate. Over the next few days I'll compile a list of the frameworks that are out there and publish them here. Where possible we'll put volunteers names against each framework and let you know if we need more people.
  3. A Reference Application. To carry out a complete and fair evaluation, we need to have the same reference application to be implemented in each framework. I plan to have the reference application requirements defined by the end of this week.
  4. An Evaluation Form/Article Once the reference application is implemented, an article will be provided for each of the frameworks, describing the experiences, the positives and the negatives, with an initial score for that framework. We will provide a template for each of the volunteers to fill in at the end of their evaluation.
  5. Final Evaluation All the evaluations will go through a panel of the editors here at DZone, before we start publishing them. Results and reference applications will be freely available to all.

We're looking for your help in evaluating these frameworks, as well as looking for your feedback on how we should run this comparison. Perhaps you have some ideas of what the reference application should include? Or maybe you want to make sure a certain framework goes through the evaluation process. Just let us know, and together we can make this a successful project.

Comments

Mahesh Lavannis replied on Mon, 2009/01/26 - 1:06am

As an aside - the reason I speak about integration is that for a lot of professionals I know, having to integrate various frameworks themselves is a turn-off. For one, it takes expertise and time - and that is effort which does not move the project forward, even as it is a drain on resources.

For many .Net is a choice for precisely the reason that everything comes nicely packaged.

And so I look forward to more fully integrated solutions from the Java community!

Bruno Vernay replied on Mon, 2009/01/26 - 6:03am

It is a good idea to gather information about web framework and give users a overview of what is available.

The number of solution available can be more frightening than appealing.

But:

  • beware the number of comments ! everybody has an opinion (if not a religion) and it becomes unmanageable. Just see the comments on this very article !
  • beware the benchmark: it will only bring flame ware !  no useful info.

  I started a google doc. It is a work in progress, but there are many reference: http://docs.google.com/View?docid=ajgdx7ccvkxg_50ccp25f&pageview=1&hgd=1&hl=en

 It is surprising that a whole community site didn't emerge to help gathering and explaining the available solutions. 

Mahesh Lavannis replied on Mon, 2009/01/26 - 1:10pm

I think this article has highlighted some deeper unresolved issues.The main one, looks like, is that there is no concensus on what makes a framework 'good'/'better'.

I think a way forward can be a 'sister' article where people can freely brainstorm:Why they choose a specific framework AND a specific stack.

In other words, let everyone speak freely about their favorite framework - but also provide reasons for the favoritism. That way, it might be possible to see the top 5 reasons people choose/reject frameworks - it can possibly lay the basis for deciding what makes a framework better.

Bruno Vernay replied on Tue, 2009/01/27 - 3:51am

Your asking for trouble.

There is no "better" framework.  There are different kind of problem and context.

The best we could do is to explain and provide an overview of differences.

Fab Mars replied on Tue, 2009/01/27 - 5:28am

This conversation is boring, typically déjà-vu at work when (at least) 2 architects (so so they think) work on the same project.

If you look at James' initial article, that was quite an open one:
- ...they can look at the framework comparison to find the best fit for their project
- We're looking for your help in evaluating these frameworks, [...] and together we can make this a successful project.

He already knew and there's not a "better" framework. This conversation was kinda expected, as all of us are in favour of some (assembly of) framework in particular because we've all worked on it or tested it and got to know it very deeply. That's normal, and that's normal to talk about it. And most of all, that makes us the best persons to highlight each framework to the best of its possibilities.

 

However, instead of volunteering, taking some hindsight and working to that project together, all I see now is a dead-end. I don't think James looked for low-grade philosphers. Right, using one's keyboard to do the actual job is surely harder and longer than twisting and turning around the subject, and trying to elaborate on the work to do in a telescopic way just to pretend to look smarter. Brilliant, just like at work. Distressing.

 

Why not just start over a new leaf, and already consolidate what was said here in terms of:
- requirements
- features to showcase
- assembly of frameworks
- planning
- etc ?

All we need is 3 shared XLS sheets on google docs and a few people ready to code. Anyone?

Mahesh Lavannis replied on Tue, 2009/01/27 - 9:44am

@fabmars

You are simplifying the problem. I think its clear there is no 'better' framework, no matter how many coders you find(!) Like you point out, there is no single set of requirements.

In light of this, a possible way forward can be to find out the "gaussian 3-sigma" (aka top-10) requirements from a frameworks. If that is done, it will give a basis on which to choose a framework (even if it is not the 'best' one)

For example:

1. If "Standard Based" is an important requirement for a (government?!) project, it eliminates all except EJB based frameworks (not that EJB is the best).

2. If the develoment team comes from RoR, then Grails is probably their best way forward.

3. If someone is already heavily invested in Spring, then they should probably go with Wicket or Tapestry.

These are 3 examples - I am sure there more. The point being that - "How to choose which is the best framework for you based on your situation?"

 

 

 

 

Fab Mars replied on Tue, 2009/01/27 - 10:51am

I don't think this way of putting things was the point of the original author.

I understood it as a PRACTICAL exercise of evaluation: roughly several people/teams implementing a reference implementation, plus a feedback article. Then anyone can draw his own conclusions.

 

If the practical exercise has become a theoretical discussion on "How to choose which is the best framework for you based on your situation?", I do agree I'm out of scope.

Mahesh Lavannis replied on Tue, 2009/01/27 - 11:22am

The original authors point is to come up with a full matrix of framework comparison so that:

"When someone new to (or rusty on) web development needs to find a framework, they can look at the framework comparison to find the best fit for their project."

The discussions that followed have proved that it is not so easy to compare frameworks - and find the best fit - based on a feature-by-feature comparison. Simply because competitive frameworks usually offer similar features - and for a novice (or rusty), they will all "look the same".

Usually, choosing the best-fit framework will lie in reasons not specific to a feature set, but to some specific nuance of your project requirements *and* specific details of your current situation.

Therefore, to acheive the goal of the originaly author, a full matrix comparison (however elaborate) will not suffice - a guide is needed to identify the typical/special starting points and typical/special requirements.

Fab Mars replied on Tue, 2009/01/27 - 12:21pm

Nobody here said the contrary.

Oh, I understand now: when I mentioned 3 XLS sheet, you figured that I was referring to that "matrix" you're talking about!? Héhéh no, well, it wasn't to be taken so genuinly. I had already taken for granted from the initial post that the output would be a set of evaluation forms/articles and final evaluation (and that needed to be discussed and adjusted of course).

 

Anyway, I was more talking about how to fill the matrix/guide, and you were more talking about what it should contain. Great then.

I think it can only move forward now if someone dares too initiate a set of documents to define better steps 2 and 4 of James' checklist, and is ready to cope with the next discussions regarding them. Wanna join?

 

Mahesh Lavannis replied on Tue, 2009/01/27 - 3:55pm

Another 'presentation' style I am thinking of is a Flowchart, based on the "Choice by Elimination" principle.

You can locate where you in the flowchart - based on the frameworks you are implicitly/explicity comitted to. From there, you can follow your options for other frameworks, and pick your stack.

I will mock a flowchart and report back.

Raul Arabaolaza replied on Fri, 2009/01/30 - 8:00am

May i suggest a common tag for all Dzone post related to this initiative?? ie Jose Maria Arranz article about IsNat

http://java.dzone.com/articles/better-java-web-frameworks-its

or  Ibrahim Leven about requeriments

http://java.dzone.com/news/better-java-web-frameworks

 

Maybe something like  BestWebFramework? That way it would be easier to find information than searching comments.

 

Best Regards.

Ronald Miura replied on Fri, 2009/01/30 - 9:10am in response to: Mahesh Lavannis

'Elimination' would just lead one to believe that the only real choices are Seam and Grails, as you said earlier, since they are the only ones that have a single name for the full stack and are filled with all features you could possibly imagine (and in the end, Grails would be eliminated because it is not an 'standard'). The others would be something like JSF+SWF+JPA or Wicket+Spring+Hibernate, and thus wouldn't fit the 'framework' comparison.

I don't think the goal should be to choose the one 'best' framework, but to give (objective or subjective) data about a wide range of frameworks and let the decision to the reader, or else you're just doing free evangelism towards a single technology.

Mahesh Lavannis replied on Fri, 2009/01/30 - 11:21am

-Only- if you want a pre-integrated stack - then yes, you need Seam/Grails. But otherwise, you are really free to choose. Most of these frameworks provide integration libraries and documentation, as we all know.

My hope, with the (interactive) flowchart is to provide the novice(and rusty) answers to:

1. What frameworks provide similar functionality (competitors).

2. What frameworks are compatible(complements).

3. Reasons for choosing one over another, based on your requirements and commitments.

Peter Thomas replied on Fri, 2009/01/30 - 12:32pm

You may be interested in this detailed comparison of Seam / JSF vs Apache Wicket I did recently:

http://ptrthomas.wordpress.com/2009/01/14/seam-jsf-vs-wicket-performance-comparison/

I chose the Seam "hotel booking" application as the reference application - it covers security, consistent page layout, ajax, session usage, page navigation, JPA / transaction management,  form binding / validation / feedback, 'Hibernate Validator' driven validation, displaying tables of data etc.

Performance and memory usage has been compared side-by-side and there is some Ant / JMeter automation involved which you may find interesting.  Let me know if you need any more information.

 

Srinivasarao Gurram replied on Thu, 2009/05/07 - 9:46pm

Hi All, I would like to provide comments on Seam Framework. We have delivered a one project to client and we are successful. Offcourse we have'nt used the best gule that seam is built on. I would like to contribute more work on seam.

Comment viewing options

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