<?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=flex" />
    <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/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/scaling_flash_movies_to_match</guid>
    <title>Scaling Flash Movies to match Browser Zoom Levels</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/scaling_flash_movies_to_match</link>
        <pubDate>Tue, 13 Jul 2010 12:18:42 -0600</pubDate>
    <category>The Web</category>
    <category>javascript</category>
    <category>flex</category>
    <category>browsers</category>
    <category>flash</category>
    <category>textzoom</category>
    <category>actionscript</category>
            <description>Recently I was tasked with figuring out how to scale the Flash assets in the web application I&apos;m working on. In the app, there&apos;s two different Flash assets: a Spotlight (cycles through images) and a Video Player. Before I started working on the issue, our assets would stay the same fixed size no matter what the browser zoom level. You can see this issue in action by going to &lt;a href=&quot;http://hulu.com&quot;&gt;Hulu&lt;/a&gt; or &lt;a href=&quot;http://fancast.com&quot;&gt;Fancast&lt;/a&gt; and zooming in/out (Command +/- on Mac, Control +/- on Windows). The Flash assets don&apos;t scale with the browser&apos;s text.
&lt;/p&gt;
&lt;p&gt;I found a &lt;a href=&quot;http://delicious.com/mraible/textzoom&quot;&gt;lot of references&lt;/a&gt; for how to trap and handle resizing in JavaScript, so that&apos;s the initial path I took. I ended up having issues trapping the resize event in IE, as well as persisting the appropriate zoom level on page reload. Because of this, I ended up using a pure &lt;a href=&quot;http://raibledesigns.com/rd/entry/scaling_flash_movies_to_match#actionscript&quot;&gt;ActionScript solution&lt;/a&gt; that works much better. This article shows how I implemented both solutions.
&lt;/p&gt;
&lt;p&gt;
Regardless of implementation, the first change I had to make was to move the height and width from the Flash asset (object/embed/JS) to its surrounding tag (&amp;lt;section&gt; in our app). Then I changed the height/width to 100% on the Flash asset.
&lt;/p&gt;
&lt;p&gt;
&lt;strong id=&quot;javascript&quot;&gt;JavaScript Implementation&lt;/strong&gt;&lt;br/&gt;
To allow zooming in ActionScript, I modified our main class to expose a &quot;zoom&quot; method to JavaScript:
&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
ExternalInterface.addCallback(&quot;zoom&quot;, _zoom);

...

private function _zoom(scale:Number):void {
    _view.scaleX = _view.scaleX * scale;
    _view.scaleY = _view.scaleY * scale;
}
&lt;/pre&gt;
In the code above, _view refers to the container that holds all the items in the player. To call this method in JavaScript, I added the following code:
&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
var windowHeight;
var documentHeight;

$(document).ready(function() { 
    ...
    windowHeight = $(window).height();
    documentHeight = $(document).height();

    $(window).resize(resizeWindow);
}

// Resize Flash assets when page is zoomed
function resizeWindow() {
    var newWindowHeight = $(window).height();
    var newDocumentHeight = $(document).height();
    // if document height hasn&apos;t changed, it&apos;s a browser window resize
    // event instead of a text zoom - don&apos;t change anything
    if (newDocumentHeight === documentHeight) {
        return;
    } else {
        documentHeight = newDocumentHeight;
    }
    var scale = (windowHeight / newWindowHeight); 

    var player = getFlashMovie(&apos;playerId&apos;);
    if (player &amp;&amp; player.zoom) {
        player.zoom(scale);
    }
    var spotlight = getFlashMovie(&apos;spotlightId&apos;);
    if (spotlight &amp;&amp; spotlight.zoom) {
        spotlight.zoom(scale);
    }

    windowHeight = newWindowHeight;
}
&lt;/pre&gt;
&lt;p&gt;
This seemed to work well in Firefox, Safari and Opera, but not in IE. I found &lt;a href=&quot;http://old.nabble.com/$%28window%29.bind%28%27resize%27,-fn%29-not-working-in-IE-td21447946s27240.html&quot;&gt;this explanation&lt;/a&gt; about why it might not work, but I was unsuccessful in getting IE to recognize a resize/zoom event. 
&lt;/p&gt;
&lt;p&gt;
To fix scaling in our Spotlight asset, I used a similar solution. However, since the Spotlight didn&apos;t have all its elements in a container (they were being added directly to the stage), I had to refactor the code to add a SpotlightView (extends Sprite) that contains the bulk of the code.
&lt;/p&gt;
&lt;p&gt;Browsers persist the zoom level you&apos;ve set for a site. The problem with the solution used here is it only scales up and down properly if you start from scale = 1 and revert to scale = 1 before leaving the site. If you zoom in and close your browser, when you come back the flash movies will be scale = 1 while the rest of the site is zoomed in. To solve this problem, I attempted to save the scale value in a cookie. This worked, and I was able to read the cookie in the *.as files to scale the movie correctly. However, I experienced some issues with this approach and didn&apos;t like having to delete cookies when I wanted the Flash assets to scale correctly.
&lt;/p&gt; 
&lt;p&gt;&lt;strong id=&quot;actionscript&quot;&gt;ActionScript Implementation&lt;/strong&gt;&lt;br/&gt;
After discovering issues with the JavaScript implementation, I did some research to see if it was possible to listen for the browser resize event in ActionScript. The &lt;a href=&quot;http://www.republicofcode.com/tutorials/flash/as3fluidresize/&quot;&gt;Flash Fluid Layouts and Stage Resize in AS3&lt;/a&gt; tutorial clued me in that the stage could listen for a resize event. 
&lt;/p&gt;
&lt;pre class=&quot;brush: java; toolbar: false&quot;&gt;
stage.addEventListener(Event.RESIZE, resizeListener); 
&lt;/pre&gt;
&lt;p&gt;After adding the above line in the initialization, I added a resizeListener function that scales based on the default dimensions. It also ensures no scaling happens in full screen mode. 
&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
private function resizeListener(e:Event):void {
    // don&apos;t scale if entering full screen mode
    if (stage.displayState == StageDisplayState.FULL_SCREEN)  {
        _view.scaleX = 1;
        _view.scaleY = 1;
    } else {
        _view.scaleX = stage.stageWidth / 964;
        _view.scaleY = stage.stageHeight / 586;
    }
}
&lt;/pre&gt;
&lt;p&gt;
For the Spotlight asset, there are a number of different layouts (home, featured and news). The main class has a resizeListener function that scales accordingly to which layout type is being used.
&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
private function resizeListener(e:Event):void {
    var type:String = _view.getLayoutType();

    if (type == &quot;featured&quot;) { 
        _view.scaleX = stage.stageWidth / 958;
       _view.scaleY = stage.stageHeight / 180;
   } else if (type == &quot;home&quot;) { 
        _view.scaleX = stage.stageWidth / 964;
        _view.scaleY = stage.stageHeight / 428;
    } else if (type == &quot;news&quot;) {
        _view.scaleX = stage.stageWidth / 964;
        _view.scaleY = stage.stageHeight / 189;
    }
}
&lt;/pre&gt;
&lt;p&gt;Because the layout type isn&apos;t set until the XML is loaded, I listen for that event in my URLLoader.
&lt;/p&gt;
&lt;pre class=&quot;brush: java; toolbar: false&quot;&gt;
xmlLoader.addEventListener(Event.COMPLETE, resizeListener);
&lt;/pre&gt;
&lt;p&gt;With the pure ActionScript implementation, the zoom level is automatically persisted. The Event.RESIZE event is fired by the Flash plugin when the page first loads if the dimensions are not the default. 
&lt;/p&gt;
&lt;p&gt;
That&apos;s it! Special thanks to &lt;a href=&quot;http://www.jamesward.com/&quot;&gt;James Ward&lt;/a&gt; for clueing me into &lt;em&gt;scaleX&lt;/em&gt; and &lt;em&gt;scaleY&lt;/em&gt;. Hopefully Hulu and Comcast can use this tutorial to scale their video players too. &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/presentations_from_the_irish_software</guid>
    <title>My Presentations from The Irish Software Show 2010</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/presentations_from_the_irish_software</link>
        <pubDate>Thu, 10 Jun 2010 07:11:35 -0600</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>grails</category>
    <category>iss2010</category>
    <category>rubyonrails</category>
    <category>flex</category>
    <category>rails</category>
    <category>gwt</category>
            <description>This week I&apos;ve been enjoying Dublin, Ireland thanks to the 2nd Annual &lt;a href=&quot;http://epicenter.ie/2010.html&quot;&gt;Irish Software Show&lt;/a&gt;. On Wednesday night, I spoke about &lt;a href=&quot;http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=152#session&quot;&gt;The Future of Web Frameworks&lt;/a&gt; and  participated in a panel with Grails, Rails, ASP.NET MVC and Seaside developers. It was a fun night with lots of lively discussion. Below is my presentation from this event.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;&lt;object id=&quot;__sse3271151&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;amp;stripped_title=the-future-of-web-frameworks&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed name=&quot;__sse3271151&quot; src=&quot;//static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;amp;stripped_title=the-future-of-web-frameworks&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;This morning, I delivered my &lt;a href=&quot;http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=151#session&quot;&gt;Comparing Kick-Ass Web Frameworks&lt;/a&gt; talk. This presentation contains updated statistics for various metrics comparing Rails vs. Grails and Flex vs. GWT. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;object id=&quot;__sse2644393&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed name=&quot;__sse2644393&quot; src=&quot;//static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks to all who attended my talks this week!
&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 5px; color: #666&quot;&gt;
P.S. I believe audio was recorded on Wednesday night, but I&apos;m unsure how it turned out. I&apos;m pretty sure no recordings were done on this morning&apos;s session. 
&lt;/p&gt;&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/tssjs_2010_presentations_and_summary</guid>
    <title>My TSSJS 2010 Presentations and Summary</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/tssjs_2010_presentations_and_summary</link>
        <pubDate>Fri, 19 Mar 2010 17:29:08 -0600</pubDate>
    <category>Java</category>
    <category>future</category>
    <category>webframeworks</category>
    <category>vegas</category>
    <category>tssjs</category>
    <category>gwt</category>
    <category>spring</category>
    <category>java</category>
    <category>flex</category>
            <description>This afternoon, I delivered my last talk at &lt;a href=&quot;http://javasymposium.techtarget.com/&quot;&gt;TSSJS 2010&lt;/a&gt; on &lt;a href=&quot;http://javasymposium.techtarget.com/html/frameworks.html#MRaibleFrameworks&quot;&gt;The Future of Web Frameworks&lt;/a&gt;. It&apos;s true that I made some &lt;a href=&quot;http://twitter.com/xgerman/status/10741037460&quot; title=&quot;JSF and Wicket are dead! Bold statement but GWT is a better alternative to begin with anyway #tssjs&quot;&gt;bold statements&lt;/a&gt;, but please remember that this is my personal opinion, based on my experience. For the most part, I&apos;ve been involved in super high-traffic websites for the last few years and this has influenced my opinion on web frameworks. Just because I don&apos;t recommend your favorite framework doesn&apos;t mean it won&apos;t work for you. In fact, many of the best web applications today were built without an open source (or commercial) web framework. In the end, it&apos;s not as much about the web framework you&apos;re using as it is about hiring smart people. Below is my slide deck from this talk.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;stripped_title=the-future-of-web-frameworks&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;stripped_title=the-future-of-web-frameworks&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Yesterday, I did a &lt;a href=&quot;http://javasymposium.techtarget.com/html/theclientside.html#MRaibleSmack&quot;&gt;GWT vs. Flex Smackdown&lt;/a&gt; with &lt;a href=&quot;http://jamesward.com&quot;&gt;James Ward&lt;/a&gt;. While there wasn&apos;t as much trash talking as I&apos;d hoped, I enjoyed delivering it and disputing the greatness of Flex. Below is the presentation that James and I delivered.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flexvsgwtsmackdown-100311234937-phpapp01&amp;stripped_title=flex-vs-gwt-smackdown&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slidesharecdn.com/swf/ssplayer2.swf?doc=flexvsgwtsmackdown-100311234937-phpapp01&amp;stripped_title=flex-vs-gwt-smackdown&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;The show itself was great this year. It had more attendees than I&apos;ve seen in a long time. There were a lot of really interesting sessions and and an often humorous &lt;a href=&quot;http://twitter.com/search?q=%23tssjs&quot;&gt;Twitter back-channel&lt;/a&gt;. I attended quite a few talks and jotted down my notes from several of them. Please see the links below if you&apos;re interested in the sessions I attended. You can view all of the presentations from TSSJS 2010 on &lt;a href=&quot;http://slideshare.net/javasymposium&quot;&gt;SlideShare&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_happening_in_the&quot;&gt;What&apos;s Happening in the Java World?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/software_quality_the_quest_for&quot;&gt;Software Quality: The Quest for the Holy Grail?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/the_cloud_computing_continuum_with&quot;&gt;The Cloud Computing Continuum with Bob McWhirter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/highly_interactive_software_with_java&quot;&gt;Highly Interactive Software with Java and Flex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/c_java_and_net_lessons&quot;&gt;C++, Java and .NET: Lessons Learned from the Internet Age&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_rich_web_service_apis&quot;&gt;Developing Rich Web Service APIs with Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_new_in_spring&quot;&gt;What&apos;s New in Spring 3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone who came to Vegas and to &lt;a href=&quot;http://theserverside.com&quot;&gt;TheServerSide&lt;/a&gt; for an excellent conference.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/highly_interactive_software_with_java</guid>
    <title>Highly Interactive Software with Java and Flex</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/highly_interactive_software_with_java</link>
        <pubDate>Thu, 18 Mar 2010 12:29:26 -0600</pubDate>
    <category>Java</category>
    <category>mxml</category>
    <category>spring</category>
    <category>ria</category>
    <category>jamesward</category>
    <category>adobe</category>
    <category>java</category>
    <category>soap</category>
    <category>flex</category>
    <category>blazeds</category>
    <category>actionscript</category>
    <category>amf</category>
            <description>This morning at TSSJS, I attended &lt;a href=&quot;http://jamesward.com&quot;&gt;James Ward&apos;s&lt;/a&gt; talk about &lt;a href=&quot;http://javasymposium.techtarget.com/html/theclientside.html%23JWardFlex&quot;&gt;Highly Interactive Software with Java and Flex&lt;/a&gt;. Below are my notes from his talk.
&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 10px&quot;&gt;
Application have moved from mainframes (hard to deploy, limited clients) to client/server (hard to deploy, full client capabilities) to web applications (easy to deploy, limited clients) to rich internet applications (easy to deploy, full client capabilities). 
&lt;/p&gt;
&lt;p&gt;
Shortly after showing a diagram of how applications have changed, James showed a demo of a sample Flex app for an automobile insurance company. It was very visually appealing, kinda like using an iPhone app. It was a multi-form application that slides right-to-left as you progress through the wizard. It also allowed you to interact with a picture of your car (to indicate where the damage happened) and a map (to indicate how the accident happened). Both of these interactive dialogs still performed data entry, they just did it in more of a visual way.
&lt;/p&gt;
&lt;p&gt;
Adobe&apos;s developer technology for building RIAs is Flex. There&apos;s two different languages in Flex: ActionScript and MXML. ActionScript was originally based on JavaScript, but now (in ActionScript 3) uses features from Java and C#. On top of ActionScript is MXML. It&apos;s a declarative language, but unlike JSP taglibs. All you can do with MXML is instantiate objects and set properties. It&apos;s merely a convenience language, but also allows tooling. The open source SDK compiler takes Flex files and compiles it into a *.swf file. This file can then be executed using the Flash Player (in browser) or Air (desktop).
&lt;/p&gt;
&lt;p&gt;
The reason Adobe developed two different runtimes was because they didn&apos;t want to bloat the Flash Player. Once the applications are running client-side, the application talks to the web server. Protocols that can be used for communication: SOAP, HTTP/S, AMF/S and RTMP/S. The web server can be composed of REST or SOAP Web Services, as well as BlazeDS or LC Data Services to talk directly to Java classes.
&lt;/p&gt;
&lt;p&gt;
To see all the possible Flex components, see &lt;a href=&quot;http://flex.org/tour&quot;&gt;Tour de Flex&lt;/a&gt;. It contains a number of components: core components, data access controls, AIR capabilities, cloud APIs, data visualization. The &lt;a href=&quot;http://www.adobe.com/devnet/flex/tourdeflex/web/%23sampleId=14050;illustIndex=0;docIndex=-1&quot;&gt;IBM ILOG Elixir real-time dashboard&lt;/a&gt; is particularly interesting, as is Doug McCune&apos;s &lt;a href=&quot;http://www.adobe.com/devnet/flex/tourdeflex/web/#sampleId=16300;illustIndex=0;docIndex=0&quot;&gt;Physics Form&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Next James showed us some code. He used Flex Builder to create a new Flex project with BlazeDS. The backend for this application was a JSP page that talks to a database and displays the results in XML. In the main .mxml file, he used &amp;lt;s:HTTPService&gt; with a URL pointing to the URI of the JSP. Then he added an &amp;lt;mx:DataGrid&gt; and the data binding feature of Flex. To do this, he added dataProvider=&quot;{srv.lastResult.items.item}&quot; to the DataGrid tag, where &quot;srv&quot; is the id of the HTTPService. Then he added a Button with click=&quot;srv.send()&quot; and set the layout to VerticalLayout. This was a simple demo to show how to hook in a backend with XML. 
&lt;/p&gt;
&lt;p&gt;To show that Flex can interact with more than XML over HTTP, James wrote a SOAP service and changed &amp;lt;s:HTTPService&gt; to &amp;lt;s:WebService&gt; and changed the &quot;url&quot; attribute to &quot;wsdl&quot; (and adjusted the value as appropriate). Then rather than using {srv.lastResult.*}, he had to bind to a particular method and change it to {srv.getElements.lastResults}. The Button&apos;s click value also had to change to &quot;srv.getElements(0, 2000)&quot; (since the method takes 2 parameters). 
&lt;/p&gt;
&lt;p&gt;After doing coding in Flex Builder, James switched to his &lt;a href=&quot;http://www.jamesward.com/census&quot;&gt;Census&lt;/a&gt; to compare server-execution times. In the first example (Flash XML AS), most of the time was spent gzipping the 1MB XML file, but the transfer time is reduced because of this. The server execution time is around 800ms. Compare this to the Flex AMF3 example where the server execution time is 49ms. This is because the AMF (binary) protocol streamlines the data and doesn&apos;t include repeated metadata. 
&lt;/p&gt;
&lt;p&gt;
To integrate BlazeDS in your project, you add the dependencies and then map the MessageBrokerServlet in your web.xml. Then you use a services-config.xml to define the protocol and remoting-config.xml to define what Java classes to export as services. To use this in the Flex aplication, James changed &amp;lt;s:WebService&gt; to &amp;lt;s:RemoteObject&gt;. He changed the &quot;wsdl&quot; attribute to &quot;endpoint&quot; and added a &quot;destination&quot; attribute to specify the name of the aliased Java class to talk to. Next, James ran the demo and showed that he could change the number of rows from 2,000 to 20,000 and the load time was still much, much faster than the XML and SOAP versions.
&lt;/p&gt;
&lt;p&gt;
There&apos;s also a &lt;a href=&quot;http://www.springsource.org/spring-flex&quot;&gt;Spring BlazeDS Integration project&lt;/a&gt; that allows you to simply annotate beans to expose them as AMF services. 
&lt;/p&gt;
&lt;p&gt;
BlazeDS also includes a messaging service that you can use to create publishers and subscribers. The default channels in BlazeDS uses HTTP Streaming and HTTP Long Polling (comet), but it can be configurable (e.g. to use JMS). There&apos;s also an Adobe commercial product that keeps a connection open using NIO on the server and has a binary protocol. This is useful for folks that need more real-time data in their applications (e.g. trading floors). 
&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 10px&quot;&gt;
I thought this was a really good talk by James. It had some really cool visual demos and the demo was interesting in showing how easy it was to switch between different web services and protocols. This afternoon, I&apos;ll be duking it out with James at the &lt;a href=&quot;http://javasymposium.techtarget.com/html/theclientside.html#MRaibleSmack&quot;&gt;Flex vs. GWT Smackdown&lt;/a&gt;. If you have deficiencies of Flex you&apos;d like me to share during that talk, please let me know.
</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/comparing_kick_ass_web_frameworks</guid>
    <title>Comparing Kick-Ass Web Frameworks at The Rich Web Experience</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/comparing_kick_ass_web_frameworks</link>
        <pubDate>Fri, 4 Dec 2009 08:16:48 -0700</pubDate>
    <category>Java</category>
    <category>jobs</category>
    <category>gwt</category>
    <category>richwebexperience</category>
    <category>richweb</category>
    <category>trends</category>
    <category>flex</category>
    <category>struts</category>
    <category>rails</category>
    <category>grails</category>
            <description>Yesterday, I delivered my &lt;a href=&quot;http://www.therichwebexperience.com/conference/orlando/2009/12/session?id=15951&quot;&gt;Comparing Kick-Ass Web Frameworks&lt;/a&gt; talk at the Rich Web Experience in Orlando, Florida. Below are the slides I used:&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin-bottom: 10px&quot; id=&quot;__ss_2644393&quot;&gt;
&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;p&gt;Although it&apos;s difficult to convey a presentation in a slide deck, I can offer you my conclusion: &lt;a href=&quot;http://java.dzone.com/news/there-no-best-web-framework&quot;&gt;there is no &quot;best&quot; web framework&lt;/a&gt;. I believe web frameworks are like &lt;a href=&quot;http://www.ted.com/talks/malcolm_gladwell_on_spaghetti_sauce.html&quot;&gt;spaghetti sauce&lt;/a&gt; in that everyone has different tastes and having so many choices is necessary to satisfy everyone. You can read more about the &lt;em&gt;plural nature of perfection&lt;/em&gt; in Malcolm Gladwell&apos;s &lt;a href=&quot;http://www.gladwell.com/2004/2004_09_06_a_ketchup.html&quot;&gt;The Ketchup Conundrum&lt;/a&gt; (a written version of &lt;a href=&quot;http://www.ted.com/talks/malcolm_gladwell_on_spaghetti_sauce.html&quot;&gt;What we can learn from spaghetti sauce&lt;/a&gt;). Even though there is no &quot;best&quot; web framework, I believe GWT, Flex, Rails and Grails are frameworks that every web developer should try. They really do make it fun to develop web applications.
&lt;/p&gt;
&lt;p&gt;You can find the slides for my other RWE talk at &lt;a href=&quot;http://raibledesigns.com/rd/entry/building_sofea_applications_with_gwt&quot;&gt;Building SOFEA Applications with GWT and Grails&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Kudos to &lt;a href=&quot;http://www.nofluffjuststuff.com&quot;&gt;Jay Zimmerman&lt;/a&gt; for putting on a great show in Orlando this year. I had a great time talking with folks and learning in the sessions I attended. I particularly enjoyed bringing my parents and kids and staying at such a nice resort. Disney World (Magic Kingdom) and Universal Studios was very enjoyable due to the short lines. Also, the weather was perfect - especially considering the freezing cold in Denver this week. &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/what_would_you_like_to</guid>
    <title>What would you like to see at TSSJS 2010?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/what_would_you_like_to</link>
        <pubDate>Mon, 12 Oct 2009 11:28:21 -0600</pubDate>
    <category>Java</category>
    <category>tssjs</category>
    <category>vegas</category>
    <category>java</category>
    <category>gwt</category>
    <category>jvm</category>
    <category>theserverside</category>
    <category>conference</category>
    <category>flex</category>
            <description>&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; class=&quot;picture&quot; alt=&quot;The Venetian&quot; height=&quot;98&quot; width=&quot;130&quot;&gt;&lt;/a&gt;
A couple months ago, I was asked by &lt;a href=&quot;http://www.theserverside.com/&quot;&gt;TheServerSide&lt;/a&gt; to speak at next year&apos;s &lt;a href=&quot;http://javasymposium.techtarget.com/&quot;&gt;TheServerSide Java Symposium&lt;/a&gt; in Las Vegas. In addition, they asked me to help them evaluate presentation proposals and suggest topics/speakers. 
&lt;/p&gt;
&lt;p&gt;
First of all, I think the biggest thing that TSSJS could do to improve is to host more networking events. With the &lt;a href=&quot;http://java.dzone.com/news/fate-javaone-community-round&quot;&gt;JavaOne Party being over&lt;/a&gt;, I think there&apos;s a tremendous opportunity to fill a gap in the networking needs of the Java Community. When I &lt;a href=&quot;http://raibledesigns.com/rd/entry/tssjs_bof_web_framework_sweet&quot;&gt;first attended TSSJS in 2006&lt;/a&gt;, there were a fair amount of parties and everyone got to interact quite a bit. &lt;a href=&quot;http://raibledesigns.com/rd/entry/java_web_framework_smackdown_at&quot;&gt;In 2008&lt;/a&gt;, there were no networking events. I believe having a strong networking story would attract a lot more attendees, companies and sponsors.
&lt;/p&gt;
&lt;p&gt;Secondly, I think it&apos;s possible that TSSJS has too many server-side related sessions. IMO, the server-side (and middleware in general) isn&apos;t that exciting. TechTarget appears to own &lt;a href=&quot;http://theclientside.com&quot;&gt;TheClientSide&lt;/a&gt;, so why not add some more client-side stuff to the mix? For example, I&apos;d love to see a Struts 1 app-makeover using different technologies (for example, Flex, GWT and jQuery). I think HTML5 and Google Wave&apos;s Architecture sessions would be interesting too. If adding client-side sessions is too far away from TheServerSide, maybe it should be renamed to TheServerSide JVM Symposium and there can be all kinds of sessions on JVM languages (e.g. Scala, JRuby, Groovy) and all the great things those languages can accomplish.
&lt;/p&gt;
&lt;p&gt;Lastly, I&apos;ve been asked to send a couple session proposals. Currently, I&apos;m thinking about a doing GWT vs. Flex Smackdown with &lt;a href=&quot;http://www.jamesward.com/blog/&quot;&gt;James Ward&lt;/a&gt;, but I&apos;m open to other ideas. It&apos;s been quite awhile since I did a &quot;Comparing Web Frameworks&quot; talk. Maybe &quot;Hot Web Frameworks for 2010&quot; is more appropriate? I also think it&apos;d be interesting to do a somewhat philosophical talk on &quot;The State of Web Frameworks&quot; and where we&apos;re headed in the next year.&lt;/p&gt;
&lt;p&gt;What would make &lt;em&gt;you&lt;/em&gt; want to attend TSSJS next year? Let me know your thoughts and I&apos;ll do my best to make them a reality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update October 22, 2009:&lt;/strong&gt; Whoo hoo! It looks like &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=58300&quot;&gt;TheClientSide&lt;/a&gt; &lt;em&gt;will&lt;/em&gt; be a part of TSSJS Vegas next year. Should be a great show.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/my_drunk_on_software_interview</guid>
    <title>My Drunk on Software Interview</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/my_drunk_on_software_interview</link>
        <pubDate>Sun, 5 Apr 2009 22:23:57 -0600</pubDate>
    <category>Java</category>
    <category>sofea</category>
    <category>java</category>
    <category>drunkonsoftware</category>
    <category>ajax</category>
    <category>flex</category>
    <category>interview</category>
            <description>Back in February, I met up with &lt;a href=&quot;http://www.jamesward.com/blog/&quot;&gt;James Ward&lt;/a&gt; and &lt;a href=&quot;http://ectropic.com/wordpress/&quot;&gt;Jon Rose&lt;/a&gt; for a &lt;a href=&quot;http://www.drunkonsoftware.com/2009/04/05/episode-11-matt-raible/&quot;&gt;Drunk on Software interview&lt;/a&gt;. We enjoyed some &lt;a href=&quot;http://www.gordonbiersch.com/restaurants/index.php?pg=beer&quot;&gt;good beer&lt;/a&gt; and had a great conversation about SOFEA, open source and RIA. See larger video &lt;a href=&quot;http://www.drunkonsoftware.com/2009/04/05/episode-11-matt-raible/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;embed src=&quot;//blip.tv/play/AfbqQpHGOw&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;281.25&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt; 
&lt;/p&gt;&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/building_rich_applications_with_appcelerator</guid>
    <title>Building Rich Applications with Appcelerator</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/building_rich_applications_with_appcelerator</link>
        <pubDate>Wed, 22 Oct 2008 16:18:42 -0600</pubDate>
    <category>Java</category>
    <category>gwt</category>
    <category>appcelerator</category>
    <category>softwaresummit</category>
    <category>webframeworks</category>
    <category>ria</category>
    <category>flex</category>
    <category>presentation</category>
            <description>This afternoon, I delivered my &lt;a href=&quot;http://softwaresummit.com/2008/speakers/raible.htm&quot;&gt;Building Rich Applications with Appcelerator&lt;/a&gt; talk for the 3rd time at Colorado Software Summit. When I first proposed this topic, I hadn&apos;t used &lt;a href=&quot;http://appcelerator.org&quot;&gt;Appcelerator&lt;/a&gt; and saw this as a good opportunity to learn more about it. I&apos;m glad I did.
&lt;/p&gt;
&lt;p&gt;
IMO, Appcelerator is a lot like Dojo in how it parses pages and turns HTML with special attributes into JavaScript widgets. I can&apos;t help but think a pre-compilation step would be nice to speed things up. I like Appcelerator&apos;s extensive &lt;a href=&quot;http://doc.appcelerator.org/reference/widget_reference/index.html&quot;&gt;Widget Library&lt;/a&gt;, and I especially like that they re-use many widgets rather than re-creating their own. Finally, I really dig the &quot;SOA in a browser&quot; approach where everything is a message and you can easily publish and subscribe to events - on the client and server. Below is my presentation, please let me know if you have any questions.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=building-rich-applications-with-appcelerator-12002&amp;stripped_title=building-rich-applications-with-appcelerator&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slideshare.net/swf/ssplayer2.swf?doc=building-rich-applications-with-appcelerator-12002&amp;stripped_title=building-rich-applications-with-appcelerator&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;&lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/mraible/building-rich-applications-with-appcelerator?type=powerpoint&quot; title=&quot;View Building Rich Applications with Appcelerator on SlideShare&quot;&gt;View on Slideshare&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/applying_flash_to_java_flex</guid>
    <title>Applying Flash to Java: Flex and OpenLaszlo with Dustin Marx</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/applying_flash_to_java_flex</link>
        <pubDate>Wed, 22 Oct 2008 14:31:10 -0600</pubDate>
    <category>Java</category>
    <category>comparison</category>
    <category>java</category>
    <category>softwaresummit</category>
    <category>webframeworks</category>
    <category>flash</category>
    <category>ria</category>
    <category>openlaszlo</category>
    <category>flex</category>
    <category>adobe</category>
            <description>If you&apos;re going to choose Flex or OpenLaszlo, chances are you&apos;re targeting Flash. The Flash Player allows you to abstract the browser idiosyncrasies and give users a better experience. It hides the browser quirks from both developers and users. It&apos;s also a highly ubiquitous web browser runtime environment. It provides a user experience way beyond traditional HTTP request-response. Also, its visual effects and &quot;richness&quot; rival of non-browser desktop applications.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://marxsoftware.blogspot.com/&quot;&gt;Mark&apos;s blog&lt;/a&gt; stats show that 95% of readers are using Flash 9 and 1% is Flash 10. All others don&apos;t have their version exposed. Most other sources claim that Flash 9 has 98% penetration in mature markets. One of the nicest things about Flash is it frees users from limitations of traditional web applications. Request/response is largely a thing of the past and Ajax-like behavior was built-in from the beginning.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flash Criticisms&lt;/strong&gt;: has reduced SEO as well as bookmarking and URL history support. 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flash Player Criticisms&lt;/strong&gt;: not open source, no significant alternative, no 64-bit player, loading performance and it&apos;s only useful for games, movies and annoying advertisements.&lt;/p&gt;
&lt;p&gt;
The good news is Flash is getting better. There&apos;s currently a SWF Searchability initiative with Google and Yahoo!. For bookmarking and URL History, you can use &quot;deep linking&quot; with &lt;code&gt;mx.managers.BrowserManager&lt;/code&gt; and &lt;code&gt;mx.managers.HistoryManager&lt;/code&gt;. Flash Player issues are also being addressed. There&apos;s a Flash Open Screen Project, there&apos;s a 64-bit player in Adobe Labs and Flash 9/10 is much better than in the past.
&lt;/p&gt;
&lt;p&gt;
To prove that Flash is a compelling technology, all you have to do is look at Microsoft&apos;s Silverlight and Sun&apos;s JavaFX. These are direct competitors that are fairly new and prove that companies like what Flash has.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flex&lt;/strong&gt;&lt;br/&gt;
Flex is not Flash. Flex requires Flash (9+), but Flash does not require Flex. Flex is a language and framework and applications are compiled into &lt;strong&gt;.swf&lt;/strong&gt; files. Flash is the runtime environment that executes .swf files. Flex 3 is FREE. The Flex SDK, compiler and debugger are open source. They have no license costs. BlazeDS is also open source and has no license cost.
&lt;/p&gt;
&lt;p&gt;Flex MXML was formerly called &lt;em&gt;Macromedia XML&lt;/em&gt;. It&apos;s an XML-based presentation/layout language that&apos;s editable with any text editor or IDE. MXML is to ActionScript 3 as JSP is to Java. MXML provides the layout and ActionScript provides the dynamic business logic.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ActionScript&lt;/strong&gt;&lt;br/&gt;
ActionScript is an ECMAScript implementation that&apos;s been proposed as the Edition 4 implementation. It&apos;s not your older sibling&apos;s JavaScript. It uses class-based object-oriented features and static typing. Thanks to the Flash Player, it works the same across multiple browsers. Most of the things you can do with MXML, you can do with ActionScript. However, MXML typically requires less LOC.
&lt;/p&gt;
&lt;p&gt;ActionScript allows packages, interfaces, inheritance, objects and methods. It includes extensive XML Support, particularly E4X (ECMAScript for XML). It has a large class library and can talk directly to the Flash Player. Finally, it has many Java-like features and it&apos;s syntax looks similar.
&lt;/p&gt;
&lt;p&gt;At this point, Dustin started doing demos of two popular Flex components: RichText Editor (which creates horrible HTML) and Data Grid. More third-party Flex components seem to appear every day. Examples include &lt;a href=&quot;http://code.google.com/p/flexlib/&quot;&gt;flexlib&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/asdia/&quot;&gt;ASDIA&lt;/a&gt; as well as all those listed on &lt;a href=&quot;http://flexbox.mrinalwadhwa.com/&quot;&gt;FlexBox&lt;/a&gt;. Additionally, it&apos;s not too difficult to create your own Flex components (no proof provided).&lt;/p&gt;
&lt;p&gt;
Flex&apos;s property binding is one of Dustin&apos;s favorite features, but he says he has a difficult time conveying how cool it is. Property binding allows you to tie data in one object to data in another object. Updates in one object affect another. To use it in MXML, you can use curly braces or the &lt;code&gt;&lt;mx:Binding&gt;&lt;/code&gt; tag. In ActionScript, you can use the &lt;code&gt;BindingUtils&lt;/code&gt; object. You can also use Flex&apos;s metadata annotation &quot;Bindable&quot; to denote bindable objects.
&lt;/p&gt;
&lt;p&gt;To compile Flex applications, you can use &lt;strong&gt;mxmlc&lt;/strong&gt; from the command line. You can use Ant with the &lt;code&gt;&amp;lt;exec&gt;&lt;/code&gt; task or using Flex&apos;s Ant Tasks. You can also invoke mxmlc from Java as long as you include mxmlc.jar in your classpath. FlexBuilder is an Eclipse-based IDE that&apos;s not included with the free Flex SDK. It&apos;s not a free product and can be used as a plugin or a standalone IDE.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flex and Java&lt;/strong&gt;&lt;br/&gt;
There&apos;s two predominant out-of-the-box methods for Flex to communicate with Java EE backends.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;HttpService&lt;/strong&gt;: traditional HTTP request/response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebService&lt;/strong&gt;: SOAP-based Web Services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the above two methods aren&apos;t fast enough, you can use BlaseDS and it&apos;s additional options.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web Messaging&lt;/strong&gt;: HTTP publish/subscribe with JMS, ColdFusion and/or other Flash/Ajax client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remoting with AMF&lt;/strong&gt;: access server-side objects from Flash client-tier as if they were hosted there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flash applications can access either a client&apos;s machine or a remote site, but not both. You can use a &lt;em&gt;crossdomain.xml&lt;/em&gt; file on your server to allow remote Flash clients to connect. This file allows access for both Flex and OpenLaszlo applications.
&lt;/p&gt;
&lt;p&gt;BlazeDS adds proxy server support for HTTPService and WebService. To use, set the &lt;em&gt;useProxy&lt;/em&gt; attribute to &quot;true&quot;. Features include authentication and logging. It adds a new RPC mechanisms called &lt;strong&gt;RemoteObject&lt;/strong&gt;. This object allows ActionScript and Java EE transparent integration. It also adds publish/subscribe messaging with a JMS Adapter available. Lastly, it adds Ajax support to your Flex application.&lt;/p&gt;
&lt;p&gt;GraniteDS is an open-source (LGPL) alternative to Adobe LiveCycle and is similar to BlazeDS. It has COMET-like functionality and supports Spring, Spring Security, EJB 3, Seam and Guice.&lt;/p&gt;
&lt;p&gt;Flex Frameworks: Cairngorm (Adobe Consulting), Pure MVC, Mate and many others.&lt;/p&gt;
&lt;p&gt;Flex 4 (Gumbo) will have improvements for designers (easier customization, better tool support), improvements for developers (faster compiler, two-way data binding) and will leverage new features of Flash 10.
&lt;p&gt;&lt;strong&gt;OpenLazlo&lt;/strong&gt;&lt;br/&gt;
OpenLaszlo 4 is XML-based and uses an XPath syntax for data access. OpenLaszlo was actually created before Flex and is ECMAScript-based. Unlike Flex that requires Flash 9, OpenLaszlo is architected to deploy on different runtime environments, including: Flash 7/8/9 and DHTML. Dustin believes OpenLaszlo would be a lot more appealing if your source code could be compiled into Silverlight or JavaFX.
&lt;/p&gt;
&lt;p&gt;OpenLaszlo&apos;s syntax looks a lot like Flex, except it does not use namespaces. OpenLaszlo&apos;s Constraints are similar to Flex&apos;s property binding, except the syntax is a bit different. You use &lt;code&gt;${}&lt;/code&gt; in LZX tags or &lt;code&gt;applyConstraint()&lt;/code&gt; and &lt;code&gt;LzDelegate&lt;/code&gt; in scripts. OpenLaszlo&apos;s event handling is similar to Flex and JavaScript event handling. All attributes have an implicit &quot;on&quot; event that is triggered when an attribute&apos;s value is changed. Event handlers can be written CSS-style in LZX nodes or using the &lt;code&gt;&amp;lt;handler&gt;&amp;lt;/handler&gt;&lt;/code&gt; tag. Script code can be embedded in LZX XML in many ways:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Inside event attributes&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;script&gt;&amp;lt/script&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;method&gt;&amp;lt/method&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;Within &lt;code&gt;&amp;lt;handler&gt;&amp;lt/handler&gt;&lt;/code&gt; tags&lt;/li&gt;
&lt;li&gt;In a separate file (&lt;code&gt;&amp;lt;script src=&quot;someFile.js&quot; /&gt;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dustin believes the debugger and view-source tools in OpenLaszlo are much better than the ones available for Flex.&lt;/p&gt;
&lt;p&gt;For the rest of the presentation, Dustin covered many of Laszlo&apos;s feature, how they relate to Java as well as how to integrate SWF and HTML. &lt;a href=&quot;http://code.google.com/p/swfobject/&quot;&gt;SWFObject&lt;/a&gt; is Dustin&apos;s preferred method for adding Flash to HTML. One of its nifty features is it allows SWF-to-SWF communication.&lt;/p&gt;
&lt;p&gt;This talk was an excellent and in-depth overview of Flash, Flex and OpenLaszlo. I especially liked all the details on ActionScript and the different methods for remote communication. &lt;em&gt;Nice job Dustin!&lt;/em&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/xebia_ria_framework_contest</guid>
    <title>Xebia RIA Framework Contest</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/xebia_ria_framework_contest</link>
        <pubDate>Tue, 7 Oct 2008 08:06:48 -0600</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>silverlight</category>
    <category>echo3</category>
    <category>javafx</category>
    <category>flex</category>
    <category>ria</category>
    <category>gwt</category>
    <category>comparison</category>
            <description>Last year, I blogged about the &lt;a href=&quot;http://raibledesigns.com/rd/entry/xebia_web_framework_contest&quot;&gt;Xebia Web Framework Contest&lt;/a&gt; where Struts 2, GWT, Wicket and MyFaces (JSF) were all used to develop the same applications. It seems they&apos;ve done it again this year, &lt;a href=&quot;http://blog.xebia.fr/2008/10/03/ria-contest-flex-silverlight-gwt-echo3-javafx/&quot;&gt;comparing RIA frameworks&lt;/a&gt; (&lt;a href=&quot;http://translate.google.com/translate?u=http://blog.xebia.fr/2008/10/03/ria-contest-flex-silverlight-gwt-echo3-javafx/&amp;amp;hl=fr&amp;amp;ie=UTF-8&amp;amp;sl=fr&amp;amp;tl=en&quot;&gt;English translation&lt;/a&gt;) this time. 
&lt;/p&gt;
&lt;div style=&quot;margin-left: 0; margin-bottom: 10px&quot; class=&quot;quote&quot;&gt;
&lt;p&gt;Five teams were formed, five frameworks have been selected:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flex 3 Flex 3&lt;/li&gt;
&lt;li&gt;Silverlight 2.0 beta 2 Silverlight 2.0 beta 2&lt;/li&gt;
&lt;li&gt;Google GWT 1.5 Google GWT 1.5&lt;/li&gt;
&lt;li&gt;Echo3 Echo3&lt;/li&gt;
&lt;li&gt;JavaFX Preview SDK JavaFX SDK Preview&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 0&quot;&gt;The number of teams is limited, the list of frameworks is also selected, and we have therefore necessarily set aside some frameworks that would have certainly had their place in the contest. Examples Ext JS, Yahoo! UI, Curl, XUL, ZK or OpenLaszlo. If you have experience on one of these frameworks, feel free to share in the comments on this article! [&lt;a href=&quot;http://blog.xebia.fr/2008/10/03/ria-contest-flex-silverlight-gwt-echo3-javafx/&quot;&gt;Read More &amp;raquo;&lt;/a&gt;]&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The winner? &lt;strong&gt;Flex&lt;/strong&gt; - which doesn&apos;t surprise me a whole lot.&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
After this day, the Flex team, has clearly demarcated from its competitors. After two sprints of development and ownership, it could devote the third and final sprint to get rich quick and easy application, focusing only on the features and user experience. It is thanks to the wealth of high-level components, the wealth of documentation available and a maturity framework that the team has made the Flex application&apos;s most successful.
&lt;/p&gt;
&lt;p&gt;Good stuff - thanks Xebia!</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/presenting_web_frameworks_of_the</guid>
    <title>Presenting Web Frameworks of the Future Tomorrow in Denver</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/presenting_web_frameworks_of_the</link>
        <pubDate>Wed, 30 Jul 2008 21:56:17 -0600</pubDate>
    <category>Open Source</category>
    <category>opensource</category>
    <category>rest</category>
    <category>webframeworks</category>
    <category>grails</category>
    <category>rails</category>
    <category>oscon</category>
    <category>flex</category>
    <category>gwt</category>
            <description>Tomorrow (Thursday) night, I&apos;ll be doing an encore presentation of my &lt;a href=&quot;http://raibledesigns.com/rd/entry/oscon_2008_web_frameworks_of&quot;&gt;Web Frameworks of the Future&lt;/a&gt; at &lt;a href=&quot;http://groups.google.com/group/derailed&quot;&gt;DeRailed&lt;/a&gt;. If you&apos;re in Denver and would like to hear me ramble while drinking a beer, join us at &lt;a href=&quot;http://www.forestroom5.com/&quot;&gt;Forestroom 5&lt;/a&gt; at 6:30.&lt;/p&gt;
&lt;p&gt;After the &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_oscon_aftermath&quot;&gt;last few days&lt;/a&gt;, I&apos;m happy to report I should be in good enough condition to pull this off. If you&apos;re curious to learn more about my experience at OSCON and this presentation, please see &lt;a href=&quot;http://blog.linkedin.com/blog/2008/07/oscon-2008-and.html&quot;&gt;my writeup on the LinkedIn Blog&lt;/a&gt;.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/oscon_2008_web_frameworks_of</guid>
    <title>[OSCON 2008] Web Frameworks of the Future: Flex, GWT, Grails and Rails</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/oscon_2008_web_frameworks_of</link>
        <pubDate>Wed, 23 Jul 2008 16:25:23 -0600</pubDate>
    <category>Open Source</category>
    <category>rails</category>
    <category>oscon</category>
    <category>rest</category>
    <category>gwt</category>
    <category>oscon08</category>
    <category>flex</category>
    <category>grails</category>
    <category>opensource</category>
    <category>webframeworks</category>
            <description>Below is the presentation I&apos;m &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/speaker/6444&quot;&gt;delivering at OSCON&lt;/a&gt; today. Unfortunately, I had to remove slides on GWT and Flex to fit w/in the 45 minute time limit. I hope to expand this presentation in the future, as well as continue to develop the side project I&apos;m working on using these technologies.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=webframeworksofthefutureflexgwtrailsandgrails-1216842992390310-9&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;//static.slideshare.net/swf/ssplayer2.swf?doc=webframeworksofthefutureflexgwtrailsandgrails-1216842992390310-9&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;div style=&quot;font-size: .9em; text-align: center&quot;&gt;
&lt;a href=&quot;http://www.slideshare.net/mraible/web-frameworks-of-the-future-flex-gwt-grail-and-rails-525747?src=embed&quot; title=&quot;View Web Frameworks of the Future: Flex, GWT, Grail, and Rails on SlideShare&quot;&gt;view on slideshare&lt;/a&gt; | 
&lt;a href=&quot;http://www.slideshare.net/mraible/web-frameworks-of-the-future-flex-gwt-grail-and-rails-525747/download&quot;&gt;download&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/re_what_s_a_good</guid>
    <title>RE: What&apos;s a good RIA to develop in 20 hours?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/re_what_s_a_good</link>
        <pubDate>Wed, 11 Jun 2008 11:02:23 -0600</pubDate>
    <category>Java</category>
    <category>webframeworks</category>
    <category>grails</category>
    <category>flex</category>
    <category>rails</category>
    <category>gwt</category>
            <description>Thanks to everyone who commented on my &lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_a_good_ria&quot;&gt;previous post&lt;/a&gt; and offered recommendations for  RIAs to develop in 20 hours or less. In order to narrow down my choices, I&apos;ve created a survey on &lt;a href=&quot;http://www.surveymonkey.com/&quot;&gt;SurveyMonkey.com&lt;/a&gt;. Here&apos;s a list of the application ideas I received from comments and e-mails:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lightweight CMS&lt;/li&gt;
&lt;li&gt;MP3 Player&lt;/li&gt;
&lt;li&gt;Resume Editor/Publisher&lt;/li&gt;
&lt;li&gt;Meal/Calorie Tracker&lt;/li&gt;
&lt;li&gt;Contact Management&lt;/li&gt;
&lt;li&gt;Planning Application&lt;/li&gt;
&lt;li&gt;Timesheet Application&lt;/li&gt;
&lt;li&gt;DB/SQL Client&lt;/li&gt;
&lt;li&gt;Status Updater/Aggregator (LinkedIn, Twitter and Facebook)&lt;/li&gt;
&lt;li&gt;Online File Explorer (browser-based FTP interface)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I like #3 (Resume) and #9 (Status) because I may be able to tie those into LinkedIn&apos;s RESTful API.&lt;/p&gt;
&lt;p style=&quot;padding-left: 10px&quot;&gt;&lt;a href=&quot;http://www.surveymonkey.com/s.aspx?sm=n5VGjN3BjL_2f_2bUks_2fY9mR6Q_3d_3d&quot;&gt;Click here to vote for the application you&apos;d like me to develop &amp;raquo; &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Voting ends at noon on Friday (Mountain Time).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; My co-workers had a good suggestion at lunch today: &lt;a href=&quot;http://www.pitchersacrossamerica.com&quot;&gt;pitchersacrossamerica.com&lt;/a&gt;. It seems it&apos;s kinda difficult to find bars that serve pitchers these days (at least in Denver). Create an app that allows people to enter in bars and restaurants that serve pitchers and show them on a map. Seems simple and fun. If enough people like the idea, I&apos;ll restart the survey with this as an option. In the meantime, the current (Wednesday night) numbers are &lt;a href=&quot;http://farm4.static.flickr.com/3169/2572286046_faf8675f72_o.png&quot; title=&quot;Wednesday Evening Survey Results&quot; rel=&quot;lightbox&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; &lt;a href=&quot;http://farm4.static.flickr.com/3262/2573930525_5e006701f4_o.png&quot; rel=&quot;lightbox&quot;&gt;Here&apos;s the results&lt;/a&gt; as of Thursday night. Only 15.5 more hours to vote!
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 3:&lt;/strong&gt; &lt;a href=&quot;http://farm4.static.flickr.com/3054/2576516036_0cd006f275_o.png&quot; rel=&quot;lightbox&quot; title=&quot;Final Results&quot;&gt;Final Results&lt;/a&gt;. Thanks to everyone who voted! I&apos;m traveling a lot next week (Mountain View followed by Boston), but I&apos;ll try to write an entry on next steps.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/what_s_a_good_ria</guid>
    <title>What&apos;s a good RIA to develop in 20 hours?</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/what_s_a_good_ria</link>
        <pubDate>Mon, 9 Jun 2008 21:56:30 -0600</pubDate>
    <category>Java</category>
    <category>grails</category>
    <category>rails</category>
    <category>gwt</category>
    <category>flex</category>
            <description>&lt;a href=&quot;http://en.oreilly.com/oscon2008/&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/oscon-logo-2008.gif&quot; width=&quot;96&quot; height=&quot;111&quot; alt=&quot;OSCON 2008&quot; class=&quot;picture&quot; style=&quot;border: 0&quot; /&gt;&lt;/a&gt;
In less than two months, I&apos;m making my annual trek to Portland, Oregon to &lt;a href=&quot;http://raibledesigns.com/rd/entry/proposal_accepted_for_oscon_2008&quot;&gt;speak&lt;/a&gt; at &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/content/home&quot;&gt;OSCON&lt;/a&gt;. To prepare for my talk, I&apos;d like to develop the same application with two different combinations: Flex + Rails and GWT + Grails.
&lt;/p&gt;
&lt;p&gt;As luck would have it, I&apos;m having a hard time coming up with a good application to write. I&apos;d like to time-box it so I only spend 10 hours on the backend (for each) and 10 hours on the front-end, for a total of 40 hours for both applications. 
&lt;/p&gt;
&lt;p&gt;
Can you think of any good applications that would warrant a rich front-end and wouldn&apos;t take too long to create? I&apos;d like to put both applications in production and generate enough traffic to be faced with scalability issues.&lt;/p&gt;
&lt;p&gt;Over the next several weeks, I hope to start creating the applications and blog about what I&apos;ve learned along the way. At some point, I hope to post an outline and a rough draft. With your help, I believe this can be an excellent presentation. If the presentation and applications are as good as I hope they&apos;ll be, it&apos;s likely I&apos;ll open source them for everyone to use.&lt;/p&gt;
&lt;p&gt;Thanks in advance for any advice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Thanks for all the great feedback. I&apos;ve posted a &lt;a href=&quot;http://raibledesigns.com/rd/entry/re_what_s_a_good&quot;&gt;survey&lt;/a&gt; to narrow the choices.</description>          </item>
    <item>
    <guid isPermaLink="true">https://raibledesigns.com/rd/entry/proposal_accepted_for_oscon_2008</guid>
    <title>Proposal accepted for OSCON 2008</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/proposal_accepted_for_oscon_2008</link>
        <pubDate>Mon, 17 Mar 2008 19:21:10 -0600</pubDate>
    <category>Open Source</category>
    <category>grails</category>
    <category>portland</category>
    <category>conference</category>
    <category>travel</category>
    <category>gwt</category>
    <category>oscon</category>
    <category>rails</category>
    <category>flex</category>
            <description>&lt;a href=&quot;http://en.oreilly.com/oscon2008/&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/oscon-logo-2008.gif&quot; width=&quot;96&quot; height=&quot;111&quot; alt=&quot;OSCON 2008&quot; class=&quot;picture&quot; style=&quot;border: 0&quot; /&gt;&lt;/a&gt;
From an e-mail I received earlier this afternoon:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
We are pleased to accept the following proposal for &lt;a href=&quot;http://en.oreilly.com/oscon2008/&quot;&gt;OSCON 2008&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;
* Web Frameworks of the Future: Flex, GWT, Grails and Rails
&lt;br/&gt;&lt;br/&gt;
It has been scheduled for 16:30 on 23 Jul 2008.
&lt;/p&gt;
&lt;p&gt;My Abstract:&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
What if the choices in web framework was reduced to 4? If RIA are the way of the future, it&apos;s possible that these 4 frameworks are the best choices for this development paradigm. This session will explore these frameworks, as well as entertain many other&apos;s opinions on the future of web development.
&lt;br/&gt;&lt;br/&gt;
RESTful backends are easy to create with both Rails and Grails. Ajax frontends are simple to create and maintain with GWT. Flex gives you flash and a pretty UI. If you&apos;re an HTML developer, Rails allows you to quickly develop MVC applications. If you&apos;re a Java Developer, GWT + Grails might be a match made in heaven. This session is designed to help you learn more about each framework and decide which combination is best for your project.
&lt;/p&gt;
&lt;p&gt;I&apos;m really looking forward to learning about GWT and Flex in the coming months. If you have any experience (or opinions) about the abstract above, I&apos;d love to hear it. The louder the better.&lt;/p&gt;
&lt;p&gt;For those who haven&apos;t been, OSCON is one of those truly special conferences. Possible reasons:
&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;It&apos;s only an hour from my parent&apos;s house
&lt;/li&gt;
&lt;li&gt;It&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/oscon_a_beautiful_time_of&quot;&gt;a beautiful time of year in Portland&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;It&apos;s always the same weekend as the &lt;a href=&quot;http://www.oregonbrewfest.com/&quot;&gt;Oregon Brewers Festival&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;It&apos;s a kickass conference with the greatest diversity of Open Source Committers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m going for all 4 reasons and even made a reservation to stay at &lt;a href=&quot;http://www.kennedyschool.com/index.php?loc=57&amp;amp;category=Location%20Homepage&quot;&gt;The Kennedy School&lt;/a&gt;. Should be a fun show.</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/flex_and_grails_made_easy</guid>
    <title>Flex and Grails Made Easy</title>
    <dc:creator>Matt Raible</dc:creator>
    <link>https://raibledesigns.com/rd/entry/flex_and_grails_made_easy</link>
        <pubDate>Thu, 1 Nov 2007 23:00:38 -0600</pubDate>
    <category>Java</category>
    <category>idea</category>
    <category>grails</category>
    <category>maven</category>
    <category>flex</category>
            <description>I love how easy it is to start new projects these days. It was very difficult when I started creating AppFuse way back in 2002. &lt;em&gt;We&apos;ve come a long way baby!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;Here&apos;s a couple of easy ways to get started with Flex and Grails:&lt;/p&gt;
&lt;ul class=&quot;glassList&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://ancientprogramming.blogspot.com/2007/11/quickstart-flex-development-with-this.html&quot;&gt;Quickstart flex development with this maven archetype&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://docs.codehaus.org/display/GRAILS/IDEA+Integration&quot;&gt;Grails development in IntelliJ IDEA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope to develop with Flex, Grails, GWT or YUI + Struts 2 in the next 6 months. These seem like the most exciting technologies for Java web development in 2008. </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>
  </channel>
</rss>