InfoQ

News

A Wicket User Revisits JSF

Posted by Scott Delap on May 18, 2007 04:35 PM

Community
Java
Topics
Web Frameworks
Tags
Wicket,
JSF
Peter Thomas recently took a second look at JSF after developing most recently with Wicket. The evaluation was prompted by his recent writing on migrating from Spring MVC / Webflow to Wicket. Many readers of his thoughts on that process were curious if he'd seriously considered JSF. Thomas uses the creation of a simple discussion forum for his comparison of JSF and Wicket. He shows the various portions of the web application side by side including web.xml, dependencies, and business/presentation components of each page. Some of the highlights of his findings:

Project Structure -Wicket does not require any extra XML config like you have faces-config.xml for JSF. It also does not require JSPs.

Footprint and Dependencies - Thomas uses Jetty in his evaluation. Removing JSP support from Jetty for the Wicket version saves over 5MB. JSF has around 3MB of library dependencies compared to the 2MB for Wicket.

Page Complexity - In Wicket complexity moves into Java code. In JSF a large amount of complexity is in the JSP pages themselves.

Comments on Thomas' comparison consider if it is a fair one:

Can you fast forward to 2007? Look at JBoss Seam which makes JSF development much more pleasurable. Don’t get me wrong, I like Wicket and its philosophy but this isn’t a fair comparison to modern day JSF, especially with a trivial example as you’ve shown.

Another reader writes however:

Excellent article. I’ve worked with both technologies, but seeing them side-by-side like this was very easy to follow and clear to read. While some of the vendor-specific technologies mentioned above might make JSF easier, I think your comparison was fair.

8 comments

Reply

Wow by Jacob Hookom Posted May 18, 2007 10:31 PM
Re: Wow by Eelco Hillenius Posted May 19, 2007 3:46 AM
Re: Wow by Tim Fennell Posted May 19, 2007 7:05 AM
Re: Wow by Jacob Hookom Posted May 19, 2007 4:04 PM
Summary: Bloke who likes to do everything by hand doesn't like to use tools by Steve Jones Posted May 20, 2007 11:07 AM
Re: Summary: Bloke who likes to do everything by hand doesn't like to use t by Peter Thomas Posted May 20, 2007 2:51 PM
Re: Summary: Bloke who likes to do everything by hand doesn't like to use t by Eelco Hillenius Posted May 21, 2007 4:48 PM
Re: Summary: Bloke who likes to do everything by hand doesn't like to use t by berkay NiQuiL Posted Jun 30, 2008 4:11 PM
  1. Back to top

    Wow

    May 18, 2007 10:31 PM by Jacob Hookom

    Footprint and Dependencies was a comparison point? Wow, I don't know if I can spare an extra MB of dependencies. The point of moving page complexity into java code as a pro for wicket is somewhat misleading, considering you can do the same in JSF by simply placing a "bind=#{foo.bar}" in any JSF tag/component and accomplish the same thing. And Wicket still faulters with reflection-- EL/property string-- same thing. I have to say though, the zero config works really well for small, 3 page apps.

  2. Back to top

    Re: Wow

    May 19, 2007 3:46 AM by Eelco Hillenius

    Wicket still faulters with reflection-- EL/property string-- same thing.
    The example uses property models, which indeed are based on introspection (like EL). However, you can just implement IModel directly, and you can build your application as statically typed as you wish.
    I have to say though, the zero config works really well for small, 3 page apps.
    And 1000 'page' apps alike. You don't *need* configuration with Wicket like you would with JSF.

  3. Back to top

    Re: Wow

    May 19, 2007 7:05 AM by Tim Fennell

    > I have to say though, the zero config works really well for small, 3 page apps. That's very unbecoming of you Jacob. It's almost (well, maybe not quite) like saying EJB2.0 scales better than 3.0 because it uses so much more configuration ;)

  4. Back to top

    Re: Wow

    May 19, 2007 4:04 PM by Jacob Hookom

    it was a comment on the scope of comparison, not on wicket itself

  5. A whole JSF article using "Netbeans" (Studio Creator 2 would have been a better bet) and the comparison is on size of server executable (got to save that disk space, its such a problem these days) and the JSF bit being a bit of a pig to work with. THAT IS THE WHOLE POINT. This reads like someone comparing RMI with socket writing and complaining that RMI was a complete pig, while not using any of the RMI tools. Its very sad how we continue to have an industry with an obsession with hand cranking pages.

  6. Size of the server executable and the number of dependencies are just the first in a series of side by side comparison points and the full blog post has more details, (including comments from JSF users acknowledging that the comparison is fair). BTW Wicket has tools as well, there are plugins for Eclipse and *NetBeans*.

  7. Its very sad how we continue to have an industry with an obsession with hand cranking pages.
    If it wasn't for these pesky programmers with their obsession for 3GL languages, everyone would have been using 4GL tools by now. ;)

Exclusive Content

Rationalizing the Presentation Tier

Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs.

Agile Project Management: Lessons Learned at Google

In this presentation filmed during QCon 2007, Jeff Sutherland, the creator of Scrum, talks about his visit at Google to do an analysis of Google's first implementation of Scrum.

AtomServer – The Power of Publishing for Data Distribution

In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera, which is now available as open source.

An Introduction to Virtualization

It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is also being applied to networking, storage, and application infrastructure.

REST Anti-Patterns

In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them.

Choosing between Routing and Orchestration in an ESB

In this article, Adrien Louis and Marc Dutoo discuss the differences and relative merits of using orchestration vs. routing in a typical ESB setup, and discuss various implementation options.

Enterprise Batch Processing with Spring

Wayne Lund discusses batch processing, Spring Batch objectives and features, scenarios for usage, Spring Batch architecture, scaling, example code, failures and retrying, and the future roadmap.

User Story Estimation Techniques

Developer Jay Fields draws on his experiences as a ThoughtWorks consultant to describe effective user story estimation techniques.