<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://raibledesigns.com/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Raible Designs</title>
  <link>https://raibledesigns.com/rd/</link>
      <atom:link rel="self" type="application/rss+xml" href="https://raibledesigns.com/rd/feed/entries/rss?tags=wicket" />
    <description>Raible Designs is an Enterprise Open Source Consulting company. We specialize in UI and Full Stack Architectures using HTML5, CSS, JavaScript and Java. We love HTML5, Angular, Bootstrap, Spring Boot, and especially JHipster.</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Mon, 25 May 2026 13:53:18 -0600</lastBuildDate>
  <generator>Apache Roller (incubating) 5.0.3 (1388864191739:dave)</generator>
        <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_3_5_released</guid>
    <title>AppFuse 3.5 Released!</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_3_5_released</link>
        <pubDate>Fri, 20 Feb 2015 09:08:53 -0700</pubDate>
    <category>Java</category>
    <category>wicket</category>
    <category>java</category>
    <category>gwt</category>
    <category>springmvc</category>
    <category>springsecurity</category>
    <category>maven</category>
    <category>tapestry5</category>
    <category>javaee</category>
    <category>jsf</category>
    <category>struts2</category>
    <category>spring</category>
            <description>&lt;p&gt;
&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;http://static.appfuse.org/images/appfuse-icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the release of AppFuse 3.5. This release contains a number of improvements.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;XML reduced by 8x in projects generated with AppFuse&lt;/li&gt;&lt;li&gt;CRUD generation&amp;nbsp;support for Wicket, as well as AppFuse Light archetypes (Spring Security, Spring FreeMarker and Stripes)&lt;/li&gt;&lt;li&gt;Upgraded Tapestry to 5.4&lt;/li&gt;&lt;li&gt;Integrated&amp;nbsp;Spring IO Platform for dependency management&lt;/li&gt;&lt;li&gt;Refactored unit tests to use JUnit 4&lt;/li&gt;&lt;li&gt;Renamed maven-warpath-plugin to warpath-maven-plugin&lt;/li&gt;&lt;li&gt;Upgraded to jWebUnit 3 for AppFuse Light integration tests&lt;/li&gt;&lt;li&gt;Updated all AppFuse Light modules to be up-to-date&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;For more details on specific changes
    see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+3.5.0&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&quot;alert alert-info&quot;&gt;&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br&gt;
    AppFuse is a full-stack framework for building web applications on the JVM. It was
    originally developed to eliminate the ramp-up time when building new web applications. Over
    the years, it has matured into a very testable and secure system for creating Java-based
    webapps.
&lt;/p&gt;
&lt;p&gt;Demos for this release can be viewed at &lt;a href=&quot;http://demo.appfuse.org/&quot;&gt;http://demo.appfuse.org&lt;/a&gt;. Please see
    the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; style=&quot;font-weight: bold&quot;&gt;QuickStart Guide&lt;/a&gt; to
    get started with this release. &lt;/p&gt;

&lt;p&gt;If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot;&gt;FAQ&lt;/a&gt; or join the
    &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find any
    issues, please report them on the users mailing list. You can also post them to &lt;a href=&quot;http://stackoverflow.com/questions/tagged/appfuse&quot;&gt;Stack Overflow&lt;/a&gt; with the &quot;appfuse&quot; tag.&lt;/p&gt;

&lt;p&gt;Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing
    lists.&lt;/p&gt;

&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 5px; color: #666&quot;&gt;We greatly appreciate the help from &lt;a href=&quot;http://appfuse.org/display/APF/Sponsors&quot;&gt;our
    sponsors&lt;/a&gt;, particularly &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot;&gt;Atlassian&lt;/a&gt;,
    &lt;a href=&quot;http://contegix.com/&quot;&gt;Contegix&lt;/a&gt;, and &lt;a href=&quot;http://www.jetbrains.com/&quot;&gt;JetBrains&lt;/a&gt;.
    Atlassian and Contegix are especially awesome:
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_now_powered_by_contegix&quot;&gt;Atlassian has donated licenses to all
        its products and Contegix has donated an entire server&lt;/a&gt; to the AppFuse project. &lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_at</guid>
    <title>Comparing JVM Web Frameworks at vJUG</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_at</link>
        <pubDate>Thu, 6 Feb 2014 10:54:17 -0700</pubDate>
    <category>Java</category>
    <category>jsf</category>
    <category>grails</category>
    <category>webframeworks</category>
    <category>playframework</category>
    <category>struts2</category>
    <category>vaadin</category>
    <category>tapestry</category>
    <category>springmvc</category>
    <category>angularjs</category>
    <category>java</category>
    <category>wicket</category>
    <category>jvm</category>
    <atom:summary type="html">&lt;p&gt;A couple months ago, I was invited to &lt;a href=&quot;http://www.meetup.com/virtualJUG/events/153096902/&quot;&gt;speak at Virtual JUG&lt;/a&gt; - an online-only Java User Group organized by the &lt;a href=&quot;http://zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt; folks. They chose my Comparing JVM Web Frameworks presentation and we agreed I&apos;d speak yesterday morning. They used a combination of Google Hangouts, live streaming on YouTube and IRC to facilitate the meeting. It all went pretty smoothly and produced a comfortable speaking environment. To practice for vJUG, I delivered the same talk on Tuesday night at the &lt;a href=&quot;http://www.meetup.com/DOSUG1/events/155080452/&quot;&gt;Denver Open Source Users Group&lt;/a&gt;.
&lt;p&gt;
The last time I delivered this talk was at &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;Devoxx France&lt;/a&gt; in March 2013. I didn&apos;t change any of the format this time, keeping with referencing the Paradox of Choice and encouraging people to define constraints to help them make their decision. I did add a few new slides regarding RebelLabs&apos; &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/&quot;&gt;Curious Coder&#8217;s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF&lt;/a&gt; and &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/&quot;&gt;The 2014 Decision Maker&#8217;s Guide to Java Web Frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also updated all the pretty graphs (which may or may not have any significance) with the latest stats from Dice.com, LinkedIn, StackOverflow and respective mailing lists. Significant changes I found compared to one year ago:&lt;/p&gt;</atom:summary>        <description>&lt;p&gt;A couple months ago, I was invited to &lt;a href=&quot;http://www.meetup.com/virtualJUG/events/153096902/&quot;&gt;speak at Virtual JUG&lt;/a&gt; - an online-only Java User Group organized by the &lt;a href=&quot;http://zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt; folks. They chose my Comparing JVM Web Frameworks presentation and we agreed I&apos;d speak yesterday morning. They used a combination of Google Hangouts, live streaming on YouTube and IRC to facilitate the meeting. It all went pretty smoothly and produced a comfortable speaking environment. To practice for vJUG, I delivered the same talk on Tuesday night at the &lt;a href=&quot;http://www.meetup.com/DOSUG1/events/155080452/&quot;&gt;Denver Open Source Users Group&lt;/a&gt;.
&lt;p&gt;
The last time I delivered this talk was at &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;Devoxx France&lt;/a&gt; in March 2013. I didn&apos;t change any of the format this time, keeping with referencing the Paradox of Choice and encouraging people to define constraints to help them make their decision. I did add a few new slides regarding RebelLabs&apos; &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/&quot;&gt;Curious Coder&#8217;s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF&lt;/a&gt; and &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/&quot;&gt;The 2014 Decision Maker&#8217;s Guide to Java Web Frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also updated all the pretty graphs (which may or may not have any significance) with the latest stats from Dice.com, LinkedIn, StackOverflow and respective mailing lists. Significant changes I found compared to one year ago:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job Listings on Dice.com
&lt;ul&gt;
&lt;li&gt;Play Framework job listings increased almost 4x&lt;/li&gt;
&lt;li&gt;Tapestry jobs are 1/3 of what they were a year ago&lt;/li&gt;
&lt;li&gt;Wicket jobs are 1/2 of what they were a year ago&lt;/li&gt;
&lt;li&gt;JavaScript framework jobs are up quite a bit: Ember.js up ~300%, AngularJS up 900%, Backbone up 160%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn Skills
&lt;ul&gt;
&lt;li&gt;Rails down ~30%&lt;/li&gt;
&lt;li&gt;Grails up 25%&lt;/li&gt;
&lt;li&gt;Play Framework up 200%&lt;/li&gt;
&lt;li&gt;Spring Roo up 40%&lt;/li&gt;
&lt;li&gt;Ember.js up 300%&lt;/li&gt;
&lt;li&gt;AngularJS up 840%&lt;/li&gt;
&lt;li&gt;Backbone up 200%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can tell from these findings, AngularJS has gained quite a bit of mindshare in the last year. There&apos;s a lot of companies looking for JavaScript skills and quite a few folks have added JavaScript frameworks to their LinkedIn profiles.&lt;/p&gt;
&lt;p&gt;You can &lt;a href=&quot;https://www.youtube.com/watch?v=ygW8fJVlDxQ&quot;&gt;watch the recording on YouTube&lt;/a&gt; or click play in the embedded video below.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/ygW8fJVlDxQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;You can also quickly browse the slide deck below, &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Comparing_JVM_Web_Frameworks_February2014.pdf&quot;&gt;download the PDF&lt;/a&gt; or &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014&quot;&gt;view it on SlideShare&lt;/a&gt;.&lt;/li&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/30861557?rel=0&quot; width=&quot;512&quot; height=&quot;325&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;Thanks to all the folks who attended these talks. And thanks to &lt;a href=&quot;http://twitter.com/dosug&quot;&gt;@dosug&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/virtualjug&quot;&gt;@virtualjug&lt;/a&gt; for giving me the opportunity to speak.&lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_3_0_released</guid>
    <title>AppFuse 3.0 Released!</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_3_0_released</link>
        <pubDate>Mon, 23 Dec 2013 14:31:15 -0700</pubDate>
    <category>Java</category>
    <category>spring</category>
    <category>primefaces</category>
    <category>wicket</category>
    <category>java</category>
    <category>bootstrap3</category>
    <category>maven</category>
    <category>spring4</category>
    <category>appfuse</category>
            <description>&lt;p&gt;
&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//static.appfuse.org/images/appfuse-icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the release of AppFuse 3.0. This release is AppFuse&apos;s first release as a &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_10_year_appfuse&quot;&gt;10-year old&lt;/a&gt; and includes a whole slew of improvements.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Java 7 and Maven 3 are now minimal requirements&lt;/li&gt;
    &lt;li&gt;Replaced MyFaces and Tomahawk with PrimeFaces for JSF&lt;br&gt;
        &lt;ul&gt;
            &lt;li&gt;Removed SiteMesh in favor of JSF&apos;s built-in layout support&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Added Wicket support&lt;/li&gt;
    &lt;li&gt;Migrated from jMock to Mockito for tests&lt;/li&gt;
    &lt;li&gt;Integrated wro4j and WebJars&lt;/li&gt;
    &lt;li&gt;Migrated to Bootstrap 3 and defaulted to Bootswatch&apos;s &lt;a href=&quot;http://bootswatch.com/spacelab/&quot;&gt;Spacelab
        theme&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, this release includes upgrades to all dependencies to bring them up-to-date with their latest
    releases. Most notable are Spring 4, Spring Security 3.2 and Bootstrap 3. For more details on specific changes
    see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+3.0.0&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;

&lt;p class=&quot;quote&quot;&gt;&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br&gt;

    AppFuse is a full-stack framework for building web applications on the JVM. It was
    originally developed to eliminate the ramp-up time when building new web applications. Over
    the years, it has matured into a very testable and secure system for creating Java-based
    webapps.
&lt;/p&gt;
&lt;p&gt;Demos for this release can be viewed at &lt;a href=&quot;http://demo.appfuse.org/&quot;&gt;http://demo.appfuse.org&lt;/a&gt;. Please see
    the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; style=&quot;font-weight: bold&quot;&gt;QuickStart Guide&lt;/a&gt; to
    get started with this release. &lt;/p&gt;

&lt;p&gt;If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot;&gt;FAQ&lt;/a&gt; or join the
    &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find any
    issues, please report them on the users mailing list. You can also post them to &lt;a href=&quot;http://stackoverflow.com/questions/tagged/appfuse&quot;&gt;Stack Overflow&lt;/a&gt; with the &quot;appfuse&quot; tag.&lt;/p&gt;

&lt;p&gt;Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing
    lists.&lt;/p&gt;

&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 5px; color: #666&quot;&gt;We greatly appreciate the help from &lt;a href=&quot;http://appfuse.org/display/APF/Sponsors&quot;&gt;our
    sponsors&lt;/a&gt;, particularly &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot;&gt;Atlassian&lt;/a&gt;,
    &lt;a href=&quot;http://contegix.com/&quot;&gt;Contegix&lt;/a&gt;, and &lt;a href=&quot;http://www.jetbrains.com/&quot;&gt;JetBrains&lt;/a&gt;.
    Atlassian and Contegix are especially awesome:
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_now_powered_by_contegix&quot;&gt;Atlassian has donated licenses to all
        its products and Contegix has donated an entire server&lt;/a&gt; to the AppFuse project. &lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/how_i_calculated_ratings_for</guid>
    <title>How I Calculated Ratings for My JVM Web Frameworks Comparison</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/how_i_calculated_ratings_for</link>
        <pubDate>Mon, 6 Dec 2010 11:55:18 -0700</pubDate>
    <category>Java</category>
    <category>devoxx2010</category>
    <category>webframeworks</category>
    <category>jvm</category>
    <category>lift</category>
    <category>comparingwebframeworks</category>
    <category>webframeworksmatrix</category>
    <category>spring</category>
    <category>rails</category>
    <category>vaadin</category>
    <category>jsf</category>
    <category>flex</category>
    <category>gwt</category>
    <category>wicket</category>
    <category>springmvc</category>
    <category>stripes</category>
    <category>java</category>
    <category>rubyonrails</category>
    <category>devoxx</category>
    <category>grails</category>
    <category>struts2</category>
    <category>playframework</category>
            <description>When I re-wrote my &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks&quot;&gt;Comparing JVM Web Frameworks presentation&lt;/a&gt; from scratch, I decided to add a &lt;a href=&quot;http://bit.ly/jvm-frameworks-matrix&quot;&gt;matrix&lt;/a&gt; that allows you to rate a framework based on &lt;a href=&quot;https://docs.google.com/document/pub?id=1jAGPWwlEcYikqOPg8faYgRV7cQNS_iCCoJ1VNc_99M4&quot;&gt;20 different criteria&lt;/a&gt;. The reason I did this was because I&apos;d used this method when &lt;a href=&quot;http://raibledesigns.com/rd/entry/ajax_framework_analysis_results&quot;&gt;choosing an Ajax framework for Evite&lt;/a&gt; last year. The matrix seemed to work well for selecting the top 5 frameworks, but it also inspired a lot of discussion in the community that my &lt;a href=&quot;http://ptrthomas.wordpress.com/2010/12/04/comparing-jvm-web-frameworks-a-response-to-matt-raible/&quot;&gt;ratings&lt;/a&gt; &lt;a href=&quot;http://blog.frankel.ch/critical-analysis-of-frameworks-comparison&quot;&gt;were&lt;/a&gt; &lt;a href=&quot;http://basementcoders.com/2010/12/episode-27-hudson-oracle-raible-and-astycrapper/&quot;&gt;wrong&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;I expected this, as I certainly don&apos;t know every framework as well as I&apos;d like. The mistake I made was asking for the community to provide feedback on my ratings without describing how I arrived at them. From &lt;a href=&quot;http://ptrthomas.wordpress.com/2010/12/04/comparing-jvm-web-frameworks-a-response-to-matt-raible/&quot;&gt;Peter Thomas&apos;s blog&lt;/a&gt;:
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
What you are doing is adjusting ratings based on who in the community shouts the loudest. I can&apos;t help saying that this approach comes across as highly arrogant and condescending, you seem to expect framework developers and proponents to rush over and fawn over you to get better ratings, like waiters in a restaurant trying to impress a food-critic for Michelin stars.
&lt;/p&gt;
&lt;p&gt;
I apologize for giving this impression. It certainly wasn&apos;t my intent. By having simple numbers (1.0 == framework does well, 0.5 == framework is OK and 0 == framework not good at criteria) with no rationalization, I can see how the matrix can be interpreted as useless (or to put it bluntly, as &lt;a href=&quot;http://basementcoders.com/2010/12/episode-27-hudson-oracle-raible-and-astycrapper/&quot;&gt;something you should wipe your ass with&lt;/a&gt;). I don&apos;t blame folks for getting angry.&lt;/p&gt;
&lt;p&gt;For my Rich Web Experience presentation, I documented why I gave each framework the rating I did. Hopefully this will allow folks to critique my ratings more constructively and I can make the numbers more accurate. You can view this document below or &lt;a href=&quot;http://bit.ly/jvm-webfwk-ratings-logic&quot;&gt;on Google Docs&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;//docs.google.com/document/pub?id=1X_XvpJd6TgEAMe4a6xxzJ38yzmthvrA6wD7zGy2Igog&amp;amp;embedded=true&quot; style=&quot;width: 100%; border: 1px solid silver; height: 400px&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;In the end, what I was hoping to do with this matrix was to simply highlight a &lt;em&gt;technique&lt;/em&gt; for choosing a web framework. Furthermore, I think adding a &quot;weight&quot; to each criteria is important because things like books often aren&apos;t as important as REST support. To show how this might be done, I added a second sheet to the matrix and made up some weighting numbers. I&apos;d expect anyone that wants to use this to &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/JVM_Web_Framework_Matrix_20101206.xls&quot;&gt;downloaded the matrix&lt;/a&gt;, verify the ratings are accurate for your beliefs and weight the criteria accordingly.
&lt;/p&gt;
&lt;p&gt;
Of course, as I and many others have said, the best way to choose a web framework is to try them yourself. I emphasized this at the end of my presentation with the following two slides.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/5238846712/&quot; title=&quot;Slide #77 from Comparing JVM Web Frameworks Talk at RWX2010&quot;&gt;&lt;img src=&quot;//farm6.static.flickr.com/5281/5238846712_375a63e4c6.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Slide #77 from Comparing JVM Web Frameworks Talk at RWX2010&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/5238846740/&quot; title=&quot;Slide #76 from Comparing JVM Web Frameworks Talk at RWX2010&quot;&gt;&lt;img src=&quot;//farm6.static.flickr.com/5129/5238846740_29b06ee0eb.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Slide #76 from Comparing JVM Web Frameworks Talk at RWX2010&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks</guid>
    <title>My Comparing JVM Web Frameworks Presentation from Devoxx 2010</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks</link>
        <pubDate>Thu, 18 Nov 2010 05:23:10 -0700</pubDate>
    <category>Java</category>
    <category>spring</category>
    <category>stripes</category>
    <category>rubyonrails</category>
    <category>java</category>
    <category>jvm</category>
    <category>struts2</category>
    <category>devoxx2010</category>
    <category>playframework</category>
    <category>lift</category>
    <category>devoxx</category>
    <category>grails</category>
    <category>webframeworks</category>
    <category>rails</category>
    <category>wicket</category>
    <category>gwt</category>
    <category>springmvc</category>
    <category>vaadin</category>
    <category>jsf</category>
    <category>flex</category>
            <description>This week, I&apos;ve been having a great time in Antwerp, Belgium at the &lt;a href=&quot;http://www.devoxx.com/display/Devoxx2K10/Home&quot;&gt;Devoxx&lt;/a&gt; Conference. This morning, I had the pleasure of delivering my &lt;a href=&quot;http://www.devoxx.com/display/Devoxx2K10/Comparing+JVM+Web+Frameworks&quot;&gt;Comparing JVM Web Frameworks&lt;/a&gt; talk. I thoroughly enjoyed giving this presentation, especially to such a large audience. You can view the presentation below (if you have Flash installed) or &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Comparing_JVM_Web_Frameworks_Devoxx2010.pdf&quot;&gt;download it here&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/uBZoC22SGdjpFy&quot; width=&quot;510&quot; height=&quot;420&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;
Unlike previous years, I chose to come up with a &lt;a href=&quot;http://bit.ly/jvm-frameworks-matrix&quot;&gt;spreadsheet matrix&lt;/a&gt; that shows why I chose the 5 I did. This spreadsheet and rankings given to each framework are likely to be debated, as I don&apos;t know all the frameworks as well as I&apos;d like to. Also, the missing column on this spreadsheet is a &quot;weighting&quot; column where you can prioritize certain criteria like I&apos;ve done in the past when &lt;a href=&quot;http://raibledesigns.com/rd/entry/ajax_framework_analysis_results&quot;&gt;Comparing Ajax Frameworks&lt;/a&gt;. If you believe there are incorrect numbers, please let me know and I&apos;ll try to get those fixed before I do this talk again at &lt;a href=&quot;http://www.therichwebexperience.com/conference/fort_lauderdale/2010/11/home&quot;&gt;The Rich Web Experience&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
One thing that doesn&apos;t come across in this presentation is that I believe &lt;em&gt;anyone&lt;/em&gt; can use this matrix, and weightings, to make &lt;em&gt;any&lt;/em&gt; of these frameworks come out on top. I also believe web frameworks are like spaghetti sauce in &lt;a href=&quot;http://www.gladwell.com/2004/2004_09_06_a_ketchup.html&quot;&gt;The Ketchup Conundrum&lt;/a&gt;. That is, the only way to make more happy spaghetti sauce lovers was to make more &lt;em&gt;types&lt;/em&gt; of spaghetti sauce. You can read more about this in my &lt;a href=&quot;http://raibledesigns.com/rd/entry/there_is_no_best_web&quot;&gt;There is no &quot;best&quot; web framework&lt;/a&gt; article.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; If you disagree with the various ratings I gave to web frameworks in this presentation, please provide your opinions by &lt;a href=&quot;http://bit.ly/webmatrixsurvey&quot;&gt;filling out this survey&lt;/a&gt;. Thanks to &lt;a href=&quot;http://twitter.com/sarbogast&quot;&gt;Sebastien Arbogast&lt;/a&gt; for setting this up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Sebastien has posted his survey results at &lt;a href=&quot;http://sebastien-arbogast.com/2010/11/19/jvm-web-framework-survey-first-results/&quot;&gt;JVM Web Framework Survey, First Results&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 12/6:&lt;/strong&gt; A video of this presentation is &lt;a href=&quot;http://parleys.com/d/2118&quot;&gt;now available on Parleys.com&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 5px; color: #666&quot;&gt;
P.S. My current gig is ending in mid-December. If you&apos;re looking for a UI Architect with a passion for open source frameworks, please &lt;a href=&quot;http://raibledesigns.com/contact.jsp&quot;&gt;let me know&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2</guid>
    <title>AppFuse 2.1 Milestone 2 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2</link>
        <pubDate>Mon, 15 Nov 2010 15:28:57 -0700</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>appfuse-light</category>
    <category>webframeworks</category>
    <category>java</category>
    <category>appfuse</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>freemarker</category>
    <category>wicket</category>
    <category>maven2</category>
    <category>spring</category>
    <category>maven</category>
    <category>stripes</category>
    <category>hibernate</category>
    <category>java5</category>
    <category>ibatis</category>
    <category>archetypes</category>
    <category>jpa</category>
    <category>tapestry</category>
    <category>maven3</category>
    <category>struts2</category>
            <description>I&apos;m pleased to announce the 2nd milestone release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are Spring 3 and Struts 2.1. This release fixes many issues with archetypes and contains many improvements to support Maven 3. For more details on specific changes see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.1.0+M2&quot;&gt;2.1.0 M2 release notes&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br/&gt;
AppFuse is an open source project and application that uses open source frameworks to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time when building new web applications. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project. If you use &lt;a href=&quot;http://raibledesigns.com/rd/entry/using_jrebel_with_intellij_idea&quot;&gt;JRebel with AppFuse&lt;/a&gt;, you can achieve zero-turnaround in your project and develop features without restarting the server.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;
Release Details&lt;/strong&gt;&lt;br/&gt;
Archetypes now include all the source for the web modules so using jetty:run and your IDE will work much smoother now. The backend is still embedded in JARs, enabling you to choose with persistence framework (Hibernate, iBATIS or JPA) you&apos;d like to use. If you want to modify the source for that, &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+Core+Classes&quot;&gt;add the core classes to your project&lt;/a&gt; or run &quot;appfuse:full-source&quot;.
&lt;/p&gt;
&lt;p&gt;
AppFuse comes in a number of different flavors. It offers &quot;light&quot;, &quot;basic&quot; and &quot;modular&quot; and archetypes. Light archetypes use an embedded H2 database and contain a simple CRUD example. In the final 2.1.0 release, the light archetypes will allow code generation like the basic and modular archetypes. Basic archetypes have web services using CXF, authentication from Spring Security and features including signup, login, file upload and CSS theming. Modular archetypes are similar to basic archetypes, except they have multiple modules which allows you to separate your services from your web project.
&lt;/p&gt;
&lt;p&gt;
AppFuse provides &lt;a href=&quot;http://static.appfuse.org/archetype.html&quot;&gt;archetypes&lt;/a&gt; for JSF, Spring MVC, Struts 2 and Tapestry 5. The light archetypes are available for these frameworks, as well as for Spring MVC + FreeMarker, Stripes and Wicket.
&lt;/p&gt;
&lt;p&gt;
Please note that this release does not contain updates to the documentation. Code generation will work, but it&apos;s likely that some content in the &lt;a href=&quot;http://appfuse.org/display/APF/Tutorials&quot;&gt;tutorials&lt;/a&gt; won&apos;t match. For example, you can use annotations (vs. XML) for Spring MVC and Tapestry is a whole new framework. I&apos;ll be working on documentation over the next several weeks in preparation for the 2.1 final release.
&lt;/p&gt;
&lt;p&gt;
For information on creating a new project, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot;&gt;FAQ&lt;/a&gt; or join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find bugs, please &lt;a href=&quot;http://issues.appfuse.org/browse/APF&quot;&gt;create an issue in JIRA&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing lists.
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1</guid>
    <title>AppFuse 2.1 Milestone 1 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1</link>
        <pubDate>Thu, 19 Nov 2009 07:16:36 -0700</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>tapestry</category>
    <category>archetypes</category>
    <category>appfuse-light</category>
    <category>appfuse</category>
    <category>freemarker</category>
    <category>java</category>
    <category>wicket</category>
    <category>maven2</category>
    <category>spring</category>
    <category>springmvc</category>
    <category>jsf</category>
    <category>stripes</category>
    <category>maven</category>
    <category>struts2</category>
    <category>hibernate</category>
    <category>java5</category>
    <category>myfaces</category>
    <category>ibatis</category>
    <category>jpa</category>
            <description>&lt;a href=&quot;http://appfuse.org&quot;&gt;&lt;img src=&quot;//appfuse.dev.java.net/images/icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;&gt;&lt;/a&gt;
The AppFuse Team is pleased to announce the first milestone release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_hibernate_to_3_4&quot;&gt;Hibernate&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/moving_from_spring_s_xml&quot;&gt;Spring&lt;/a&gt; and Tapestry 5. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is AppFuse?&lt;/strong&gt;&lt;br/&gt;
AppFuse is an open source project and application that uses open source tools built on the Java platform to help you develop Web applications quickly and efficiently. It was originally developed to eliminate the ramp-up time found when building new web applications for customers. At its core, AppFuse is a project skeleton, similar to the one that&apos;s created by your IDE when you click through a wizard to create a new web project.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Release Details&lt;/strong&gt;&lt;br/&gt;
&lt;a href=&quot;http://static.appfuse.org/archetypes.html&quot;&gt;Archetypes&lt;/a&gt; now include all the source for the web modules so using &lt;em&gt;jetty:run&lt;/em&gt; and your IDE will work much smoother now. The backend is still embedded in JARs, enabling you to choose which persistence framework (Hibernate, iBATIS or JPA) you&apos;d like to use. If you want to modify the source for that, &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+Core+Classes&quot;&gt;add the core classes to your project&lt;/a&gt; or run &lt;em&gt;appfuse:full-source&lt;/em&gt;. 
&lt;/p&gt;
&lt;p&gt;
In addition, AppFuse Light has been &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_converted_to_maven&quot;&gt;converted to Maven&lt;/a&gt; and has archetypes available. AppFuse provides archetypes for JSF, Spring MVC, Struts 2 and Tapestry 5. The &lt;em&gt;light&lt;/em&gt; archetypes are available for these frameworks, as well as for Spring MVC + FreeMarker, Stripes and Wicket.
&lt;/p&gt;
&lt;p&gt;Other notable improvements:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Added &lt;a href=&quot;http://issues.appfuse.org/browse/APF-267&quot;&gt;Compass support&lt;/a&gt; thanks to a patch from &lt;a href=&quot;http://www.kimchy.org/&quot;&gt;Shay Banon&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Upgraded from &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1125&quot;&gt;XFire to CXF&lt;/a&gt; for Web Services.&lt;/li&gt;
&lt;li&gt;Moved Maven repository to &lt;a href=&quot;https://docs.sonatype.com/display/NX/OSS+Repository+Hosting&quot;&gt;Sonatype&apos;s OSS Repository Hosting&lt;/a&gt; for snapshots and releasing to Maven Central. There are no longer any AppFuse-specific artifacts, all are available in central. Thanks to &lt;a href=&quot;http://sonatype.com&quot;&gt;Sonatype&lt;/a&gt; for this great service and its &lt;a href=&quot;http://raibledesigns.com/rd/entry/nexus_is_a_kick_ass&quot;&gt;excellent repository manager&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Upgraded to Canoo WebTest 3.0. &lt;em&gt;Now if we could just get its &lt;a href=&quot;http://people.apache.org/~sgoeschl/download/maven-plugins/webtest-maven-plugin/site/index.html&quot;&gt;Maven Plugin&lt;/a&gt; moved to Codehaus.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Added &lt;a href=&quot;http://raibledesigns.com/rd/entry/ajaxified_body&quot;&gt;Ajaxified Body&lt;/a&gt; to AppFuse Light archetypes.&lt;/li&gt;
&lt;li&gt;Infrastructure upgrades, including &lt;a href=&quot;http://issues.appfuse.org/&quot;&gt;JIRA 4&lt;/a&gt;, &lt;a href=&quot;http://appfuse.org/&quot;&gt;Confluence 3&lt;/a&gt;, &lt;a href=&quot;http://source.appfuse.org&quot;&gt;FishEye 2&lt;/a&gt;, &lt;a href=&quot;http://builds.appfuse.org&quot;&gt;Bamboo 2&lt;/a&gt; and &lt;a href=&quot;http://login.appfuse.org&quot;&gt;Crowd 1.6&lt;/a&gt;. Many thanks to &lt;a href=&quot;http://www.atlassian.com/c/NPOS/10160&quot;&gt;Atlassian&lt;/a&gt; and &lt;a href=&quot;http://contegix.com&quot;&gt;Contegix&lt;/a&gt; for their excellent products and services.&lt;/li&gt;
&lt;li&gt;For more details on specific changes see the &lt;a href=&quot;http://appfuse.org/display/APF/Release+Notes+2.1.0+M1&quot; title=&quot;Release Notes 2.1.0 M1&quot;&gt;release notes&lt;/a&gt;.
&lt;/ul&gt;
&lt;p&gt;Please note that this release does not contain updates to the documentation. Code generation will work, but it&apos;s likely that some content in the &lt;a href=&quot;http://appfuse.org/display/APF/Tutorials&quot;&gt;tutorials&lt;/a&gt; won&apos;t match. For example, you can use annotations (vs. XML) for dependency injection and Tapestry is a whole new framework. I&apos;ll be working on documentation over the next several weeks in preparation for Milestone 2.
&lt;/p&gt;
&lt;p&gt;AppFuse is available as several Maven archetypes. For information on creating a new project, please see the &lt;a href=&quot;http://appfuse.org/display/APF/AppFuse+QuickStart&quot; title=&quot;AppFuse QuickStart&quot;&gt;QuickStart Guide&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
To learn more about AppFuse, please read Ryan Withers&apos; &lt;a href=&quot;http://www.ociweb.com/jnb/jnbMay2008.html&quot;&gt;Igniting your applications with AppFuse&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;The 2.x series of AppFuse has a minimum requirement of the following specification versions:&lt;/p&gt;

&lt;ul class=&quot;glassList&quot;&gt;
	&lt;li&gt;Java Servlet 2.4 and JSP 2.0 (2.1 for JSF)&lt;/li&gt;
	&lt;li&gt;Java 5+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have questions about AppFuse, please read the &lt;a href=&quot;http://appfuse.org/display/APF/FAQ&quot; title=&quot;FAQ&quot;&gt;FAQ&lt;/a&gt; or join the &lt;a href=&quot;http://appfuse.org/display/APF/Mailing+Lists&quot; title=&quot;Mailing Lists&quot;&gt;user mailing list&lt;/a&gt;. If you find bugs, please &lt;a href=&quot;http://issues.appfuse.org/secure/CreateIssue!default.jspa&quot;&gt;create an issue in JIRA&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;Thanks to everyone for their help contributing code, writing documentation, posting to the mailing lists, and logging issues. </description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/dojo_comet_support_in_java</guid>
    <title>Dojo/Comet support in Java Web Frameworks</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/dojo_comet_support_in_java</link>
        <pubDate>Thu, 18 Dec 2008 15:58:37 -0700</pubDate>
    <category>Java</category>
    <category>dojo</category>
    <category>struts</category>
    <category>wicket</category>
    <category>tapestry5</category>
    <category>java</category>
    <category>tapestry</category>
    <category>comet</category>
    <category>webframeworks</category>
    <category>struts2</category>
            <description>&lt;a href=&quot;http://dojotoolkit.org/&quot; title=&quot;Dojo Toolkit&quot;&gt;&lt;img src=&quot;//farm4.static.flickr.com/3283/3118492275_8d4cb574d5_t.jpg&quot; width=&quot;100&quot; height=&quot;66&quot; alt=&quot;Dojo Logo&quot; class=&quot;picture&quot; style=&quot;border: 0; margin-top: -10px&quot; /&gt;&lt;/a&gt;
This week I&apos;m doing a research project for a client. The main purpose of the project is to find out which Java-based web framework works best with Dojo and Comet. Here&apos;s the key requirement from the client:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
It&apos;s all about Comet, we want Comet everywhere we can put it, but we want to isolate the icky bits of fiddling with pages with JavaScript. We&apos;re kind of wed to the Dojo implementation of the client-side bit, so we may as well use more of the Dojo widgets for a richer UI. For us, &quot;works best with&quot; needs to pay a certain amount of consideration to &quot;fits naturally with&quot;, if you understand what I mean. I know that any framework that lets you spit out raw HTML will let you hand code in your Dojo / Comet, but that&apos;s certain to become very tiresome very quickly.&lt;/p&gt;
&lt;p&gt;The candidate frameworks they asked me to look at are &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt; and &lt;a href=&quot;http://tapestry.apache.org&quot;&gt;Tapestry 5&lt;/a&gt;. They&apos;re willing to upgrade to Struts 2 since they&apos;re already using Struts 1. However, they don&apos;t feel that action-based frameworks naturally lead to rich UIs, so they&apos;d prefer a component-based framework. They&apos;re currently using &lt;a href=&quot;http://seamframework.org&quot;&gt;Seam&lt;/a&gt; for an administration-type application and feel it&apos;s too heavy for their customer-facing application.&lt;/p&gt;
&lt;p&gt;Here&apos;s what I&apos;ve found so far in my research. Please let me know if anything is incorrect.
&lt;ul&gt;
&lt;li&gt;Tapestry 5 doesn&apos;t have Dojo or Comet support (Prototype and Scriptaculous are the &lt;a href=&quot;http://tapestry.apache.org/tapestry5/tapestry-core/guide/ajax.html&quot;&gt;baked-in Ajax frameworks&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Struts 2 has old (version 0.4.3) and somewhat deprecated &lt;a href=&quot;http://struts.apache.org/2.0.11/docs/ajax-tags.html&quot;&gt;Dojo support&lt;/a&gt;. The developers seem to be in favor of removing it and promoting people hand-code Dojo instead. Struts 2 doesn&apos;t have support for Comet.&lt;/li&gt;
&lt;li&gt;Wicket has &lt;a href=&quot;http://wicketstuff.org/confluence/display/STUFFWIKI/wicketstuff-dojo-1.1&quot;&gt;support for Dojo 1.1 that includes Comet support&lt;/a&gt;. This was written by Stefan Fu&#223;enegger and &lt;a href=&quot;http://www.nabble.com/Dojo-1.1-integration-available-from-wicketstuff-td20625220.html#a20625220&quot;&gt;posted to the mailing list last month&lt;/a&gt;. I e-mailed Stefan and asked him about documentation. His response: &quot;I lost my ambition to document it properly since I didn&apos;t receive any feedback on the mailing list. :)&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point, it seems that if the client &lt;em&gt;really&lt;/em&gt; wants to use Dojo, they should use Wicket, and possibly pay Stefan to document it properly. However, they&apos;re willing to consider other options, as long as they have Comet support.
&lt;/p&gt;
&lt;p&gt;
One option I thought of is to use DWR and its &lt;a href=&quot;http://directwebremoting.org/dwr/reverse-ajax&quot;&gt;Reverse Ajax/Comet support&lt;/a&gt;. Another option would be to add better Dojo support to Tapestry 5. However, I don&apos;t think this is possible since the Prototype/Scriptaculous code is generated by the framework and would likely require a changes to switch it to Dojo. 
&lt;/p&gt;
&lt;p&gt;Are there any other Java-based web frameworks that support easily creating Dojo widgets and working with Comet? &lt;a href=&quot;http://www.springsource.com/people/kdonald&quot;&gt;Keith Donald&lt;/a&gt; tweeted that &lt;a href=&quot;http://twitter.com/kdonald/status/1064067717&quot;&gt;Spring MVC has Dojo support&lt;/a&gt;. However, I believe it&apos;s only for widgets and it still requires you to write JavaScript. If your framework doesn&apos;t have Dojo/Comet support, how hard would it be to add it?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I also posted this question on LinkedIn. Make sure and check &lt;a href=&quot;http://www.linkedin.com/answers/technology/web-development/TCH_WDD/385881-5747&quot;&gt;my question&lt;/a&gt; for additional thoughts from folks.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/re_which_is_the_hottest</guid>
    <title>RE: Which is the Hottest Java Web Framework?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/re_which_is_the_hottest</link>
        <pubDate>Tue, 10 Jun 2008 22:39:08 -0600</pubDate>
    <category>Java</category>
    <category>springmvc</category>
    <category>webframeworks</category>
    <category>jsf</category>
    <category>struts2</category>
    <category>seam</category>
    <category>wicket</category>
            <description>&lt;a href=&quot;http://www.breakitdownblog.com&quot;&gt;The &quot;Break it Down&quot; Blog&lt;/a&gt; has a lengthy post on &lt;a href=&quot;http://www.breakitdownblog.com/which-is-the-hottest-java-web-framework-or-maybe-not-java/&quot;&gt;Which is the Hottest Java Web Framework? Or Maybe Not Java?&lt;/a&gt; Comparing Java Web Frameworks is hard because so many people are passionate about the framework they know best. Add a couple more like Flex and Ruby on Rails and its downright difficult. Nevertheless, this post is good in that it contains a lot of pretty trend graphs and it looks like the author has done some good research. It&apos;s likely the folks that will scream foul are the ones that did poor in the comparison (Tapestry and Stripes, I&apos;m talking about you).
&lt;/p&gt;
&lt;p&gt;
Surprising among the top Java Web Frameworks is the rise of Struts 2:&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.google.com/trends?q=(apache+wicket)+|+wicket%2C+(jboss+seam)%2C+(spring+mvc)+|+(spring+webflow)+|+(spring+web+flow)%2C+(struts+2)+|+(struts2)&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0&quot;&gt;
&lt;img src=&quot;//farm4.static.flickr.com/3273/2569872382_c230627f2d.jpg&quot; alt=&quot;Google Trends Graph&quot; width=&quot;500&quot; height=&quot;270&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;To quote:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Which is much more interesting I think is how Wicket adoption has stayed almost flat while Struts 2 adoption has spiked. Spring MVC/WebFlow seems to be going no where fast and racing JBoss Seam there.
&lt;br/&gt;&lt;br/&gt;
The popularity of Struts 2 really caught me off guard with it being quite a bit different from Struts 1, I figured it got thrown into the &quot;just another web framework&quot; category, but I guess there is something in a name and it&apos;s doing quite well.
&lt;/p&gt;
&lt;p&gt;Regardless of what you think of the post and trends, you have to appreciate the amount of time the author put into it.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_2</guid>
    <title>AppFuse Light 1.8.2 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_2</link>
        <pubDate>Sun, 11 May 2008 22:16:17 -0600</pubDate>
    <category>Java</category>
    <category>appfuse</category>
    <category>wicket</category>
    <category>jdo</category>
    <category>hibernate</category>
    <category>springmvc</category>
    <category>freemarker</category>
    <category>springjdbc</category>
    <category>struts</category>
    <category>velocity</category>
    <category>ibatis</category>
    <category>css</category>
    <category>stripes</category>
    <category>myfaces</category>
    <category>acegi</category>
    <category>jpox</category>
    <category>ojb</category>
    <category>ajax</category>
    <category>jsp</category>
            <description>AppFuse Light 1.8.2 is a bug fixes release that includes upgrades for Spring, Spring Security, Hibernate, Wicket, Tapestry and many others. In addition, Spring bean definitions were replaced with annotations (@Repository, @Service and @Controller). See the &lt;a href=&quot;http://tinyurl.com/6m5kjx&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_1&quot;&gt;last release&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=9159&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/a_positive_wicket_experience</guid>
    <title>A Positive Wicket Experience</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/a_positive_wicket_experience</link>
        <pubDate>Fri, 18 Jan 2008 12:37:18 -0700</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>java</category>
    <category>wicket</category>
            <description>Julian Sinai &lt;a href=&quot;http://www.nabble.com/Our-experience-with-Wicket-to14938030.html#a14938030&quot;&gt;recently released&lt;/a&gt; the first version of his company&apos;s product based on Wicket. In &lt;a href=&quot;http://javathoughts.capesugarbird.com/2008/01/year-of-wicket.html&quot;&gt;A Year of Wicket&lt;/a&gt;, he describes the experience (emphasis mine).&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
I&apos;ve been working with Wicket for almost a year. We&apos;ve just released our first product that uses Wicket for the user interface, and so it seems like a good time to take stock. Unfortunately, it&apos;s not a public site, it&apos;s an installable enterprise product, so I can&apos;t show it to you. If you don&apos;t want to read further, here&apos;s the executive summary: Wicket rocks!
&lt;br/&gt;&lt;br/&gt;
I was hired as the GUI Architect for this project. I came to it with many years of GUI experience, mostly using Swing, but without a lot of web development experience.
&lt;br/&gt;&lt;br/&gt;
Because of my Java and Swing background, I was drawn to Wicket. It maps fairly closely to the Swing model of development. So does GWT, but when I evaluated it, it seemed so different from other J2EE frameworks that I felt it was a step too far. No HTML, and no WAR files, for example. This made my colleagues nervous, who were used to Struts and PHP. Me too, as a matter of fact.
&lt;br/&gt;&lt;br/&gt;
I had done some pretty serious prototyping for another project with Tapestry, and there were certain things I liked, like runtime bytecode generation. But the learning curve was pretty steep. At one point I needed to create a custom component, and to do so I needed to learn about engine services and other arcane things that I felt made the process too hard. By contrast, custom components are Wicket&apos;s bread and butter, and they are very easy to build.
&lt;br/&gt;&lt;br/&gt;
I also took a close look at JSF. It seemed overly complex to me, and not much of a departure from the Struts era. It came across as a technology designed by committee, with the combination of several complementary libraries required to get the job done, and there are still too many configuration files.
&lt;br/&gt;&lt;br/&gt;
So we decided to use Wicket. 
&lt;br/&gt;&lt;br/&gt;...&lt;br/&gt;&lt;br/&gt;
One of Wicket&apos;s advantages is the strict separation of design from behavior, that is, HTML from code. While &lt;strong&gt;we did not have a web designer on the team who built the HTML&lt;/strong&gt; (the developers did this), and therefore didn&apos;t get any mileage from the separation in that sense, we definitely gained from having all the behavior in Java code, because it gave us all the power of refactoring, compile-time error checking, and maximum reusability.
[&lt;a href=&quot;http://javathoughts.capesugarbird.com/2008/01/year-of-wicket.html&quot;&gt;Read More&lt;/a&gt;]
&lt;/p&gt;
&lt;p&gt;
I really like how Julian talks about reasons they didn&apos;t choose other frameworks. Beyond that, I think it&apos;s important to note that Wicket was a perfect fit for someone with heavy Java and Swing experience. I still think Wicket is a little verbose for Web developers that program in Java (me), but it&apos;s unlikely there&apos;s very many of those. Building a form in Java seems so much more cumbersome than building it with HTML - but that&apos;s probably just me.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/java_web_framework_smackdown_at</guid>
    <title>Java Web Framework Smackdown at TSSJS in Vegas</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/java_web_framework_smackdown_at</link>
        <pubDate>Fri, 11 Jan 2008 12:06:24 -0700</pubDate>
    <category>Java</category>
    <category>seam</category>
    <category>smackdown</category>
    <category>java</category>
    <category>wicket</category>
    <category>grails</category>
    <category>comparison</category>
    <category>springmvc</category>
    <category>jsf</category>
    <category>webframeworks</category>
    <category>struts2</category>
            <description>This year&apos;s TSSJS is &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=48082&quot;&gt;starting to look&lt;/a&gt; like an &lt;a href=&quot;http://javasymposium.techtarget.com/lasvegas/caag.html&quot;&gt;excellent conference&lt;/a&gt;. I&apos;m particularly excited to be moderating the following &lt;a href=&quot;http://javasymposium.techtarget.com/lasvegas/frameworks.html#Panel&quot;&gt;Expert Panel&lt;/a&gt;.&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
&lt;strong&gt;Java Web Framework Smackdown: Struts 2, Spring MVC, Grails, Seam/JSF and Wicket&lt;/strong&gt;&lt;br/&gt;
The leading advocates of today&apos;s popular Web frameworks will duel under the Vegas Lights. Come and learn when to use your favorite framework and to see if it can live up to its hype.
&lt;br/&gt;&lt;br/&gt;
We&apos;re talking about productivity, scalability and maintainability of Java-based Web applications. The emerging trend is that simplicity is better and productivity matters. Furthermore, if maintainability is the most costly part of any application -- how do these frameworks perform?
&lt;br/&gt;&lt;br/&gt;
Attend if you&apos;re a Java Web developer, or if you simply like good entertainment. A working knowledge of the popular Java Web framework options will make this session more fun. If you haven&apos;t worked with any framework, come and learn who has the best spokesman.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/thevenetian.jpg&quot; rel=&quot;lightbox&quot; title=&quot;The Venetian&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/thevenetian_sm.jpg&quot; width=&quot;130&quot; height=&quot;98&quot; class=&quot;picture&quot; alt=&quot;The Venetian&quot; /&gt;&lt;/a&gt;
I plan on bringing the &lt;a href=&quot;http://raibledesigns.com/rd/entry/oscon_spring_mvc_vs_webwork&quot;&gt;boxing bell from OSCON 2005&lt;/a&gt; to make this session one of the best in the show. I&apos;ll be coming up with a list of questions for these experts in the next couple of months. In the meantime, if you have any suggestions, please let me know.&lt;/p&gt;
&lt;p&gt;With a venue like &lt;a href=&quot;http://www.venetian.com&quot;&gt;The Venetian&lt;/a&gt;, why wouldn&apos;t you go? &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_1</guid>
    <title>AppFuse Light 1.8.1 Released: includes upgrades to Spring 2.5 and Wicket 1.3</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_1</link>
        <pubDate>Thu, 29 Nov 2007 09:28:06 -0700</pubDate>
    <category>Java</category>
    <category>freemarker</category>
    <category>jdo</category>
    <category>struts</category>
    <category>hibernate</category>
    <category>appfuse</category>
    <category>springmvc</category>
    <category>wicket</category>
    <category>springjdbc</category>
    <category>velocity</category>
    <category>ajax</category>
    <category>jsp</category>
    <category>stripes</category>
    <category>css</category>
    <category>jpox</category>
    <category>myfaces</category>
    <category>ojb</category>
    <category>ibatis</category>
    <category>acegi</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8.1 is a bug fixes release that includes an upgrade to Spring 2.5 and Wicket 1.3 RC1. See the &lt;a href=&quot;http://tinyurl.com/2r4fd8&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_released&quot;&gt;last release&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse Light? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuselight&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuselight&quot;&gt;
&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; is a lightweight version of &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;.
        I was inspired to create it while writing &lt;a href=&quot;http://springlive.com&quot;&gt;Spring Live&lt;/a&gt; and 
        looking at the &lt;em&gt;struts-blank&lt;/em&gt; and &lt;em&gt;webapp-minimal&lt;/em&gt; 
        applications that ship with Struts and Spring, respectively.
        These &quot;starter&quot; apps were not robust enough for me, and I wanted 
        something like AppFuse, only simpler. 
&lt;br/&gt;&lt;br/&gt;
AppFuse Light is designed to show Java Web Developers how to start
        a bare-bones webapp using a &lt;a href=&quot;http://www.springframework.org&quot;&gt;
        Spring&lt;/a&gt;-managed middle-tier backend and &lt;a href=&quot;http://www.hibernate.org&quot;&gt;
        Hibernate&lt;/a&gt; for persistence. By default, AppFuse Light uses Spring for
        its MVC framework, but you can change it to 
        &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;JSF/MyFaces&lt;/a&gt;,
        &lt;a href=&quot;http://mc4j.org/confluence/display/stripes/Home&quot;&gt;Stripes&lt;/a&gt;,
        &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts 1.x&lt;/a&gt;, 
        &lt;a href=&quot;http://struts.apache.org/2.x/&quot;&gt;Struts 2.x&lt;/a&gt;,
        &lt;a href=&quot;http://opensymphony.com/webwork&quot;&gt;WebWork&lt;/a&gt;, 
        &lt;a href=&quot;http://tapestry.apache.org&quot;&gt;Tapestry&lt;/a&gt; or
        &lt;a href=&quot;http://wicket.apache.org/&quot;&gt;Wicket&lt;/a&gt;. In addition, there&apos;s a
        number of extras for Spring MVC, including &lt;a href=&quot;http://velocity.apache.org&quot;&gt;Velocity&lt;/a&gt; and &lt;a href=&quot;http://freemarker.org&quot;&gt;FreeMarker&lt;/a&gt; versions, Ajax
        support and &lt;a href=&quot;http://acegisecurity.org&quot;&gt;Acegi Security&lt;/a&gt; support.
&lt;br/&gt;&lt;br/&gt;
This project was formerly named &lt;a href=&quot;http://raibledesigns.com/rd/entry/equinox_a_k_a_appfuse1&quot;&gt;Equinox&lt;/a&gt; and has been under development since April 2004.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8439&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&apos;s on tap for AppFuse Light 2.0? Here&apos;s what I&apos;m hoping to do:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Drop the seldom-used persistence frameworks: JDBC, JDO and OJB.&lt;/li&gt;
&lt;li&gt;Drop Struts 1.x and WebWork as web frameworks (replaced by Struts 2).&lt;/li&gt;
&lt;li&gt;Support the same persistence frameworks as AppFuse: Hibernate,
iBATIS and JPA.&lt;/li&gt;
&lt;li&gt;Re-use appfuse-service, appfuse-hibernate, appfuse-ibatis and
appfuse-jpa in AppFuse Light. I&apos;ll likely include the core classes
(User, Role) since AppFuse Light is more &quot;raw&quot; than AppFuse.&lt;/li&gt;
&lt;li&gt;Require Java 5.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let me know if you disagree with any of these items or would like to see other enhancements.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_presentation</guid>
    <title>Comparing JVM Web Frameworks Presentation</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_presentation</link>
        <pubDate>Wed, 14 Nov 2007 15:14:53 -0700</pubDate>
    <category>Java</category>
    <category>wicket</category>
    <category>struts2</category>
    <category>gwt</category>
    <category>seam</category>
    <category>flex</category>
    <category>apachecon</category>
    <category>grails</category>
    <category>webframeworks</category>
            <description>Early this morning, I assembled a &lt;strong&gt;Comparing JVM Web Frameworks&lt;/strong&gt; presentation in preparation for &lt;a href=&quot;http://us.apachecon.com/us2007/program/talk/1994&quot;&gt;my talk tomorrow at ApacheCon&lt;/a&gt;. As &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_time_for&quot;&gt;mentioned on Monday&lt;/a&gt;, this presentation compares Flex, Grails, GWT, Seam, Struts 2 and Wicket. While I think this presentation would be fun to deliver, I don&apos;t believe it has as much &lt;em&gt;meat&lt;/em&gt; as the original talk I was planning to give. My original talk compares JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket. Since I&apos;ve used all these frameworks, I&apos;m able to compare them more on their technical features. Since I haven&apos;t used Flex, GWT or Seam, there was no way for me to 1) try them all before tomorrow and 2) do a thorough analysis of how well they each handle my desired features.&lt;/p&gt;

&lt;p&gt;Since the abstract on ApacheCon&apos;s website mentions my original presentation, I don&apos;t want to yank out the carpet and present the second without asking. So my plan is to ask the audience which one they&apos;d rather hear and continue from there. I&apos;ve updated both presentations with the latest statistics and uploaded them for your review. For those of you who&apos;ve used these frameworks, I&apos;d be interested to hear how accurate you think my Pros and Cons section is. If you know of better pros or cons, please let me know and I&apos;ll adjust as needed.&lt;/p&gt;

&lt;ul class=&quot;glassList&quot;&gt;

&lt;li&gt;&lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf&quot;&gt;Comparing  JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/ComparingJVMWebFrameworks-ApacheConUS2007.pdf&quot;&gt;Comparing  Flex, Grails, GWT, Seam, Struts 2 and Wicket&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;While creating the 2nd presentation, I found a couple things that surprised me. The first is how popular Flex is - not only in job listings, but also in skilled developers and mailing list traffic. Below is a graph that shows how there aren&apos;t many jobs for most of the frameworks, but there&apos;s lots for Flex.

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;img src=&quot;//static.raibledesigns.com/repository/images/dicejobcount-20071115.png&quot; width=&quot;416&quot; height=&quot;276&quot; alt=&quot;Dice.com Job Count - November 2007&quot; /&gt;

&lt;/p&gt;

&lt;p&gt;The following graph illustrates while I chose to use Flex instead of OpenLaszlo as the Flash framework. OpenLaszlo has a &lt;em&gt;much&lt;/em&gt; smaller community than Flex.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;img src=&quot;//static.raibledesigns.com/repository/images/mailinglisttraffic-200711.png&quot; width=&quot;424&quot; height=&quot;257&quot; alt=&quot;User Mailing List Traffic - November 2007&quot; /&gt;

&lt;/p&gt;

&lt;p&gt;The second thing that was surprising is &lt;strong&gt;Seam doesn&apos;t have a logo&lt;/strong&gt;! How does it &lt;em&gt;ever&lt;/em&gt; expect to become a popular open source project without a logo?! It&apos;s amazing they&apos;ve made it this far without having this essential feature. To motivate the creation of a Seam logo, I&apos;m using the following butt-ugly logo in my presentation (found &lt;a href=&quot;http://www.plwmarine.co.uk/images/seam.gif&quot;&gt;here&lt;/a&gt;). Hopefully something better comes along before I deliver my talk tomorrow. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;img src=&quot;//static.raibledesigns.com/repository/images/seam.gif&quot; width=&quot;383&quot; height=&quot;136&quot; alt=&quot;Seam Logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Monday&apos;s post started an &lt;a href=&quot;http://www.nabble.com/Stripes-Ignored...Again-tf4800043.html#a13732878&quot;&gt;interesting thread&lt;/a&gt; on Stripes&apos; mailing list. Also, I really like &lt;a href=&quot;http://blog.interface21.com/main/2007/11/14/annotated-web-mvc-controllers-in-spring-25/&quot;&gt;Spring MVC&apos;s new annotation support&lt;/a&gt;. It&apos;d be nice to see it go a step further and use defaults (like ControllerClassNameHandlerMapping + subpackage support) and only require annotations to override the defaults. IMO, Stripes, Spring MVC and Struts 2 are all excellent choices if a request-based framework provides the best architecture for your application. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket seems to gave gained a lot of interest (and support) &lt;a href=&quot;http://www.gmjjavadesigns.com/gmjd/entry/comparing_web_frameworks&quot;&gt;in&lt;/a&gt; &lt;a href=&quot;http://rmh.blogs.com/weblog/2007/11/comparing-web-f.html&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;http://in.relation.to/Bloggers/TheWebFrameworkSpaceIsAchangin&quot;&gt;blogosphere&lt;/a&gt;. Because of this, I&apos;m considering submitting it as a JavaOne talk. If I were to do this, how would you like to see this presentation changed and improved?
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 3:&lt;/strong&gt; I received the following Seam logo via e-mail. &lt;em&gt;Thanks Christian!&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;img src=&quot;//static.raibledesigns.com/repository/images/seam_logo_blue.png&quot; width=&quot;400&quot; height=&quot;160&quot; alt=&quot;Seam Logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update 4:&lt;/strong&gt; I&apos;ve updated the Dice.com graph to include &quot;Java&quot; with every search term. To understand the comments on this entry, you might want to view the &lt;a href=&quot;http://static.raibledesigns.com/repository/images/dicejobcount-20071114.png&quot; rel=&quot;lightbox&quot;&gt;previous graph&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 5:&lt;/strong&gt; This presentation was posted to the Wicket User mailing list. I followed up asking users to post the pros and cons of Wicket. Now there&apos;s a &lt;a href=&quot;http://www.nabble.com/Matt-Raible%27s-ApacheCon-presentation-tf4815955.html&quot;&gt;lengthy thread&lt;/a&gt; on Wicket&apos;s Pros and Cons. Good stuff.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_web_frameworks_time_for</guid>
    <title>Comparing Web Frameworks: Time for a Change?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_web_frameworks_time_for</link>
        <pubDate>Mon, 12 Nov 2007 16:46:56 -0700</pubDate>
    <category>Java</category>
    <category>struts2</category>
    <category>comparison</category>
    <category>gwt</category>
    <category>grails</category>
    <category>webframeworks</category>
    <category>seam</category>
    <category>wicket</category>
            <description>I first came up with the idea to do a &quot;Comparing Web Frameworks&quot; talk in 2004. I submitted a talk to ApacheCon and it got accepted. From there, I &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_presentation_outline&quot;&gt;outlined&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_equinox_ant&quot;&gt;created sample apps&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_presentation&quot;&gt;practiced&lt;/a&gt; this talk before ApacheCon. Believe it or not, that was my first time speaking in front of a large audience.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
&lt;strong&gt;Historical note:&lt;/strong&gt; October 2004 was a pretty cool month - I &lt;a href=&quot;http://raibledesigns.com/rd/entry/rails_the_mvc_framework_for&quot;&gt;discovered Rails&lt;/a&gt; and Roller had a &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgraded_to_roller_1_0&quot;&gt;1.0 release candidate&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;When I created the presentation, it was in large part due to all the WebWork and Tapestry folks harassing me on this very blog. I started using Struts in June 2001 (the same month 1.0 was released) and had used it successfully on many projects. Part of the reason this blog became so popular was I posted lots of tips and tricks that I learned about Struts (and its related project) while using it. After a while, the noise became too heavy to ignore it - especially after I&apos;d tried Spring MVC. So in an effort to learn more about the the other frameworks, I submitted a talk and &lt;em&gt;forced&lt;/em&gt; myself to learn them. It seems to have worked out pretty well.
&lt;/p&gt;
&lt;p&gt;With that being said, I think it&apos;s time for a change. The reason I originally wrote this was to educate developers on how the top Java web frameworks differed and encourage developers to try more than one. A while later, I realized there&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/tssjs_bof_web_framework_sweet&quot;&gt;different tools for different jobs&lt;/a&gt; and it&apos;s not a one-size-fits-all web framework world. It&apos;s not a component vs. request-based framework world either. There&apos;s lots of options now. When I&apos;ve delivered this talk earlier this year, I&apos;ve always felt like I&apos;ve left quite a few frameworks out. The solution could be to add more and more frameworks. However, I don&apos;t think that&apos;s a good idea. The talk is already difficult to squeeze into 90 minutes and it&apos;s unlikely that adding more frameworks is going to help.
&lt;/p&gt;
&lt;p&gt;The change I&apos;d like to do is to reduce the number of frameworks down to (what I consider) the top web frameworks for deploying to the JVM. What are those frameworks? IMHO, they are as follows, in no particular order:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;GWT-Ext&lt;/li&gt;
&lt;li&gt;Wicket&lt;/li&gt;
&lt;li&gt;Grails&lt;/li&gt;
&lt;li&gt;Flex/OpenLaszlo&lt;/li&gt;
&lt;li&gt;Seam&lt;/li&gt;
&lt;li&gt;Struts 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The RIFE, Tapestry and ZK folks can start bitching now. Sorry - less frameworks make for a more interesting talk. Maybe I&apos;ll add you in the future and I can ask the audience which ones they want compared then we can choose four and go from there. Why don&apos;t I mention Spring MVC? Because I think Struts 2 is easier to learn and be productive with and I also like it&apos;s more open and active community. I&apos;ve written applications with both and I like Struts 2 better. As for Flex vs. OpenLaszlo, I&apos;m somewhat torn. It seems like learning Flex is going to be better for your career, but it&apos;s likely useless without the Flex Builder - which is not open source. However, at $250, it&apos;s likely worth its price. I know the &lt;a href=&quot;http://www.picnik.com/&quot;&gt;Picnik&lt;/a&gt; folks used Flex for their UI - I wonder how much they used Flex Builder in the process?
&lt;/p&gt;
&lt;p&gt;What do you think? Are these the top web frameworks for JVM deployment today? The next time I give this talk is &lt;a href=&quot;http://us.apachecon.com/us2007/program/talk/1994&quot;&gt;this Thursday at ApacheCon&lt;/a&gt;. I may try to re-write my talk and then give the audience a choice of old vs. new. The downside of doing the new talk is I won&apos;t have time to write apps with GWT, Flex or Seam. Anyone care to post their top three pros and cons for any of these frameworks?</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/xebia_web_framework_contest</guid>
    <title>Xebia Web Framework Contest</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/xebia_web_framework_contest</link>
        <pubDate>Tue, 30 Oct 2007 09:32:34 -0600</pubDate>
    <category>Java</category>
    <category>wicket</category>
    <category>gwt</category>
    <category>jsf</category>
    <category>webframeworks</category>
    <category>struts2</category>
            <description>I found an interesting blog post today about a &lt;a href=&quot;http://blog.xebia.fr/2007/10/26/xebia-web-framework-contest/&quot;&gt;contest&lt;/a&gt; (&lt;a href=&quot;http://tinyurl.com/224zql&quot;&gt;English translation&lt;/a&gt;) a French company (Xebia) had with some Java web frameworks.&lt;/p&gt;
&lt;div class=&quot;quote&quot; style=&quot;margin: 10px&quot;&gt;
&lt;p&gt;4 teams have developed the same web application, each with a framework (very) different. The frameworks used were:&lt;/p&gt;
&lt;ul style=&quot;margin-bottom: 0&quot;&gt;
&lt;li&gt;Struts 2&lt;/li&gt;
&lt;li&gt;Google Web ToolKit&lt;/li&gt;
&lt;li&gt;Wicket&lt;/li&gt;
&lt;li&gt;My Faces (JSF)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Overall, I think it&apos;s a good summary of the strengths and weaknesses of the various frameworks.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_released</guid>
    <title>AppFuse Light 1.8 Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_released</link>
        <pubDate>Fri, 14 Sep 2007 11:01:46 -0600</pubDate>
    <category>Java</category>
    <category>struts</category>
    <category>stripes</category>
    <category>acegi</category>
    <category>ibatis</category>
    <category>jpox</category>
    <category>ajax</category>
    <category>springjdbc</category>
    <category>myfaces</category>
    <category>jsp</category>
    <category>ojb</category>
    <category>wicket</category>
    <category>hibernate</category>
    <category>jdo</category>
    <category>freemarker</category>
    <category>springmvc</category>
    <category>appfuse</category>
    <category>css</category>
    <category>velocity</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8 adds CSS Framework integration, as well as support
for Stripes (1.4.2) and Wicket (1.2.6). It also has significant upgrades for JSF and Tapestry; to versions 1.2 and 4.1.3 respectively. See the &lt;a href=&quot;http://tinyurl.com/3xuygc&quot;&gt;Release Notes&lt;/a&gt; for more information on what&apos;s changed since the &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_1_8_beta&quot;&gt;the beta release of 1.8&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What is AppFuse Light? &lt;a href=&quot;?&quot; onclick=&quot;Effect.toggle(&apos;whatisappfuselight&apos;, &apos;blind&apos;); return false&quot;&gt;Click here&lt;/a&gt; to find out.
&lt;/p&gt;
&lt;p style=&quot;display: none; border: 1px solid #F0C000;
 background-color: #FFFFCE;
 text-align:left;
 margin-top: 5px;
 margin-bottom: 5px; padding: 10px&quot; id=&quot;whatisappfuselight&quot;&gt;
&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; is a lightweight version of &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;.
        I was inspired to create it while writing &lt;a href=&quot;http://springlive.com&quot;&gt;Spring Live&lt;/a&gt; and 
        looking at the &lt;em&gt;struts-blank&lt;/em&gt; and &lt;em&gt;webapp-minimal&lt;/em&gt; 
        applications that ship with Struts and Spring, respectively.
        These &quot;starter&quot; apps were not robust enough for me, and I wanted 
        something like AppFuse, only simpler. 
&lt;br/&gt;&lt;br/&gt;
AppFuse Light is designed to show Java Web Developers how to start
        a bare-bones webapp using a &lt;a href=&quot;http://www.springframework.org&quot;&gt;
        Spring&lt;/a&gt;-managed middle-tier backend and &lt;a href=&quot;http://www.hibernate.org&quot;&gt;
        Hibernate&lt;/a&gt; for persistence. By default, AppFuse Light uses Spring for
        its MVC framework, but you can change it to 
        &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;JSF/MyFaces&lt;/a&gt;,
        &lt;a href=&quot;http://mc4j.org/confluence/display/stripes/Home&quot;&gt;Stripes&lt;/a&gt;,
        &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts 1.x&lt;/a&gt;, 
        &lt;a href=&quot;http://struts.apache.org/2.x/&quot;&gt;Struts 2.x&lt;/a&gt;,
        &lt;a href=&quot;http://opensymphony.com/webwork&quot;&gt;WebWork&lt;/a&gt;, 
        &lt;a href=&quot;http://tapestry.apache.org&quot;&gt;Tapestry&lt;/a&gt; or
        &lt;a href=&quot;http://wicket.apache.org/&quot;&gt;Wicket&lt;/a&gt;. In addition, there&apos;s a
        number of extras for Spring MVC, including &lt;a href=&quot;http://velocity.apache.org&quot;&gt;Velocity&lt;/a&gt; and &lt;a href=&quot;http://freemarker.org&quot;&gt;FreeMarker&lt;/a&gt; versions, Ajax
        support and &lt;a href=&quot;http://acegisecurity.org&quot;&gt;Acegi Security&lt;/a&gt; support.
&lt;br/&gt;&lt;br/&gt;
This project was formerly named &lt;a href=&quot;http://raibledesigns.com/rd/entry/equinox_a_k_a_appfuse1&quot;&gt;Equinox&lt;/a&gt; and has been under development since April 2004.
&lt;/p&gt;
&lt;p&gt;
AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8006&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forum/user&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo2.appfuse.org/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;smokey&quot;&gt;
Yes, I realize that 60 combinations is ridiculous. I didn&apos;t create the frameworks, I&apos;m just integrating them so you don&apos;t have to. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt; 
&lt;br/&gt;&lt;br/&gt;
Unfortunately, it&apos;s a real pain to create Maven archetypes or they&apos;d all be as easy as &lt;strong&gt;mvn archetype:create&lt;/strong&gt;. Rumor is that the archetype plugin will allow you to create-from-project in the future. When that happens, I&apos;ll make sure all the combinations are available as archetypes.
&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/does_struts_2_suck</guid>
    <title>Does Struts 2 suck?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/does_struts_2_suck</link>
        <pubDate>Wed, 5 Sep 2007 11:21:57 -0600</pubDate>
    <category>Java</category>
    <category>stripes</category>
    <category>wicket</category>
    <category>struts2</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>tapestry</category>
    <category>struts</category>
            <description>As far as I can tell, Struts 2 sucks. To be fair, so does Stripes. Why? Because there&apos;s no developer feedback for invalid properties or OGNL Expressions. What does this mean? It means if you fat-finger a property name, nothing happens. The OGNL exception is swallowed and you never know you did anything wrong. Furthermore, &lt;a href=&quot;http://www.nabble.com/How-can-I-tell-Struts-2-to-throw-log-exceptions-for-invalid-OGNL-Expressions-tf4100102.html#a11659700&quot;&gt;no one seems to care&lt;/a&gt;. The XWork folks will &lt;a href=&quot;http://forums.opensymphony.com/thread.jspa?messageID=187545&quot;&gt;help you build&lt;/a&gt;, but not &lt;a href=&quot;http://www.nabble.com/Re%3A-How-can-I-tell-Struts-2-to-throw-log-exceptions-for-invalid-OGNL-Expressions-p12373437.html&quot;&gt;solve the problem&lt;/a&gt;. This seems like a major deal-breaker to me, However, I also believe it can be fixed - so maybe there&apos;s hope. 
&lt;/p&gt;
&lt;p&gt;
To demonstrate the problem, I did an experiment. I used the &quot;user details&quot; page in &lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; to fat-finger a property name for the following frameworks: Struts 1, WebWork, Struts 2, JSF, Spring MVC, Stripes, Tapestry and Wicket. First, I tried changing the &quot;lastName&quot; property to &quot;LastName&quot; to see if the framework&apos;s property evaluation was case-sensitive. I found that with WebWork/Struts 2, Stripes and Tapestry, the property is &lt;em&gt;not&lt;/em&gt; case-sensitive. I prefer case-sensitivity, but maybe that&apos;s because I prefer Unix over Windows. 
&lt;/p&gt;
&lt;p&gt;The 2nd thing I tried was changing &quot;lastName&quot; to &quot;pastName&quot; to see if I&apos;d get an error. An error occurred for all the frameworks mentioned, except for WebWork/Struts 2 and Stripes. This makes me believe these frameworks suck. The both use OGNL, so they &lt;em&gt;could&lt;/em&gt; blame it on that, but Tapestry uses OGNL and it presents an error message. After this small experiment, my conclusion is the following frameworks have the best developer feedback:&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Struts 1&lt;/li&gt;
&lt;li&gt;JSF&lt;/li&gt;
&lt;li&gt;Spring MVC&lt;/li&gt;
&lt;li&gt;Tapestry&lt;/li&gt;
&lt;li&gt;Wicket*&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;smokey&quot;&gt;* Wicket seems like it needs some work as all it presents is &quot;Internal Error&quot; and makes you dig through your log files to find the problem.&lt;/p&gt;
&lt;p&gt;Without good developer feedback, how can you have good productivity? 
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
Dear Struts 2 and Stripes Developers,&lt;br/&gt;&lt;br/&gt;What do you think about improving your error messages for invalid properties and expressions? Is this a feature you think you could add? We&apos;d love it if you did. 
&lt;br/&gt;&lt;br/&gt;
Sincerely, &lt;br/&gt;&lt;br/&gt;
Your Users
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;?&quot; onclick=&quot;$(&apos;#errorpagescreenshots&apos;).fadeIn(); return false&quot;&gt;Click here for some screenshots&lt;/a&gt;  of how a fat-fingered property looks in various frameworks:&lt;/p&gt;
&lt;div id=&quot;errorpagescreenshots&quot; style=&quot;display:none&quot;&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: maroon; color: white&quot;&gt;JSF&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-jsf.png&quot;  alt=&quot;JSF&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: blue; color: white&quot;&gt;Struts 1&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-struts1.png&quot;  alt=&quot;Struts 1&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: green; color: white&quot;&gt;WebWork&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0; text-align: center&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-webwork2.png&quot; width=&quot;321&quot; height=&quot;144&quot; alt=&quot;WebWork 2&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: red; color: white&quot;&gt;Struts 2&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-struts2.png&quot;  alt=&quot;Struts 2&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: orange&quot;&gt;Spring MVC&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-springmvc.png&quot;  alt=&quot;Spring MVC&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: yellow&quot;&gt;Tapestry&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-tapestry.png&quot;  alt=&quot;Tapestry&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: maroon; color: white&quot;&gt;Stripes&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-stripes.png&quot;  alt=&quot;Stripes&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center; margin-bottom: 10px&quot;&gt;
&lt;div class=&quot;smokey&quot; style=&quot;font-weight: bold; background-color: purple; color: white&quot;&gt;Wicket&lt;/div&gt;
&lt;div style=&quot;width: 528; overflow: hidden; border: 1px solid black; border-top: 0&quot;&gt;
&lt;img src=&quot;//static.raibledesigns.com/repository/images/invalidfield-wicket.png&quot;  alt=&quot;Wicket&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Stripes doesn&apos;t suck and Wicket has excellent error reporting. See &lt;a href=&quot;http://raibledesigns.com/rd/entry/does_struts_2_suck#comment6&quot;&gt;my comment below&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; I&apos;ve created &lt;a href=&quot;http://jira.opensymphony.com/browse/XW-557&quot;&gt;a patch&lt;/a&gt; to (hopefully) solve this issue in XWork. If you have any feedback on ways to improve this patch, I&apos;d love to hear about it.&lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing</guid>
    <title>Open Source Web Frameworks&apos; Mailing List Traffic - June 2007</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing</link>
        <pubDate>Thu, 26 Jul 2007 14:12:29 -0600</pubDate>
    <category>Open Source</category>
    <category>wicket</category>
    <category>tapestry</category>
    <category>flex</category>
    <category>struts</category>
    <category>grails</category>
    <category>stripes</category>
    <category>myfaces</category>
    <category>rubyonrails</category>
    <category>django</category>
    <category>gwt</category>
    <category>openlazslo</category>
    <category>turbogears</category>
    <category>webframeworks</category>
            <description>Who knows if these stats mean anything, but it does make a pretty graph. Current mailing list traffic leaders in the web framework space: Rails, Flex and GWT. For those frameworks with dev and users lists, these stats are from the users lists. If you find these numbers to be inaccurate, please let me know.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/908369176/&quot; title=&quot;Open Source Web Frameworks Communities&quot;&gt;&lt;img src=&quot;//farm2.static.flickr.com/1319/908369176_811bbca419.jpg&quot; width=&quot;500&quot; height=&quot;294&quot; alt=&quot;Open Source Web Frameworks Communities&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Here&apos;s the numbers in case you want to create your own graphs:
&lt;ul&gt;
&lt;li&gt;Rails: 4056&lt;/li&gt;
&lt;li&gt;Flex: 3558&lt;/li&gt;
&lt;li&gt;GWT: 2305&lt;/li&gt;
&lt;li&gt;Django: 1951&lt;/li&gt;
&lt;li&gt;Wicket: 1718&lt;/li&gt;
&lt;li&gt;Struts: 1689&lt;/li&gt;
&lt;li&gt;Grails: 1307&lt;/li&gt;
&lt;li&gt;MyFaces: 1283&lt;/li&gt;
&lt;li&gt;Tapestry: 1268&lt;/li&gt;
&lt;li&gt;TurbyGears: 797&lt;/li&gt;
&lt;li&gt;Stripes: 206&lt;/li&gt;
&lt;li&gt;OpenLaszlo: 189&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web</guid>
    <title>OSCON 2007: Comparing Java Web Frameworks</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web</link>
        <pubDate>Wed, 25 Jul 2007 16:50:55 -0600</pubDate>
    <category>Java</category>
    <category>tapestry</category>
    <category>stripes</category>
    <category>wicket</category>
    <category>struts2</category>
    <category>jsf</category>
    <category>java</category>
    <category>presentation</category>
    <category>myfaces</category>
    <category>webframeworks</category>
    <category>oscon</category>
            <description>This afternoon I delivered my &lt;a href=&quot;http://conferences.oreillynet.com/cs/os2007/view/e_sess/12341&quot;&gt;Comparing Java Web Frameworks&lt;/a&gt; talk at OSCON in Portland. I told attendees I&apos;d post it here afterwards, so here it is:&lt;/p;
&lt;p style=&quot;margin-left: 20px&quot;&gt;&lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-OSCON2007.pdf&quot;&gt;Download Comparing Java Web Frameworks Presentation&lt;/a&gt; (5.1 MB)&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;For comments on this presentation from earlier this year, see related postings from &lt;a href=&quot;http://raibledesigns.com/rd/entry/apachecon_eu_comparing_java_web&quot;&gt;ApacheCon EU&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/ja_sig_comparing_java_web&quot;&gt;JA-SIG&lt;/a&gt;. This presentation is pretty much the same as the one from ApacheCon and JA-SIG, except it has a different theme and I chopped out the Sweetspots section (due to time constraints).&lt;/p&gt;
&lt;p&gt;Portland is great this time of year, but unfortunately I won&apos;t be sticking around. I&apos;m heading down to Salem to work remotely for a couple of days, returning for the &lt;a href=&quot;http://www.oregonbrewfest.com&quot;&gt;Oregon Brewers Festival&lt;/a&gt; on Friday and heading back to Denver on Saturday. I&apos;ll be glad when July is over - I&apos;ve traveled to a new state every week.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/how_popular_is_your_web</guid>
    <title>How popular is your web framework?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/how_popular_is_your_web</link>
        <pubDate>Fri, 13 Jul 2007 11:43:29 -0600</pubDate>
    <category>Java</category>
    <category>struts</category>
    <category>webframeworks</category>
    <category>hibernate</category>
    <category>myfaces</category>
    <category>spring</category>
    <category>tapestry</category>
    <category>wicket</category>
    <category>jsf</category>
            <description>From the &lt;a href=&quot;http://www.nabble.com/-ANN--Struts-Downloads-Skyrocket-in-2007-tf4044764.html&quot;&gt;Struts user mailing list&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Since its release in June 2001, &lt;a href=&quot;http://struts.apache.org&quot;&gt;Apache Struts&lt;/a&gt; has become the most popular web framework for
Java. Six years later, by any objective measure, Struts is still Java&apos;s most popular web framework.
&lt;br/&gt;&lt;br/&gt;
In February and March 2007, the group released both Struts 1.3.8 and
Struts 2.0.6 to the general public, and Struts downloads zoomed to
over &lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/struts#Downloads-N1008F&quot;&gt;340,000 a month&lt;/a&gt; from the Apache site alone. And this is just
the tip of the iceberg. Most copies of Struts are downloaded from an
network of mirrors or obtained from Maven repositories.
&lt;/p&gt;
&lt;p&gt;So how popular is Struts compared to the other heavy hitters like Spring and Hibernate? Spring has about 1/2 as many (80K) &lt;a href=&quot;http://tinyurl.com/2gz7ql&quot;&gt;downloads in the same period&lt;/a&gt; and &lt;a href=&quot;http://tinyurl.com/28n988&quot;&gt;so does Hibernate&lt;/a&gt;. How do MyFaces, Wicket and Tapestry stack up? Here&apos;s their best download numbers in the past few months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/myfaces#Downloads-N1008F&quot;&gt;MyFaces&lt;/a&gt;: ~12K (and that&apos;s only because of a rate 3-times-normal spike)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://people.apache.org/~vgritsenko/stats/projects/tapestry#Downloads-N1008F&quot;&gt;Tapestry&lt;/a&gt;: ~12K&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tinyurl.com/yte94y&quot;&gt;Wicket&lt;/a&gt;: ~10K&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: line-through&quot;&gt;Sorry JSF, you appear to be losing. Badly.&lt;/span&gt; This is an incorrect statement as pointed out by commentors. Thanks for keeping me honest guys. &lt;br/&gt;&lt;br/&gt;
Disclaimer: Yes, I realize that these statistics are not very accurate, especially considering Maven. Unfortunately, until Maven has repository download stats, this information is the best we&apos;ve got.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/wicket_graduates</guid>
    <title>Wicket Graduates</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/wicket_graduates</link>
        <pubDate>Wed, 20 Jun 2007 16:10:45 -0600</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>java</category>
    <category>wicket</category>
            <description>From the &lt;a href=&quot;http://www.nabble.com/-announce--Apache-Wicket-tf3954913.html&quot;&gt;Wicket user mailing list&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
We have Graduation! Apache Wicket is established as a top level
project within the Apache Software Foundation. 
&lt;/p&gt;
&lt;p&gt;Congratulations to the most enthusiastic and passionate web framework development team in Javaland!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://wicketframework.org&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/wicket-logo.png&quot; width=&quot;160&quot; height=&quot;59&quot; /&gt;&lt;/a&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/help_me_help_you_market</guid>
    <title>Help me help you (market your web framework)</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/help_me_help_you_market</link>
        <pubDate>Thu, 26 Apr 2007 13:58:30 -0600</pubDate>
    <category>Java</category>
    <category>wicket</category>
    <category>tapestry</category>
    <category>stripes</category>
    <category>springmvc</category>
    <category>struts2</category>
    <category>myfaces</category>
            <description>Rather than trolling through google searches, mailing list archives and Amazon book searches, I&apos;d like to try something new. For those projects represented in my Comparing Java Web Frameworks talks (MyFaces, Spring MVC, Stripes, Struts 2, Tapestry and Wicket), would you be interested in helping me gather statistics? I think by allowing projects to gather their own statistics, we&apos;ll get a more accurate number of their statistics.  Here&apos;s the questions I need you to answer:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How many tools (i.e. IDE plugins) are available for your web framework?&lt;/li&gt;
&lt;li&gt;How many jobs are available for your framework on &lt;a href=&quot;http://www.dice.com&quot;&gt;Dice.com&lt;/a&gt;? What about &lt;a href=&quot;http://indeed.com&quot;&gt;Indeed.com&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;How many messages where posted to your &lt;strong&gt;user&lt;/strong&gt; mailing list (or forum) in March 2007?&lt;/li&gt;
&lt;li&gt;How many books are available for your framework?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Of course, if you don&apos;t have time, I&apos;ll be more than happy to gather these statistics myself. However, those that do answer might get some extra marketing love during my talk. Answering in a comment or &lt;a href=&quot;http://raibledesigns.com/contact.jsp&quot;&gt;sending me an e-mail&lt;/a&gt; are the best ways to provide your findings. &lt;em&gt;Thanks!&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href=&quot;http://herebebeasties.com/2007-04-27/lies-damned-lies-and-statistics/&quot;&gt;Alastair&lt;/a&gt; asks for further clarification. Here goes:&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&gt; If you have lots of IDE tooling available, it probably means the configuration for the framework is overly complex and unmanageable without tooling.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
While this may be true, if your framework is &lt;a href=&quot;http://code.google.com/webtoolkit/&quot;&gt;hot&lt;/a&gt; or &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;uber productive&lt;/a&gt;, people want tools. Especially new developers. Remember there&apos;s a plethora of new Java developers every year and a lot of them prefer tool-based solutions. Good or bad, IDEs are nice and people like to use them. I&apos;ve had many clients dismiss frameworks simply because no tools were available.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; The framework with the largest number of jobs available is probably Struts 1. Enough said.&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
Yes, you&apos;re definitely right. However, Struts 1 is not in this comparison - I dropped it because I don&apos;t want to recommend it to anyone.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; People only post to user lists when they are stuck. If the framework is hard to use, there will be lots of e-mails. If it has a steep learning curve, and/or the documentation is poor, this will be particularly so. On the other hand, an active list might point to a large active user base. Who knows which is which from a raw figure?&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
What about community? Mailing lists and their activity is a sign of an active community. Even though SiteMesh is a mature and good solution, its community sucks. There&apos;s little support, no new features, no bug fixes. An open source project w/o a community is tough for a company to adopt. Also, the best communities do a lot more than answer questions on mailing lists. They develop their applications, get advice, offer advice and sometimes even &lt;em&gt;hang out&lt;/em&gt;. The Struts list used to have threads 30-50 messages long about development philosophies. When you joined the mailing list, you felt like you were a part of something, not just a user of a product.
&lt;/p&gt;&lt;p&gt;
&lt;em&gt;&gt; If your framework is fairly stable, and someone has written a fabulous tome on it that is universally acknowledged as &quot;the bible&quot;, few people would bother writing another book for it.&lt;/em&gt;
&lt;/p&gt;&lt;p&gt;
I don&apos;t agree - this just means there&apos;s no market for other books because not that many people are using it. Look at Grails, Groovy, GWT and Rails - there&apos;s been quite a few books on each and no slowdown in sight. Then again, there weren&apos;t many Ant books and that was/is hugely popular. I&apos;m willing to change this question to &quot;How many &lt;strong&gt;good&lt;/strong&gt; does your framework have?&quot;, but that&apos;s up to everyone&apos;s own interpretation. Again, lots of books means there&apos;s an active community outside the immediate mailing list - it&apos;s a sign the general &quot;market&quot; is interested and the framework fills a need.
&lt;/p&gt;&lt;p&gt;
Of course, I &lt;strong&gt;am&lt;/strong&gt; interested in asking the questions that developers want to see answered.  Do you have suggestions for replacement (or new) questions? Remember, people like hard facts, not wishy washy statements about how productive and OO your framework is. Every framework can be uber productive if you have the right developer(s) and they&apos;re genuinely interested in getting stuff done.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta</guid>
    <title>AppFuse Light 1.8 Beta Released</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta</link>
        <pubDate>Thu, 26 Apr 2007 02:23:22 -0600</pubDate>
    <category>Java</category>
    <category>stripes</category>
    <category>css</category>
    <category>ibatis</category>
    <category>springmvc</category>
    <category>jpox</category>
    <category>jsp</category>
    <category>ajax</category>
    <category>appfuse</category>
    <category>wicket</category>
    <category>springjdbc</category>
    <category>ojb</category>
    <category>freemarker</category>
    <category>hibernate</category>
    <category>acegi</category>
    <category>myfaces</category>
    <category>struts</category>
    <category>jdo</category>
    <category>velocity</category>
            <description>&lt;a href=&quot;http://appfuse-light.dev.java.net&quot;&gt;AppFuse Light&lt;/a&gt; 1.8 Beta adds CSS Framework integration, as well as support
for Stripes (1.4.2) and Wicket (1.2.6). This is a beta release so we can work out &lt;a href=&quot;http://tinyurl.com/286qjf&quot;&gt;some kinks&lt;/a&gt; before the final release.&lt;br/&gt;&lt;br/&gt;AppFuse Light now offers 60 possible combinations for &lt;a href=&quot;https://appfuse-light.dev.java.net/servlets/ProjectDocumentList?folderID=8006&quot;&gt;
download&lt;/a&gt;:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;&lt;li&gt;&lt;strong&gt;Web Frameworks:&lt;/strong&gt; JSF (MyFaces), Spring MVC (with
Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts
1.x, Struts 2.x, Tapestry, WebWork, Wicket&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Persistence Frameworks:&lt;/strong&gt; Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC&lt;/li&gt;&lt;/ul&gt;
&lt;p style=&quot;text-align: center; color: #666&quot;&gt;
&lt;a href=&quot;http://static.raibledesigns.com/repository/images/appfuse-light-1.8-beta.gif&quot; rel=&quot;lightbox&quot; title=&quot;Screenshot of 1.8 with CSS Framework&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/appfuse-light-1.8-beta_sm.gif&quot; width=&quot;300&quot; height=&quot;225&quot; alt=&quot;AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher&quot; style=&quot;border: 1px solid silver&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to 
&lt;a href=&quot;mailto:users-subscribe@appfuse.dev.java.net&quot;&gt;users-subscribe@appfuse.dev&lt;wbr&gt;.java.net&lt;/a&gt;. You can also post questions in a forum-like fashion using Nabble: &lt;a href=&quot;http://appfuse.org/forums&quot;&gt;http://appfuse.org/forums&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;
If you&apos;re a developer of one of the frameworks that AppFuse Light uses - I&apos;d love a code review to make sure I&apos;m &quot;up to snuff&quot; on how to use your framework. I&apos;m also more than willing to give commit rights if you&apos;d like to improve the implementation of your framework.
&lt;/p&gt;
&lt;p&gt;Live demos are available at:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light&quot;&gt;Spring&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-ajax&quot;&gt;Spring + Ajax&lt;/a&gt; 
            &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-security&quot;&gt;Spring + Acegi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-jsf&quot;&gt;MyFaces + Facelets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-stripes&quot;&gt;Stripes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-struts&quot;&gt;Struts 1&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-struts2&quot;&gt;Struts 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-tapestry&quot;&gt;Tapestry&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-webwork&quot;&gt;WebWork&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://demo.raibledesigns.com/appfuse-light-wicket&quot;&gt;Wicket&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Based on &lt;a href=&quot;http://martijndashorst.com/blog/2007/04/26/appfuse-light-adds-wicket/&quot;&gt;Martin&apos;s blog post&lt;/a&gt;, I&apos;ve added the version numbers for Stripes and Wicket (1.4.2 and 1.2.6, respectively). While the Wicket guys recommended I use Wicket 1.3.0, I was already knee deep in 1.2.6 when I read their recommendation. If 1.3.0 really is that much better than 1.2.6, it should be a pleasure to upgrade (and a good learning experience too boot!).</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed</guid>
    <title>Comparing Java Web Frameworks: Proposed Outline</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed</link>
        <pubDate>Tue, 17 Apr 2007 09:13:22 -0600</pubDate>
    <category>Java</category>
    <category>myfaces</category>
    <category>struts2</category>
    <category>stripes</category>
    <category>wicket</category>
    <category>jsf</category>
    <category>springmvc</category>
    <category>tapestry</category>
            <description>I&apos;m just now starting to create my &lt;a href=&quot;http://www.eu.apachecon.com/program/talk/75&quot;&gt;Comparing Java Web Frameworks&lt;/a&gt; presentation for &lt;a href=&quot;http://www.eu.apachecon.com/&quot;&gt;ApacheCon Europe&lt;/a&gt;. According to &lt;a href=&quot;http://rollerweblogger.org/roller/entry/apacheconeu_roller_and_blogs_as&quot;&gt;Dave&lt;/a&gt;, I&apos;m &lt;em&gt;way late&lt;/em&gt; on submitting my presentation. However, I haven&apos;t received any late notifications from ApacheCon&apos;s organizing committee, so I don&apos;t feel too bad.
&lt;/p&gt;
&lt;blockquote style=&quot;font-style: italic; color: #666&quot;&gt;
I think it&apos;s interesting how most conferences don&apos;t spend much time organizing from a speaker&apos;s perspective. The Colorado Software Summit and NFJS are two exceptions. As a speaker, you always know exactly what&apos;s going on, what the deadlines are and where you&apos;re supposed to be when. With ApacheCon, I feel like I&apos;m in the dark on almost everything - including if I have a hotel room or not. I guess that&apos;s the difference between a volunteer organization and conferences where the organizers make money.
&lt;/blockquote&gt;
&lt;p&gt;Luckily, I&apos;ve done this presentation quite a few times in the past, so it&apos;s mostly an update rather than a rewrite. The biggest changes: dropping Struts 1 and adding Stripes and Wicket. Of course, I could keep Struts 1 since it&apos;s not much additional work, but since I only have 50 minutes for the talk (10 minutes for QA), it makes sense to drop it. And yes, I know many of you&apos;d like to see Grails, Seam, GWT, RIFE and Click added to this presentation - but no one wants to sit through a presentation on 11 web frameworks in 45 minutes.
&lt;br/&gt;&lt;br/&gt;
Here&apos;s the abstract for the session:
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
One of the most difficult things to do (in Java web development)
today is pick which web framework to use when development an
application.  The Apache Software foundation hosts most of the
popular Java web frameworks: &lt;strong&gt;Struts&lt;/strong&gt;, &lt;strong&gt;MyFaces&lt;/strong&gt;, &lt;strong&gt;Tapestry&lt;/strong&gt; and
&lt;strong&gt;Wicket&lt;/strong&gt;. This session will compare these different web
frameworks, as well as &lt;strong&gt;Spring MVC&lt;/strong&gt; and &lt;strong&gt;Stripes&lt;/strong&gt;. It will briefly
explain how each works and the strengths and weaknesses of each.
 Tips, tricks and gotcha&apos;s will be plentiful. Lastly, it will
provide attendees with a sample application that utilizes all 6
frameworks, so they can compare line-by-line how the frameworks
are different.  This sample application will include the
following features: sortable/pageable list, client and
server-side validation, success and error messages as well as
some Ajax functionality. The frameworks will be rated on how
easy they make it to implement these features.
&lt;/p&gt;
&lt;p&gt;
Without further ado, here&apos;s my proposed outline:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;Introductions (5 minutes)&lt;/li&gt;
&lt;li&gt;Pros and Cons (15 minutes, ~2 minutes for each)&lt;/li&gt;
&lt;li&gt;Sweetspots (10 minutes)&lt;/li&gt;
&lt;li&gt;Smackdown - evaluation criteria includes (15 minutes)
    &lt;ul class=&quot;glassList&quot; style=&quot;margin-bottom: 0&quot;&gt;
    &lt;li&gt;Ajax support&lt;/li&gt;
    &lt;li&gt;Bookmark-ability&lt;/li&gt;
    &lt;li&gt;Validation (including client-side)&lt;/li&gt;
    &lt;li&gt;Testability (esp. out-of-container)&lt;/li&gt;
    &lt;li&gt;Post and redirect&lt;/li&gt;
    &lt;li&gt;Internationalization&lt;/li&gt;
    &lt;li&gt;Page decoration&lt;/li&gt;
    &lt;li&gt;Community and Support&lt;/li&gt;
    &lt;li&gt;Tools&lt;/li&gt;
    &lt;li&gt;Marketability of skills (can it help you get a job)&lt;/li&gt;
    &lt;li&gt;Job count (is there a demand for skills on Dice)&lt;/li&gt;
    &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conclusion (5 minutes)&lt;/li&gt;
&lt;li&gt;Q and A (10 minutes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
During the Pros and Cons, I won&apos;t be showing any code like I usually do - there&apos;s just not enough time. I&apos;m also adding in a discussion on these frameworks&apos; &lt;a href=&quot;http://www.virtuas.com/articles/webframework-sweetspots.html&quot;&gt;sweetspots&lt;/a&gt;. The Pros and Cons section is largely my opinion, and I think it&apos;s important to hear the framework authors&apos; opinions as well.
&lt;br/&gt;&lt;br/&gt;
In evaluation criteria, I&apos;m dropping List screens and Spring Integration. All these frameworks have good Spring support and most support some sort of page-able/sortable list. I can add either of those back in based on your suggestions.
&lt;br/&gt;&lt;br/&gt;
Any feedback is greatly appreciated.</description>          </item>
  </channel>
</rss>