<?xml version="1.0" encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="https://raibledesigns.com/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Raible Designs</title>
    <subtitle type="html">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.</subtitle>
    <id>https://raibledesigns.com/rd/feed/entries/atom</id>
            <link rel="self" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?tags=stripes" />
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/" />
        <updated>2026-03-30T03:31:45-06:00</updated>
    <generator uri="http://roller.apache.org" version="5.0.3 (1388864191739:dave)">Apache Roller (incubating)</generator>
        <entry>
        <id>https://raibledesigns.com/rd/entry/how_i_calculated_ratings_for</id>
        <title type="html">How I Calculated Ratings for My JVM Web Frameworks Comparison</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/how_i_calculated_ratings_for"/>
        <published>2010-12-06T11:55:18-07:00</published>
        <updated>2014-05-08T19:47:26-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="devoxx2010" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="lift" scheme="http://roller.apache.org/ns/tags/" />
        <category term="comparingwebframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworksmatrix" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vaadin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flex" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gwt" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rubyonrails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks</id>
        <title type="html">My Comparing JVM Web Frameworks Presentation from Devoxx 2010</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks"/>
        <published>2010-11-18T05:23:10-07:00</published>
        <updated>2015-08-23T18:57:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rubyonrails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx2010" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="lift" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gwt" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vaadin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flex" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2</id>
        <title type="html">AppFuse 2.1 Milestone 2 Released</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_2"/>
        <published>2010-11-15T15:28:57-07:00</published>
        <updated>2010-11-15T22:37:10-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse-light" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="archetypes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpa" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven3" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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.
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1</id>
        <title type="html">AppFuse 2.1 Milestone 1 Released</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_2_1_milestone_1"/>
        <published>2009-11-19T07:16:36-07:00</published>
        <updated>2014-05-08T19:47:26-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="archetypes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse-light" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpa" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_light_converted_to_maven</id>
        <title type="html">AppFuse Light converted to Maven modules, upgraded to Tapestry 5 and Stripes 1.5</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_light_converted_to_maven"/>
        <published>2008-12-20T18:42:03-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuselight" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This past week, I stayed up a couple of late nights to do some of the AppFuse Light work I &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_appfuse_maven_archetypes&quot;&gt;wrote about in October&lt;/a&gt;. I converted all web frameworks to Maven modules, as well as made them inherit from the &lt;a href=&quot;http://static.appfuse.org/appfuse-web/index.html&quot;&gt;appfuse-web&lt;/a&gt; project. Below is what the new module structure looks like:&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;//farm4.static.flickr.com/3079/3124113000_904d35252b_o.png&quot; width=&quot;234&quot; height=&quot;181&quot; alt=&quot;New AppFuse Light Modules&quot; /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;At this point, the project is ready to import into AppFuse&apos;s SVN project. Here&apos;s a list of other changes I made:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modules now depend on AppFuse&apos;s backend and allow you to use Hibernate, JPA or iBATIS as the persistence framework. Implementations for Spring JDBC, OJB and JDO have been removed.&lt;/li&gt;
&lt;li&gt;Upgraded to &lt;a href=&quot;http://jwebunit.sourceforge.net/&quot;&gt;JWebUnit 2.1&lt;/a&gt;, which now uses &lt;a href=&quot;http://jwebunit.sourceforge.net/jwebunit-htmlunit-plugin/index.html&quot;&gt;HtmlUnit&lt;/a&gt; under the hood and has much better JavaScript support. It also has &lt;a href=&quot;http://jwebunit.sourceforge.net/jwebunit-selenium-plugin/index.html&quot;&gt;Selenium support&lt;/a&gt;, but I&apos;ve yet to try it.
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/ajaxified_body&quot;&gt;Ajaxified Body&lt;/a&gt; integrated into all frameworks. You can easily turn it off by modifying the global.js file.&lt;/li&gt;
&lt;li&gt;Prototype and Scriptaculous loaded from &lt;a href=&quot;http://code.google.com/apis/ajaxlibs/&quot;&gt;Google&apos;s Ajax Libraries CDN&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Upgraded to &lt;a href=&quot;http://java.dzone.com/announcements/apache-tapestry-50-final-relea&quot;&gt;Tapestry 5&lt;/a&gt;. Mad props to Serge Eby and his &lt;a href=&quot;http://code.google.com/p/tapestry5-appfuse/&quot;&gt;tapestry5-appfuse&lt;/a&gt; project for showing me how to do this. Serge &lt;a href=&quot;http://www.nabble.com/Welcome-to-the-AppFuse-Project!-td20966043s2369.html&quot;&gt;became a committer on AppFuse&lt;/a&gt; recently, so hopefully we&apos;ll continue to see great things from the Tapestry 5 support. I really like the clean URLs and minimum configuration required in Tapestry 5. It&apos;s testing framework is nice too, but &lt;a href=&quot;http://www.nabble.com/-T5--Testing-Pages-with-injected-Spring-beans-tt21057429.html&quot;&gt;I believe it could be improved&lt;/a&gt;.
&lt;li&gt;Upgraded to &lt;a href=&quot;http://greggbolinger.blogspot.com/2008/01/stripes-15-feature-general-improvements.html&quot;&gt;Stripes 1.5&lt;/a&gt;. This was easy and painless. I&apos;m definitely a fan of Stripes and look forward to reading the &lt;a href=&quot;http://www.pragprog.com/titles/fdstr/stripes&quot;&gt;Stripes book&lt;/a&gt; on my bookshelf.&lt;/li&gt;
&lt;li&gt;Dropped support for: Struts 1.x, WebWork, Spring MVC + Velocity.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If you want to try any of these applications, you can create archetypes using the following commands:&lt;/p&gt;
&lt;pre&gt;
svn co https://appfuse-light.dev.java.net/svn/appfuse-light/trunk appfuse-light
cd appfuse-light/&lt;i&gt;preferred-web-framework&lt;/i&gt;
mvn archetype:create-from-project
cd target/generated-sources/archetype
mvn install
cd ~/dev
mvn archetype:generate # The new archetype should show up as an option
&lt;/pre&gt;
&lt;p&gt;Next steps include figuring out a way to flatten the inherited dependencies and plugins so &lt;em&gt;archetype:create-from-project&lt;/em&gt; can create truly standalone projects. Please let me know if you have any questions.

&lt;/pre&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_light_1_8_2</id>
        <title type="html">AppFuse Light 1.8.2 Released</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_light_1_8_2"/>
        <published>2008-05-11T22:16:17-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jdo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springjdbc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <category term="velocity" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="acegi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpox" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ojb" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ajax" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsp" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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;.
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/all_web_frameworks_should_support</id>
        <title type="html">All Java web frameworks should support hot deploy of a single class</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/all_web_frameworks_should_support"/>
        <published>2008-01-24T15:11:18-07:00</published>
        <updated>2012-11-08T14:35:47-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="seam" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">In &lt;a href=&quot;http://www.nabble.com/Anyone-else-using-Groovy--td15064401.html&quot;&gt;Anyone else using Groovy?&lt;/a&gt;, Tim Fennell (inventor of &lt;a href=&quot;http://stripesframework.org&quot;&gt;Stripes&lt;/a&gt;) raves at how much he likes Groovy now that it supports Java 5 features. He writes that Groovy might offer a solution to make development with Stripes faster:
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
The other thing I&apos;ve been wondering about is that if there were  
enough demand for it we could try adding &quot;improved&quot; groovy support.  
E.g. throw your groovy actions under WEB-INF and we&apos;ll use groovy&apos;s  
built in stuff to do auto-reloading etc. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.linkedin.com/pub/1/12/415&quot;&gt;Gregg Bolinger&lt;/a&gt; responds with an excellent idea:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
It would be really cool if Stripes could automatically discover and load
changes to action beans (including new ones) without the entire app
restarting, regardless of what the action bean is written in. But I
realize that is a pretty tall order. :) &lt;/p&gt;
&lt;p&gt;I agree that it might be a tall order, but I don&apos;t think it&apos;s impossible. In fact, I think &lt;strong&gt;all Java-based web frameworks should support hot deploy of a single class&lt;/strong&gt;. We shouldn&apos;t have to buy &lt;a href=&quot;http://www.zeroturnaround.com/javarebel/&quot;&gt;JavaRebel&lt;/a&gt; to do this. It should be mandatory. 
&lt;/p&gt;
&lt;p&gt;
When an application reaches a certain size, the startup time can get pretty lengthy. This is lost development time. Furthermore, if any part of the development cycle takes longer than 15 seconds, there&apos;s a good chance developers will do something else (check their e-mail, move onto another task, etc.). Multi-tasking may be a good skill to have, but it&apos;s a horrible way to be productive. 
&lt;/p&gt;
&lt;p&gt;
Of the frameworks I&apos;m familiar with, only Tapestry 5 and Seam support reloading single classes without restarting the whole application. Why can&apos;t the other frameworks &quot;borrow&quot; Tapestry 5&apos;s code? Maybe someone should just buy &lt;a href=&quot;http://www.zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt; and give away JavaRebel for free.
&lt;/p&gt;
&lt;p&gt;If I had one wish for 2008, it would be for all Java web frameworks to support this feature. Pretty Please?</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_light_1_8_1</id>
        <title type="html">AppFuse Light 1.8.1 Released: includes upgrades to Spring 2.5 and Wicket 1.3</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_light_1_8_1"/>
        <published>2007-11-29T09:28:06-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jdo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springjdbc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="velocity" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ajax" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsp" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpox" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ojb" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="acegi" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_light_1_8_released</id>
        <title type="html">AppFuse Light 1.8 Released</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_light_1_8_released"/>
        <published>2007-09-14T11:01:46-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="acegi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpox" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ajax" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springjdbc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsp" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ojb" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jdo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css" scheme="http://roller.apache.org/ns/tags/" />
        <category term="velocity" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/does_struts_2_suck</id>
        <title type="html">Does Struts 2 suck?</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/does_struts_2_suck"/>
        <published>2007-09-05T11:21:57-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing</id>
        <title type="html">Open Source Web Frameworks&apos; Mailing List Traffic - June 2007</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/open_source_web_frameworks_mailing"/>
        <published>2007-07-26T14:12:29-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Open Source" label="Open Source" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="flex" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rubyonrails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="django" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gwt" scheme="http://roller.apache.org/ns/tags/" />
        <category term="openlazslo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="turbogears" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web</id>
        <title type="html">OSCON 2007: Comparing Java Web Frameworks</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/oscon_2007_comparing_java_web"/>
        <published>2007-07-25T16:50:55-06:00</published>
        <updated>2007-07-25T22:59:30-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="presentation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="oscon" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/help_me_help_you_market</id>
        <title type="html">Help me help you (market your web framework)</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/help_me_help_you_market"/>
        <published>2007-04-26T13:58:30-06:00</published>
        <updated>2007-04-27T08:45:59-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta</id>
        <title type="html">AppFuse Light 1.8 Beta Released</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_light_1_8_beta"/>
        <published>2007-04-26T02:23:22-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibatis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpox" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsp" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ajax" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springjdbc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ojb" scheme="http://roller.apache.org/ns/tags/" />
        <category term="freemarker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hibernate" scheme="http://roller.apache.org/ns/tags/" />
        <category term="acegi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jdo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="velocity" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&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!).</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed</id>
        <title type="html">Comparing Java Web Frameworks: Proposed Outline</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/comparing_java_web_frameworks_proposed"/>
        <published>2007-04-17T09:13:22-06:00</published>
        <updated>2012-11-08T15:42:03-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="myfaces" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stripes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">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.</content>
    </entry>
</feed>

