Jose has posted 9 posts at DZone. View Full User Profile

Web Framework Comparison - Prototyping

  • submit to reddit
Some may say I have a biased opinion on the topic at hand. True. I hereby declare that I have a clear preference for dojo+DWR+Spring MVC. But I happen to have a cruel client as well and when they asked me to prepare a comparison between several modern web frameworks they purposely left Spring behind. The aim here was to build quick prototypes of enterprise applications to test new ideas proposed by the business people. Obviously they current architecture is a little bit outdated and not suitable for the task.

They gave me a blank sheet to start although they did mention Ruby On Rails and GWT. The first one was in the origin of everything, a new board member had recently joined the company and in his former position they were using RoR for the task. The second was probably due to the fact that several projects had spawned recently with Flex+BlazeDS as the client side technology but noone was really sure if it was the right path.

Given this requirements I selected Seam, AribaWeb and Grails as well.

Obviously this is not an apples-to-apples comparison. Ariba and Seam are both full Java stacks. RoR and Grails are server side backends very oriented to relational database repositories. While GWT is a RIA tool to layout views in pure Java with some communication middleware, like say, dojo+DWR or, as already mentioned, Flex+BlazeDS could be.

But it makes for an interesting analysis anyway.

The criteria to elect the champion contain the following points:

  • Learning curve
    We are talking about three hundred programmers that haven't ever coded in anything but JSF 1.1. Let's make the jump feasible.

  • Prototyping
    How suited for the task is the project? A scripting language seems better to throw something quickly even though it's not maintainable later. On the other hand, a good IDE with good component integration, a drag'n drop visual editor and a preview screen makes stupidly easy to churn pages.

  • Productivity
    How good are the APIs and third party libraries? How much code and configuration is needed to kick start a project? How easily is to connect client and server development?

  • CRUD
    Enterprise applications today always need to interact with a persistent backend.

  • Killer features
    Selling points for the upper management. What does this framework better? Where does it really shine? What unique characteristics does it put on the table?

  • Weakness
    And what about these...?

  • Maturity, popularity
    Is it a safe choice? Will it be around in the not so distant future?

There were others but neither as interesting (licensing, standardization) nor useful to you (migration, code reusability) so these make a good list. I'm not posting the tabular data for two reasons, first it depends heavily on the weights you assign to each column and second it's subjective and I don't want to start a flame war.

But here are my personal conclussions.

In the first round both RoR and GWT fell off the roaster but for very different reasons. In the case of RoR it scored very well in every technical category but, even if I could use it, the truth is a company like this is pretty commited to Java/JEE and such a rupture means time and money. And they're both scarce this days. Maybe for highly innovative teams in core areas but not as a general purpose tool. GWT didn't fare equally well. First for a RIA builder it lacks a decent widget library. Then I like DWR remoting better(biased again?). And finally it shuns standards like a plague. With this conditioning you're better served by Flex. Any day.

The second round saw, and this was a suprise, Grails fail. Grails happens to have the same punch as Rails and then some more. A great ORM that simplifies greatly CRUD operations (nothing really can beat code generation and a, scripting capabilities, joint compilation, Spring et al. Unfortunately it lacks a matching client plug-in. Flex is not there yet and dojo is too much work for a solution specifically looking for speed of development. The syntax is concise but many times awkward and in general Groovy/Grails still lack maturity (IDE support is minimum, plug-ins quality varies greatly, too many bugs yet). I guess you get used to Java's 24 months release cycle with bullet proof quality. Groovy is different in this aspect. I have good feelings about it (more with SpringSource behind the projects) but it takes time.

The two final candidates provide the full stack, client and server. Seam is IMHO more powerful and a safer choice in general. The people behind Seam are the same that participate in several JSRs and other high profile projects like Hibernate. JBOSS has always been a very active OSS player and the quality of the components (EJB3, Richfaces, JBOSS Tools, Hibernate) is out of question. There's very little bad I can say about Ariba. It's new (very new) in the OSS space and the look&feel is not spectacular (subjective I know). That last bit was important because you want the wow factor when showing a innovative project to the final user. I have to admit that JSF weighed in favor of Seam here but in the end it was a worthy winner for us this time. Kudos to them!


Published at DZone with permission of its author, Jose Noheda.

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



Tullio Bettinazzi replied on Mon, 2009/05/25 - 3:10am

Just a simple question : could You describe, at the end, the whole sofware stack You choosed ?



Christophe Hanon replied on Mon, 2009/05/25 - 6:05am

Interresting article. Somebody should count Java developpers searching for better productivity and good looking interfaces. I regret you haven't  compared more SEAM and Aribaweb.

Andy Leung replied on Mon, 2009/05/25 - 10:18am

Good article!

I recently tried many different combinations for prototyping. I tried icefaces, Visual JSF, and many others but I stopped at the formula below:

HTML + jQuery + Servlet (Business Facade) + Hibernate

The reason I chose these because...

HTMLSimple, straight forward, lots of tool that help creating different screens. No learning curve. There are even Ajax Web Design tool ( that you can use to create complex forms in minutes.
jQuerySimple, quick, small footprint. I used it to handle all events from HTML including Ajax. Short learning curve.
ServletSimple, quick prototyping, no learning curve, lightweight.
Hibernatethere is HibernateUtil that can help generating mapping files.

Comparing to Dojo and GWT, I like jQuery because it's really lightweight and its powerful builder design helps reduce code a lot.

I find this combo works well. How about you?

Jose Noheda replied on Mon, 2009/05/25 - 10:19am in response to: Tullio Bettinazzi

WAS 6.1 with Sun JSF 1.2 (PARENT_LAST class loading) and SEAM (Facelets/Hibernate/Richfaces 3.3). Getting this configuration to work with WAS Portal is tricky though

Jose Noheda replied on Mon, 2009/05/25 - 10:22am in response to: Andy Leung

As I mentioned in the article I prefere dojo+DWR+SpringMVC+JPA but I can only concede that the SEAM environment, the IDE tools in particular, are pretty well integrated and that's a must for a corporation employing hundreds of developers.

Vadim Platonov replied on Mon, 2009/05/25 - 11:22am

What about wicket or tapestry? They seem completely left out.

dan oxlade replied on Mon, 2009/05/25 - 5:04pm

Are you saying the client ruled out spring because it was deemed too slow to build prototypes? I would say this is actually one of major benifits of web-mvc. Using the conventions and annotations I've been able to get a very solid prototype working incredibly quickly. It does lack the rich components but webflow2 seems to have some very powerful features bundled in the spring javascript library, especially when used in conjunction with tiles.

Walter Bogaardt replied on Tue, 2009/05/26 - 11:34am

One thing, I found irksome is that some of these frameworks work well initially and then when it comes to functional testing there is no good tool out there. JSF is a good example of how it can become difficult to functional test a website. Flex lends itself well to functional testing as it was a forethought possibly when it was created, problem is that flex is not as SEO friendly in terms of web content.

Comment viewing options

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