BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Raible Revisits Comparing Web Frameworks

Raible Revisits Comparing Web Frameworks

This item in japanese

Bookmarks

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.



Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Ext.JS

    by Kristof Jozsa,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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!

  • Re: Ext.JS

    by Matt Raible,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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.

  • My Response to Matt

    by James Ward,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

    -James

  • What about Spring Web Flow?

    by Andrew Rapp,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

  • Re: What about Spring Web Flow?

    by Matt Raible,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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.

  • WingS

    by michele michele,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

    It is missed.

  • Re: WingS

    by Matt Raible,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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.

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

    by Jose M. Arranz,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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.

  • Re: What about Spring Web Flow?

    by Keith Donald,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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

  • Re: What about Spring Web Flow?

    by Rod Johnson,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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.

  • Re: What about Spring Web Flow?

    by Thom Nichols,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT