InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Raible Revisits Comparing Web Frameworks

Posted by Bryan Clauser on Nov 26, 2007

Sections
Development
Topics
Web Frameworks ,
Java
Tags
Struts ,
Wicket ,
Grails ,
GWT ,
Flex ,
JBoss Seam

This past week Matt Raible gave a presentation (PDF 1, 2) at ApacheCon comparing Java Web Frameworks. This is a follow up to a presentation he gave a few years ago. The list of Java Web Frameworks covered in the 2 PDFs:

The new talk targets a slightly different list of technologies as a result of the changing development landscape:

The presentation itself consists of a smackdown between a short list of web frameworks using criteria such as:

  • Ajax Support: Is it built-in and easy to use?

  • Bookmark-ability: Can users bookmark pages and return to them easily?

  • Validation: How easy is it to use and does it support client-side (JavaScript) validation?

  • Testability: How easy is it to test Controllers out of container?

  • Community and Support: Can you get questions answered quickly (and respectfully)?

Raible finds stong points as well as weak points in all of the web frameworks. Some statistic are shown pointing to Struts and JSF leading the Job trends, but Raible shows that there are a number of web frameworks making their mark in the job market.

Noting that it is the developers responsibility to choose the right web framework for the project Raible give important factors to take into consideration when choosing a web framework:

  • What type of Application are you building?

  • Ease of Development / Is full-stack an option?

  • Technical Features

As expected Raible's review of web frameworks generated a lively debate. Seam creator Gavin King commented:

What I think is most interesting about this list is simply how different each of these frameworks is from each other. A couple of years ago, any list of the top web frameworks would have featured a bunch of metoo-ish action-style-MVC frameworks, with maybe one or two component-style-MVC frameworks thrown in.

Adobe's James Ward disagreed with Raible's initial assessment of Flex and countered:

Now we could debate these pros and cons all day. But really it depends on what you are building. What I find most interesting is how these frameworks relate to building Rich Internet Applications. That helps narrow it down a bit since very content-centric applications differ greatly from RIAs. But what is a RIA? I’ve taken a stab at defining RIA.
Based on those characteristics I can tell you more definitively how Flex compares as an RIA framework.

Raible states that the futre is bright because of all of the competition there is in the area of web frameworks. Considering half the web frameworks found in this presentation were not even around when he did in original presentation he is correct.



11 comments

Watch Thread Reply

Ext.JS by Kristof Jozsa Posted
Re: Ext.JS by Matt Raible Posted
My Response to Matt by James Ward Posted
What about Spring Web Flow? by Andrew Rapp Posted
Re: What about Spring Web Flow? by Matt Raible Posted
Re: What about Spring Web Flow? by Keith Donald Posted
Re: What about Spring Web Flow? by Rod Johnson Posted
Re: What about Spring Web Flow? by Thom Nichols Posted
WingS by michele michele Posted
Re: WingS by Matt Raible Posted
I would like to see ItsNat included in your list someday... by Jose M. Arranz Posted
  1. Back to top

    Ext.JS

    by Kristof Jozsa

    2 (hopefully constructive) comments:

    - I seriously miss Ext.JS or [insert your new favourite javascript widget library here] plus DWR combo as a valid future approach
    - that pink stuff is horror :)

    Otherwise, thanks for your work!

  2. Back to top

    Re: Ext.JS

    by Matt Raible

    I agree that doing a comparison of SOFEA/SOUI frameworks would be very cool. However, none of the widget library+data interchange library approaches offer an "Application Download" feature - so it may be difficult (at this time) to develop a true SOFEA application (as described in Life above the Service Tier) with them.

  3. Back to top

    My Response to Matt

    by James Ward

    The "counted" link above should be to this blog:
    www.jamesward.org/wordpress/2007/11/15/matt-rai...

    -James

  4. Back to top

    What about Spring Web Flow?

    by Andrew Rapp

    I’m a bit surprised that Spring Web Flow was not mentioned.

  5. Back to top

    Re: What about Spring Web Flow?

    by Matt Raible

    In my experience, SWF has never been advertised as a web framework - but rather as a optional solution for those applications that need page flows. Since it integrates with JSF, Spring MVC and Struts1/2 - it doesn't seem like it should stand on its own as a competitor.

  6. Back to top

    WingS

    by michele michele

    WingS is one of the most complete and powerful MVC for Java.
    wingsframework.org/cms/

    It is missed.

  7. Back to top

    Re: WingS

    by Matt Raible

    WingS is one of the most complete and powerful MVC for Java.

    I like how you provide no foundation for this statement. ;-)

    Care to elaborate? In particular, please provide an example of where tried another web framework (Struts 1.x doesn't count) and then switched to WingS. Please include specific use cases on why it's better and why the other framework failed.

  8. Back to top

    I would like to see ItsNat included in your list someday...

    by Jose M. Arranz

    I would like to see ItsNat included in your list someday. I know ItsNat is the new kid on the block but someday... :)

    Good presentation, good job.

  9. Back to top

    Re: What about Spring Web Flow?

    by Keith Donald

    I don't know if I would go so far to say "SWF has never been advertised as a web framework". Certainly, by its very definition Spring Web Flow is a Java web application controller framework.

    However, Matt is correct in summarizing Spring Web Flow 1.0's overall position in the market. Spring Web Flow 1.0 is used today within existing web frameworks Spring MVC, Struts, and JSF for handling navigation and state management concerns, typically in web applications with non-trivial view navigation rules. In this capacity, flows run happily alongside "plain" controllers such as stateless MVC Controllers or Struts Actions, freeing you from HTTP Session state management concerns and nasty if/else logic to figure out where you are so you can determine where to go next.

    I should add, however, even in this complementary capacity, I do know of organizations that use Spring Web Flow to power the control flow of entire applications, favoring externalized flow definition exclusively. Orbitz Worldwide, for example, uses SWF to power their stateless search/shop site functionality and their linear trip booking processes. They did this because they wanted one consistent way of defining control flow that could scale as their application grew in complexity, and felt the externalized flow definition language offered by Spring Web Flow met that requirement better than anything else they evaluated.

    Spring Web Flow 2.0, the next major release of the framework, will formally evolve the project's positioning. There is a desire in our community to have a single MVC framework capable of handling both stateless and stateful control flow--the same desire Orbitz had. The Spring Web Flow runtime is being evolved to provide the ideal foundation for that unified MVC framework. In addition, JavaServerFaces is being integrated as another supported view technology via the Spring Faces project.

    Now, this doesn't mean everyone developing Spring web applications will be going off and defining XML flow definitions in the future. The Spring Web Flow 2.0 engine will run Spring 2.5 @Controllers, externalized XML flow definitions, and Java-based @Flows, initially: all using the same runtime underneath (which means one central runtime to hook in security management, exception handling, persistence context management, monitoring, tooling, and other features) The basic idea is this: provide one unified, next-generation MVC runtime with several natural programming models for defining and engineering control flow - from stateless operations on REST resources to stateful conversations - with support for all major view technologies, including JSF. You can read more about this vision here.

    Keith
    SpringSource Principal
    Lead, Spring Web Flow
    www.springframework.org

  10. Back to top

    Re: What about Spring Web Flow?

    by Rod Johnson

    Note also that there are major enhancements in Spring MVC (a very popular web framework) in the recently released Spring Framework 2.5. The most important enhancement is a new annotation-based controller programming model, which can greatly reduce the amount of configuration required, and minimizes the need to depend on concrete inheritance. The classpath scanning feature of Spring 2.5 means that controller classes annotated with @Controller can be automatically detected by Spring, meaning that no XML or other external configuration is required to specify request mappings or identify controllers. This builds on the new annotation-based configuration options that Spring 2.5 offers overall.

    As Keith pointed out, the Spring Web Flow and MVC models are converging. Ultimately everything will run on a Web Flow-based runtime under the covers, but the Spring MVC @Controller model will be fully supported, providing a smooth upgrade path.

  11. Back to top

    Re: What about Spring Web Flow?

    by Thom Nichols

    Actually, Grails uses SWF internally to provide conversations. It also gives a nice convention-based approach to using SWF.

Educational Content

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.