<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>STUQ.nl &#187; Java</title>
	<atom:link href="http://stuq.nl/category/java/feed" rel="self" type="application/rss+xml" />
	<link>http://stuq.nl</link>
	<description></description>
	<lastBuildDate>Thu, 30 Dec 2010 10:23:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..</title>
		<link>http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more</link>
		<comments>http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more#comments</comments>
		<pubDate>Thu, 26 Nov 2009 23:05:45 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=507</guid>
		<description><![CDATA[On November 21st the London Wicket meetup took place in "The Gallery" at the central London Foyles Bookshop. At the venue some well-known Wicket-related speakers made their entrance and held talks about Brix, Wicket 1.5, WiQuery, and how having a baby compares to writing a book.<p>Read the original at <a href="http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more">London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup' rel='bookmark' title='Automatically test your Wicket panel HTML markup'>Automatically test your Wicket panel HTML markup</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-09-03/user-friendly-form-validation-with-wicket' rel='bookmark' title='User friendly form validation with Wicket'>User friendly form validation with Wicket</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; clear: both; margin-top: 10px; margin-left: 10px" class="alignright size-full wp-image-534" title="London Wicket Meetup" src="http://stuq.nl/media/london-wicket-meetup.png" alt="London Wicket Meetup" width="300" />On November 21st the London Wicket meetup took place in &#8220;The Gallery&#8221; at the central London Foyles Bookshop. At the venue some well-known Wicket-related speakers made their entrance and held talks about Brix, Wicket 1.5, WiQuery, and how having a baby compares to writing a book.</p>
<p>This is the summary of that afternoon. You should have been there&#8230;</p>
<p>Keep an eye <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2p3ZWVrZW5kLmNvLnVrL2Rldi9MV1VHUmVnLw==" target=\"_blank\">on this page</a> for when the next London Wicket event is scheduled.</p>
<h3>Overview</h3>
<p>Click on an item to jump down (same page) to the notes from that presentation.</p>
<ul>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I2ludHJvZHVjdGlvbg==">Cemal Bayramoglu: Introduction</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I2plcmVteV90aG9tZXJzb24=">Jeremy Thomerson (USA): Custom JavaScript Integrations with Wicket + Auto Resolvers</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I2xpb25lbF9hcm1hbmV0">Lionel Armanet (FR): Announcing WiQuery 1.0: Introduction &amp; Demo</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I21hdGVqX2tub3Bw">Matej Knopp (SK): BRIX CMS + Wicket 1.5 Developments Q&amp;A</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I3N2ZW5fbWVpZXI=">Sven Meier (DE): Trees, Drag&amp;Drop and more:</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I21hcnRpam5fZGFzaG9yc3Q=">Martijn Dashorst (NL): Writing Books vs Making Babies</a></li>
<li><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=I3FfYW5kX2E=">Wicket Q&amp;A</a></li>
</ul>
<p>(Unfortunately Alastair Maw couldn&#8217;t make it as he was sick. Hope you will soon be better!)</p>
<div id="attachment_512" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvY2VtYWxfYmF5cmFtb2dsdS5qcGc="><img class="size-thumbnail wp-image-512" title="Cemal Bayramoglu of jWeekend giving the introductory talk for the London Wicket meetup." src="http://stuq.nl/media/cemal_bayramoglu-150x150.jpg" alt="Cemal Bayramoglu of jWeekend giving the introductory talk for the London Wicket meetup." width="150" height="150" /></a><p class="wp-caption-text">Cemal giving the introductory talk</p></div>
<h3><a name="introduction"></a>Cemal Bayramoglu: Introduction</h3>
<p>As usual, the London Wicket Meetup is kindly hosted by Cemal Bayramoglu of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2p3ZWVrZW5kLmNvLnVrLw==">jWeekend</a>. Thanks Cemal!<br />
<br style="clear: both" /></p>
<div id="attachment_519" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvamVyZW15X3Rob21lcnNvbi5qcGc="><img class="size-thumbnail wp-image-519 " title="Jeremy Thomerson showing some code at the London Wicket meetup." src="http://stuq.nl/media/jeremy_thomerson-150x150.jpg" alt="Jeremy Thomerson showing some code at the London Wicket meetup." width="150" height="150" /></a><p class="wp-caption-text">Jeremy Thomerson showing some code</p></div>
<h3><a name="jeremy_thomerson"></a>Jeremy Thomerson (USA): Custom JavaScript Integrations with Wicket + Auto Resolvers</h3>
<p>Jeremy Thomerson started his talk with an example of how to do client side validation in Wicket. He showed abstract validation behaviors that validated form input with jQuery.</p>
<p>The remarkable thing was that by adding just one behavior to a component, validation was added for both the server side and the client side. This makes it very easy to keep client and server side validation in sync.</p>
<p>The Javascript behavior is added by letting the behavior implement iHeaderContributor and adding the script in the onRenderHead method call.</p>
<h4>Auto component resolution</h4>
<p>The next part of Jeremy&#8217;s presentation was about the AutoComponentResolver. The AutoComponentResolver makes it possible to wire components directly in HTML, without adding the component explicitly in Java. His demo showed how to use an AutoComponentResolver.</p>
<p>Matej Knopp commented that it is not really recommended to use automatic component resolving, because it has a limited use. The main purpose of auto component resolvers is for simple components that do not have a long lifetime on the page. For example the &lt;wicket:message&gt; tag is handled by automatic component resolving and is replaced by a Label with a ResourceModel. More complicated use cases are not supported nor recommended.</p>
<p>Components added via auto-resolving are not serialized or stored in the session and lose all state.</p>
<div id="attachment_521" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvbGlvbmVsX2FybWFuZXQuanBn"><img class="size-thumbnail wp-image-521" title="Lionel Armanet showing us the WiQuery goodness at the London Wicket meetup." src="http://stuq.nl/media/lionel_armanet-150x150.jpg" alt="Lionel Armanet showing us the WiQuery goodness at the London Wicket meetup." width="150" height="150" /></a><p class="wp-caption-text">Lionel Armanet showing us the WiQuery goodness he and his fellow Frenchmen created.</p></div>
<h3><a name="lionel_armanet"></a>Lionel Armanet (FR): Announcing WiQuery 1.0: Introduction &amp; Demo</h3>
<p>The presentation of Lionel Armanet was an impressive demo of what <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dpcXVlcnk=">WiQuery</a> is capable of. WiQuery integrates jQuery with Wicket, with clever tricks that ease development. WickeXt was merged with jQuery4Wicket and changed its name to WiQuery. Last week was the 1.0 release, and the library is available under the MIT license.</p>
<p>The rationale behind WiQuery is that to build rich internet applications, you need rich behaviors and components. jQuery is simple, unobtrusive and powerful, there are tons of plugins and jQuery UI has fancy components. So, let&#8217;s get jQuery, integrate it with Wicket and have the best of both worlds!</p>
<p>WiQuery has standard components and behaviors like the resize behavior, drag and drop behavior, datepicker component, etcetera. By simply adding Java components, WiQuery generates the Javascript for you and imports the required libraries.</p>
<h4>Setting up WiQuery</h4>
<p>There are two ways to setup wiquery:</p>
<p>With a WiQueryCoreInstantiationListener:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">addComponentInstantiationListener<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> WiQueryInstantiationListener<span style="color: #009900;">&#41;</span></pre></div></div>

<p>Or by extending the Abstract class WiQueryWebApplication.</p>
<h4>Demo</h4>
<p>After the theory, Lionel showed an impressive demo with a drag-and-drop Scrum taskboard. The task board had three columns (new, in progress, done), from which task items could be dragged and dropped around. Double clicking an item showes the details for that task.</p>
<p>The double click action is easily added with:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">add<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> WiQueryAjaxEventBehavior<span style="color: #009900;">&#40;</span><span style="color: #003399;">MouseEvent</span>.<span style="color: #006633;">DBLCLICK</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   ....
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>With the IThemableApplication interface you can make your application themable, like the themes that jQuery UI has.</p>
<div id="attachment_531" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvbWF0ZWpfa25vcHAuanBn"><img class="size-thumbnail wp-image-531" title="Matej Knopp talked about Brix and Wicket 1.5 on the London Wicket meetup" src="http://stuq.nl/media/matej_knopp-150x150.jpg" alt="Matej Knopp talked about Brix and Wicket 1.5 on the London Wicket meetup" width="150" height="150" /></a><p class="wp-caption-text">Matej Knopp talked about Brix and Wicket 1.5.</p></div>
<h3><a name="matej_knopp"></a>Matej Knopp (SK): BRIX CMS + Wicket 1.5 Developments Q&amp;A</h3>
<p>Matej Knopp showed what the content management system <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2JyaXgtY21zLw==">Brix</a> is all about. Brix is based on Wicket and is a component based content management system based on JCR for storage.</p>
<p>Brix is meant for integration with Wicket web applications and looks very interesting. The basic building blocks in Brix are Tiles, Pages, and Templates.</p>
<p>In Brix, Tiles are like a factory for embedding Wicket components. So any Wicket component can be added to a Page which is nearly impossible in &#8216;regular&#8217; CMS systems. More information about Brix can be found on <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2JyaXgtY21zLw==">the Brix website.</a></p>
<h4>Wicket 1.5</h4>
<p>Matej also talked about some new developments that can possibly be shipped in Wicket 1.5:</p>
<ul>
<li>New RequestCycle</li>
<li>New RequestMapper</li>
<li>New Ajax implementation</li>
</ul>
<p><strong>New RequestCycle and RequestMapper</strong></p>
<p><strong><span style="font-weight: normal;">One of the areas where improvements can be made is the RequestCycle. The RequestCycle in Wicket 1.4.x is big and complicated, and hard to step through while debugging. Matej worked on an improved RequestCycle.</span></strong></p>
<p>Matej talked about the drawbacks of the Wicket 1.4 code for handling requests and mapping requests to URL&#8217;s:</p>
<ul>
<li>Complicated, huge code base</li>
<li>Many abstractions, most of them on wrong level</li>
<li>Complicated class hierarchy, hard to find proper extension point</li>
</ul>
<p>He proposed a new RequestMapper that handles Request mapping in a different way.</p>
<p><strong>RequestMapper Interface</strong></p>
<p>The RequestMapper will get the following interface.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> RequestMapper <span style="color: #009900;">&#123;</span>
<span style="color: #000066; font-weight: bold;">int</span> getCompatibilityScore<span style="color: #009900;">&#40;</span><span style="color: #003399;">Request</span> request<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
RequestHandler mapRequest<span style="color: #009900;">&#40;</span><span style="color: #003399;">Request</span> request<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Url mapHandler<span style="color: #009900;">&#40;</span>RequestHandler requestHandler<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>With the RequestMapper interface you can implement your own Request Mapping behavior for various URL&#8217;s.<br />
There can be a hierarchy of RequestMappers. When there is more than one RequestMapper, the compatibility score can be used to choose which RequestMapper will be used.</p>
<p><strong>Calculating RequestMapper compatibility score</strong></p>
<p>The compatibility score is calculated by counting how many URL segments match the mount point.<br />
For example, having an application where two RequestMappers are defined with these URLs:</p>
<ol>
<li>/mounted/page</li>
<li>/mounted/page/that/is/different</li>
</ol>
<p>When there is a new Request on &#8220;/mounted/page/that/is/&#8221;, the second RequestMapper gets a higher compatibility score (4) than the RequestMapper matching only the first two parts of the URL (&#8220;/mounted/page/&#8221;).</p>
<p><strong>New AJAX implementation</strong></p>
<p>About a year ago, Matej created a new Ajax implementation for Wicket. The new Ajax implementation is way better than what is now in Wicket 1.4. It is faster, simpler to use and will be based on a standard library. There is only one problem, the new Ajax implementation Matej built uses YUI. It seems that the world prefers jQuery over YUI. Matej told that rewriting it to jQuery will be a lot of work.</p>
<p>The focus of the new Ajax implementation is removing browser inconsistency code. The custom-written Wicket Javascript will be swapped for more standard Javascript (like the YUI or jQuery libraries).</p>
<p>The API for working with Javascript will be different and much cleaner according to Matej. Also, the generated Javascript is nicer: code is not put directly in the onclick of a UI control, but separately. This looks like how WiQuery does stuff. This means that the Javascript handlers are much shorter, so the page loads faster.</p>
<p>There is an experimental branch in source control, so if you want to try it out or convert it to jQuery, you are welcome to check it out.</p>
<p><strong>Problems with implementation Wicket 1.5</strong></p>
<p>There are some challenges with the implementation of Wicket 1.5. Matej touched a few and gave some insight in what needs to be done. The big question is: how to build this without breaking anything? How can we undo the universe?</p>
<p>One point was the use of global state during the 1.4 Wicket RequestCycle. This makes it difficult to implement the new RequestCycle in core, because much code and unit tests rely on this global state.</p>
<p>Another challenge is keeping the WicketTester in a workable state. The new RequestCycle breaks WicketTester, which is problematic because many people are using WicketTester. Fixing WicketTester is not really easy, because it is a big class with much functionality. It can simulate a lot of actions, like file upload and form submission.</p>
<div id="attachment_527" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvc3Zlbl9tZWllci5qcGc="><img class="size-thumbnail wp-image-527" title="Sven Meier encouraged us to not refrain from writing custom Javascript on the London Wicket meetup" src="http://stuq.nl/media/sven_meier-150x150.jpg" alt="Sven Meier encouraged us to not refrain from writing custom Javascript on the London Wicket meetup" width="150" height="150" /></a><p class="wp-caption-text">Sven Meier encouraged us to not refrain from writing custom Javascript.</p></div>
<h3><a name="sven_meier"></a>Sven Meier (DE):</h3>
<p>Sven Meier showed us his implementation of a <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dpY2tldC10cmVlLw==">TreeModel</a>. He argued that Swing&#8217;s TreeModel is not suitable for implementing a tree in Wicket: &#8220;The treemodel is ugly, and there are many methods you don&#8217;t need in Wicket.&#8221;</p>
<p>His implementation allows hierarchical markup in the tree. This makes it easier to use and extend. It uses simple and known patterns. Partial update is not there yet.</p>
<p>Google Code hosts the <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dpY2tldC10cmVlLw==">Wicket Tree project</a>.</p>
<p><strong>Drag and drop</strong></p>
<p>Sven also created Wicket drag and drop functionality, which is also <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dpY2tldC1kbmQv">hosted at Google Code</a>.</p>
<p>This project enables you to drag and drop between any Wicket component. It supports common desktop metaphors with &#8216;MOVE&#8217;, &#8216;COPY&#8217; and &#8216;LINK&#8217; operations and is fully themable.</p>
<p>Sven&#8217;s closing remarks were: &#8220;Don&#8217;t fret from developing custom Javascript. It&#8217;s really easy with Wicket!&#8221;</p>
<div id="attachment_524" class="wp-caption alignright" style="width: 160px"><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvbWFydGlqbl9kYXNob3JzdC5qcGc="><img class="size-thumbnail wp-image-524" title="Martijn Dashorst compared having a baby to writing a book on the London Wicket meetup" src="http://stuq.nl/media/martijn_dashorst-150x150.jpg" alt="Martijn Dashorst compared having a baby to writing a book on the London Wicket meetup" width="150" height="150" /></a><p class="wp-caption-text">Martijn Dashorst compared having a baby to writing a book.</p></div>
<h3><a name="martijn_dashorst"></a>Martijn Dashorst (NL):</h3>
<p>Martijn&#8217;s presentation was titled &#8220;Writing Books vs Making Babies&#8221; and was a hilarious story with good slides. We have been informed of all the gory details of writing a book (finding the publisher, writing, editing, checking, etcetera) and learned something about having a baby as well!</p>
<h3><a name="q_and_a"></a>Wicket Q&amp;A</h3>
<p>There were not many questions about Wicket, which is proof for the developer friendliness of Wicket <img src='http://stuq.nl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Were you there?</h3>
<p>If you were at the London Wicket meetup (presenter or attendee) or plan to go there next time, please comment below!</p>
<p>If you send me links to the presentations, I will add them to the article.</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMTEtMjcvbG9uZG9uLXdpY2tldC1tZWV0dXAtd2lja2V0LTEtNS13aXF1ZXJ5LWJyaXgtYW5kLW1vcmU=">London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=507" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more&amp;text=London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more&amp;t=London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more&amp;title=London Wicket Meetup: Wicket 1.5, WiQuery, Brix and more..&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-11-27%2Flondon-wicket-meetup-wicket-1-5-wiquery-brix-and-more&name=STUQ.nl&description=London+Wicket+Meetup%3A+Wicket+1.5%2C+WiQuery%2C+Brix+and+more.." title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup' rel='bookmark' title='Automatically test your Wicket panel HTML markup'>Automatically test your Wicket panel HTML markup</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-09-03/user-friendly-form-validation-with-wicket' rel='bookmark' title='User friendly form validation with Wicket'>User friendly form validation with Wicket</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-11-27/london-wicket-meetup-wicket-1-5-wiquery-brix-and-more/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automatically test your Wicket panel HTML markup</title>
		<link>http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup</link>
		<comments>http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup#comments</comments>
		<pubDate>Sun, 01 Nov 2009 20:03:04 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Wicket Tutorials]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Unit testing]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=471</guid>
		<description><![CDATA[Are you testing your HTML markup automatically yet? If your markup does not match the Java code, your Wicket panel does not work. It’s easy to get early feedback when your panels are broken: just unit test them!

In this blog post I describe a way of automatically verifying that the HTML markup of Wicket panels match the Java code. <strong>Scroll down to download the demo project!</strong><p>Read the original at <a href="http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup">Automatically test your Wicket panel HTML markup</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-06-05/wicket-how-to-write-a-reusable-modal-window-popup' rel='bookmark' title='Wicket: how to write a reusable modal window popup'>Wicket: how to write a reusable modal window popup</a></li>
<li><a href='http://stuq.nl/weblog/2008-06-20/create-restful-urls-with-wicket' rel='bookmark' title='Create RESTful URLs with Wicket'>Create RESTful URLs with Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-09-03/user-friendly-form-validation-with-wicket' rel='bookmark' title='User friendly form validation with Wicket'>User friendly form validation with Wicket</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Are you testing your HTML markup automatically yet? If your markup does not match the Java code, your Wicket panel does not work. It’s easy to get early feedback when your panels are broken: just unit test them!</p>
<p>In this blog post I describe a way of automatically verifying that the HTML markup of Wicket panels match the Java code. <strong>Scroll down to download the demo project!</strong></p>
<h3>Unit test</h3>
<p><img style="float: right; clear: right; padding: 5px;" title="Unit testing Wicket panels with Eclipse" src="http://stuq.nl/media/eclipse-unit-testing.png" alt="Unit testing Wicket panels with Eclipse" />I created a JUnit test that you can add to your project to <strong>automatically test as much Wicket Panels</strong> as possible. Automatic testing works by resolving all panels on the Java class path and feeding them to the WicketTester. When a panel has invalid markup, the WicketTester will give an error: early feedback!</p>
<h3>How does it work?</h3>
<p>The Wicket panels that can automatically be tested should have a ‘default’ Wicket constructor, like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> DemoPanel<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> id<span style="color: #009900;">&#41;</span></pre></div></div>

<p>Resolving all panels is done with Spring 2.5’s <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0YXRpYy5zcHJpbmdzb3VyY2Uub3JnL3NwcmluZy9kb2NzLzIuNS54L2FwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL2NvbnRleHQvYW5ub3RhdGlvbi9DbGFzc1BhdGhTY2FubmluZ0NhbmRpZGF0ZUNvbXBvbmVudFByb3ZpZGVyLmh0bWw=" target=\"_blank\">ClassPathScanningCandidateComponentProvider</a> (don’t you love those names! How can they stay below 120 characters per line?)</p>
<p>The <strong>ClassPathScanningCandidateComponentProvider</strong> is a component provider that scans the classpath from a base package. It then applies exclude and include filters to the resulting classes to find candidates.</p>
<h3>Testing panels</h3>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@Test
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> testAllWicketPanels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
        WicketTester wicketTester <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WicketTester<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> WicketApplication<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    	ClassPathScanningCandidateComponentProvider provider <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ClassPathScanningCandidateComponentProvider<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        provider.<span style="color: #006633;">addIncludeFilter</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> AssignableTypeFilter<span style="color: #009900;">&#40;</span><span style="color: #003399;">Panel</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">Set</span> components <span style="color: #339933;">=</span> provider.<span style="color: #006633;">findCandidateComponents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nl/stuq/demo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>BeanDefinition component <span style="color: #339933;">:</span> components<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">Class</span> clazz <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">Class</span>.<span style="color: #006633;">forName</span><span style="color: #009900;">&#40;</span>component.<span style="color: #006633;">getBeanClassName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>hasDefaultConstructor<span style="color: #009900;">&#40;</span>clazz<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            	testWicketPanel<span style="color: #009900;">&#40;</span>wicketTester, clazz<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> testWicketPanel<span style="color: #009900;">&#40;</span>WicketTester wicketTester, <span style="color: #000000; font-weight: bold;">Class</span> clazz<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	wicketTester.<span style="color: #006633;">startPanel</span><span style="color: #009900;">&#40;</span>clazz<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	wicketTester.<span style="color: #006633;">assertNoErrorMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	wicketTester.<span style="color: #006633;">assertNoInfoMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> hasDefaultConstructor<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Class</span> clazz<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Constructor</span> constructor <span style="color: #339933;">:</span> clazz.<span style="color: #006633;">getConstructors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>constructor.<span style="color: #006633;">getParameterTypes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">length</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span>
               constructor.<span style="color: #006633;">getParameterTypes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getSimpleName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;String&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>The test instantiates a new WicketTester. After that, the <strong>ClassPathScanningCandidateComponentProvider</strong> is created and configured to scan only for Panel classes in the <tt>nl.stuq.demo</tt> package and below.<br />
After that, the found components are all checked. If they have a default constructor, the test is executed.</p>
<p>The <strong>boolean hasDefaultConstructor(clazz)</strong> method checks if the class has a constructor with only one String argument, the Wicket id.</p>
<h3>Keep in mind</h3>
<ul>
<li>This is only for lazy people (good developers are lazy in some ways).</li>
<li>You need a dependency to Spring.</li>
<li>Only Panels with a certain constructor are tested.</li>
<li>Only instantiating the Panel is tested, so code coverage has no meaning for this test. <strong>Real testing is still needed.</strong></li>
</ul>
<h3>Download demo project</h3>
<p>The demo project is a Maven project based on the Wicket 1.4.3 quickstart that contains the test class and an example panel to be tested.<br />
<strong><a onclick=\"javascript: pageTracker._trackPageview('/downloads/media/code/demo-automatic-panel-testing.zip');\" href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=L21lZGlhL2NvZGUvZGVtby1hdXRvbWF0aWMtcGFuZWwtdGVzdGluZy56aXA=">Download demo project</a></strong>.</p>
<p>Extract the zip file and run <strong>mvn test</strong> to run the tests. Then fire up your IDE and check how it&#8217;s done.</p>
<p>You can change or adapt the given JUnit test to also automatically test classes extending from Page or Component.</p>
<p>Join in with your opinions and code! I’m curious to see what clever way you have of testing code.</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMTEtMDEvYXV0b21hdGljYWxseS10ZXN0LXlvdXItd2lja2V0LXBhbmVsLWh0bWwtbWFya3Vw">Automatically test your Wicket panel HTML markup</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=471" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup&amp;text=Automatically test your Wicket panel HTML markup&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup&amp;t=Automatically test your Wicket panel HTML markup">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup&amp;title=Automatically test your Wicket panel HTML markup&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-11-01%2Fautomatically-test-your-wicket-panel-html-markup&name=STUQ.nl&description=Automatically+test+your+Wicket+panel+HTML+markup" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-06-05/wicket-how-to-write-a-reusable-modal-window-popup' rel='bookmark' title='Wicket: how to write a reusable modal window popup'>Wicket: how to write a reusable modal window popup</a></li>
<li><a href='http://stuq.nl/weblog/2008-06-20/create-restful-urls-with-wicket' rel='bookmark' title='Create RESTful URLs with Wicket'>Create RESTful URLs with Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-09-03/user-friendly-form-validation-with-wicket' rel='bookmark' title='User friendly form validation with Wicket'>User friendly form validation with Wicket</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Refcard: Getting started with Wicket released</title>
		<link>http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released</link>
		<comments>http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released#comments</comments>
		<pubDate>Thu, 30 Jul 2009 10:02:56 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=461</guid>
		<description><![CDATA[Some days ago, Andrew Lombardi released a new Refcard: <a href="http://refcardz.dzone.com/refcardz/getting-started-apache-wicket?oid=hom11873">Getting started with Wicket</a>.

You can get these and more on the <a href="http://refcardz.dzone.com/">DZone Refcardz site</a>.<p>Read the original at <a href="http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released">Refcard: Getting started with Wicket released</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-06-20/create-restful-urls-with-wicket' rel='bookmark' title='Create RESTful URLs with Wicket'>Create RESTful URLs with Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-09/openlayers-wicket-integration-updated' rel='bookmark' title='OpenLayers Wicket integration updated'>OpenLayers Wicket integration updated</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><img style="float: right;" src="http://refcardz.dzone.com/sites/all/themes/dzone/images/mh_logo_refcardz.gif" alt="Refcardz" />Some days ago, Andrew Lombardi released a new Refcard: <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlZmNhcmR6LmR6b25lLmNvbS9yZWZjYXJkei9nZXR0aW5nLXN0YXJ0ZWQtYXBhY2hlLXdpY2tldD9vaWQ9aG9tMTE4NzM=">Getting started with Wicket</a>.</p>
<p>You can get these and more on the <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlZmNhcmR6LmR6b25lLmNvbS8=">DZone Refcardz site</a>.</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDctMzAvcmVmY2FyZC1nZXR0aW5nLXN0YXJ0ZWQtd2l0aC13aWNrZXQtcmVsZWFzZWQ=">Refcard: Getting started with Wicket released</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=461" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released&amp;text=Refcard: Getting started with Wicket released&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released&amp;t=Refcard: Getting started with Wicket released">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released&amp;title=Refcard: Getting started with Wicket released&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-07-30%2Frefcard-getting-started-with-wicket-released&name=STUQ.nl&description=Refcard%3A+Getting+started+with+Wicket+released" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-06-20/create-restful-urls-with-wicket' rel='bookmark' title='Create RESTful URLs with Wicket'>Create RESTful URLs with Wicket</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-09/openlayers-wicket-integration-updated' rel='bookmark' title='OpenLayers Wicket integration updated'>OpenLayers Wicket integration updated</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-07-30/refcard-getting-started-with-wicket-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ApacheCon Europe 2009 community meetup experiences</title>
		<link>http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences</link>
		<comments>http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences#comments</comments>
		<pubDate>Fri, 03 Apr 2009 21:17:56 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=443</guid>
		<description><![CDATA[<em>In this guest post, <a href="http://twitter.com/mtolsma">Minze Tolsma</a>, software developer at <a href="http://www.capgemini.com">Capgemini</a> shares his experiences attending the ApacheCon community meetups.</em><p>Read the original at <a href="http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences">ApacheCon Europe 2009 community meetup experiences</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009' rel='bookmark' title='Amsterdam Wicket meetup 2009'>Amsterdam Wicket meetup 2009</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><img title="ApacheCon" src="http://stuq.nl/media/apachecon_photo-150x150.jpg" alt="ApacheCon" width="150" height="150" /><em>In this guest post, <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tL210b2xzbWE=">Minze Tolsma</a>, software developer at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBnZW1pbmkuY29t">Capgemini</a> shares his experiences attending the ApacheCon community meetups.</em></p>
<p>This year I went to the ApacheCon community meetups. There were several, but I chose to attend the Maven and the Wicket meetup. I made some short notes on the most interesting things.</p>
<h3>Monday 23-03-2009: Maven</h3>
<p>The meetup on Maven was about new features and new projects.</p>
<h4>Eclipse Integration</h4>
<p>The community is working on a new tool for Eclipse Integration called Eclipse IAM (Integration for Apache Maven). The plugin aims at simplicity and will bring the best Eclipse integration for what Maven offers. It will integrate with JDT and WTP. The following features will be in the package:</p>
<ul>
<li>Direct project import with a POM. Instead of using the Eclipse archetype.</li>
<li>You can setup projects in Eclipse by using predefined archetypes.</li>
<li>You can configure autobuilds so building isn’t annoying.</li>
<li>There will be a FormBased POM editor, just like you are used to in Eclipse.</li>
<li>Dependency search</li>
<li>Dependency management</li>
<li>Dependency graphing and analysis</li>
</ul>
<p>Eclipse IAM will be worth looking at, it can be found at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9pYW0v">http://www.eclipse.org/iam/</a>.</p>
<h4>Maven 3.0 new features</h4>
<p>The community is working on Maven 3.0. Some new features:</p>
<ul>
<li>Embeddable, so it will be faster</li>
<li>Some improvements to make it easier to use with the repository</li>
<li>New transport mechanism for simultaneous downloads.</li>
</ul>
<p>Eclipse 3.0 projectpage: <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2RvY3MuY29kZWhhdXMub3JnL2Rpc3BsYXkvTUFWRU4vTWF2ZW4rMy4wLng=">http://docs.codehaus.org/display/MAVEN/Maven+3.0.x</a><br />
After this two subjects and some live demos there was an open discussion. Because it was late in the evening I left. One thing I wrote down is that SourceSense made an <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3JlcG9zaXRvcnkuc291cmNlc2Vuc2UuY29tL21hdmVuMi1zaXRlcy9tYXZlbi1hbGZyZXNjby1hcmNoZXR5cGVzLw==">Alfresco archetype for Maven</a>.</p>
<h3>Tuesday 24-03-2009: Wicket</h3>
<p>The Wicket meetup was quite different in comparison with the Wicket meeting. There where several presentations about testing, Scala and Wicket, Wicket and DB4O.</p>
<h4>JDave</h4>
<p>For testing nothing was really new… Except the following framework for Behaviour Driven Development: JDave. More info on: <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5qZGF2ZS5vcmcvIA==">http://www.jdave.org/</a>.<br />
Presentation of the ApacheCon and examples on: <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5qZGF2ZS5vcmcvYmRkLXdpY2tldC8g">http://www.jdave.org/bdd-wicket/</a>.</p>
<h4>DB4O</h4>
<p>DB4O is a Object Database for Java and .NET shipped with two different licenses. More detailed information about DB4O can be found on the <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5kYjRvLmNvbS8g">DB4O website</a>.</p>
<p>You can look at DB4O as a large factory (like the Factory design pattern (GoF)) just for storage. It is a good practice to use some  XML storage together with DB4O. For this you can use <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3hzdHJlYW0uY29kZWhhdXMub3JnLyA=">XStream</a>. Using XML for storage together with object storage offers you a good backup mechanism.</p>
<p>Some disadvantages of DB4O are:</p>
<ul>
<li>When data is corrupt there are strange exceptions.</li>
<li>Version Management for the objects is hard to do.</li>
</ul>
<h4>Scala and Wicket</h4>
<p>The presentation about Scala and Wicket was really a hands-on presentation. The slides, code examples and handouts can be found at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDItMDQvZG93bmxvYWQtdGhlLWJhc2ljLWFuZC13aWNrZXQtc2NhbGEtdGFsay1tYXRlcmlhbHM=">http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials</a>. Just try it and get introduced to the concepts of functional programming using the JVM and Wicket.</p>
<p>After all I had two nice evenings and learned a lot. I hope this article gives you some nice and hopefully new useful information!</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDQtMDMvYXBhY2hlY29uLWV1cm9wZS0yMDA5LWNvbW11bml0eS1tZWV0dXAtZXhwZXJpZW5jZXM=">ApacheCon Europe 2009 community meetup experiences</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=443" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences&amp;text=ApacheCon Europe 2009 community meetup experiences&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences&amp;t=ApacheCon Europe 2009 community meetup experiences">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences&amp;title=ApacheCon Europe 2009 community meetup experiences&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-04-03%2Fapachecon-europe-2009-community-meetup-experiences&name=STUQ.nl&description=ApacheCon+Europe+2009+community+meetup+experiences" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009' rel='bookmark' title='Amsterdam Wicket meetup 2009'>Amsterdam Wicket meetup 2009</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-04-03/apachecon-europe-2009-community-meetup-experiences/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Download the Basic and Wicket Scala talk materials</title>
		<link>http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials</link>
		<comments>http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials#comments</comments>
		<pubDate>Wed, 04 Feb 2009 16:37:11 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=402</guid>
		<description><![CDATA[<span style="font-weight: normal;">On February 4th I gave a talk at <a href="http://jweekend.com/">the London Wicket User Group</a>. These are all the materials that you can download to get started with Scala and Wicket today!</span>

If you want to attend one of the Wicket User group meetings in London, just visit the <a href="http://jweekend.com">jWeekend site and register there</a>. It's really cool to attend, there is a good atmosphere and nice and smart people everywhere...

Click below to read the entire post and download everything!<p>Read the original at <a href="http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials">Download the Basic and Wicket Scala talk materials</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009' rel='bookmark' title='Amsterdam Wicket meetup 2009'>Amsterdam Wicket meetup 2009</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers' rel='bookmark' title='6 Scala resources for Java programmers'>6 Scala resources for Java programmers</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: normal;">On February 4th I gave a talk at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2p3ZWVrZW5kLmNvbS8=">the London Wicket User Group</a>. These are all the materials that you can download to get started with Scala and Wicket today!</span></p>
<p>If you want to attend one of the Wicket User group meetings in London, just visit the <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2p3ZWVrZW5kLmNvbQ==">jWeekend site and register there</a>. It&#8217;s really cool to attend, there is a good atmosphere and nice and smart people everywhere&#8230;</p>
<h2>Downloads</h2>
<ul>
<li><strong><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=L2Rvd25sb2FkL2Jhc2ljIHNjYWxhIHdpY2tldC9zYW1wbGVzLnppcA==">Code samples</a></strong> (5.5 MB)
<ul>
<li>Simple HelloWorld Scala demo</li>
<li>Hello Wicket World demo (Scala and Wicket)</li>
<li>Hello Wicket World demo built with Maven</li>
</ul>
</li>
<li><strong><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=L2Rvd25sb2FkL2Jhc2ljIHNjYWxhIHdpY2tldC9oYW5kb3V0LnBkZg==">Handout</a></strong> (1.9 MB)</li>
<li><strong><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=L2Rvd25sb2FkL2Jhc2ljIHNjYWxhIHdpY2tldC9iYXNpYyBzY2FsYSBhbmQgd2lja2V0LnBkZg==">Slides</a></strong> (16.1 MB)</li>
</ul>
<p>Or <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=L2Rvd25sb2FkL2Jhc2ljIHNjYWxhIHdpY2tldC9CYXNpYyBTY2FsYSBhbmQgV2lja2V0IHRhbGsgbWF0ZXJpYWxzLnppcA==">download everything at once</a> (22.2 MB)</p>
<h2></h2>
<h2>Scala resources</h2>
<p>In this separate post you find links to Scala resources on the web (they are also in the slides, but this is much easier to click on).</p>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDItMDQvNi1zY2FsYS1yZXNvdXJjZXMtZm9yLWphdmEtcHJvZ3JhbW1lcnM=">6 Scala resources for Java programmers</a></p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDItMDQvZG93bmxvYWQtdGhlLWJhc2ljLWFuZC13aWNrZXQtc2NhbGEtdGFsay1tYXRlcmlhbHM=">Download the Basic and Wicket Scala talk materials</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=402" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials&amp;text=Download the Basic and Wicket Scala talk materials&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials&amp;t=Download the Basic and Wicket Scala talk materials">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials&amp;title=Download the Basic and Wicket Scala talk materials&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-02-04%2Fdownload-the-basic-and-wicket-scala-talk-materials&name=STUQ.nl&description=Download+the+Basic+and+Wicket+Scala+talk+materials" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-03-24/amsterdam-wicket-meetup-2009' rel='bookmark' title='Amsterdam Wicket meetup 2009'>Amsterdam Wicket meetup 2009</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers' rel='bookmark' title='6 Scala resources for Java programmers'>6 Scala resources for Java programmers</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>6 Scala resources for Java programmers</title>
		<link>http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers</link>
		<comments>http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers#comments</comments>
		<pubDate>Wed, 04 Feb 2009 16:31:03 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=378</guid>
		<description><![CDATA[During my Basic Scala and Wicket talk at the London Wicket Event I showed some good Scala starting points for Java programmers. Here they are, clickable and all.<p>Read the original at <a href="http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers">6 Scala resources for Java programmers</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-24/scala-basics-what-is-scala' rel='bookmark' title='Scala basics: What is Scala?'>Scala basics: What is Scala?</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>During my <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDItMDQvZG93bmxvYWQtdGhlLWJhc2ljLWFuZC13aWNrZXQtc2NhbGEtdGFsay1tYXRlcmlhbHM=">Basic Scala and Wicket talk at the London Wicket Event</a> I showed some good Scala starting points for Java programmers. Here they are, clickable and all.</p>
<p>If you want to attend one of the Wicket User group meetings in London, just visit the <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2p3ZWVrZW5kLmNvbQ==">jWeekend site and register there</a>. It&#8217;s really cool to attend, there is a good atmosphere and nice and smart people everywhere&#8230;</p>
<table border="0">
<tbody>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZw=="> <img class="alignnone size-thumbnail wp-image-384" title="Scala homepage" src="http://stuq.nl/media/scala_homepage-150x150.png" alt="Scala homepage" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZw==">Scala Homepage</a></p>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZw=="></a><strong>The Scala home on the web.</strong></p>
<p>Contains reference manuals, tutorials,<br />
news, specifications.</td>
</tr>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hcnRpbWEuY29tL3NjYWxhemluZS9hcnRpY2xlcy9zdGVwcy5odG1s"> <img class="alignnone size-thumbnail wp-image-385" title="First Steps to Scala" src="http://stuq.nl/media/first_steps_to_scala-150x150.png" alt="First Steps to Scala" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hcnRpbWEuY29tL3NjYWxhemluZS9hcnRpY2xlcy9zdGVwcy5odG1s">First steps to Scala</a></p>
<p><strong>When you don&#8217;t know anything about Scala, start here.</strong></p>
<p><span>Covers the interpreter, variables, methods, loops, arrays, lists, tuples, sets, maps, classes, singletons, traits, mixins.</span></td>
</tr>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jb2RlY29tbWl0LmNvbS9ibG9nL3NjYWxhL3JvdW5kdXAtc2NhbGEtZm9yLWphdmEtcmVmdWdlZXM="> <img class="alignnone size-thumbnail wp-image-386" title="roundup_for_java_refugees" src="http://stuq.nl/media/roundup_for_java_refugees-150x150.png" alt="roundup_for_java_refugees" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jb2RlY29tbWl0LmNvbS9ibG9nL3NjYWxhL3JvdW5kdXAtc2NhbGEtZm9yLWphdmEtcmVmdWdlZXM=">Scala for Java refugees</a></p>
<p><span><strong>Series of 6 great articles covering a lot of Scala.</strong></span></p>
<p><span>Aimed at Java developers.</span></td>
</tr>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NjYWxhLnN5Z25lY2EuY29t"> <img class="alignnone size-thumbnail wp-image-387" title="Scala Wiki" src="http://stuq.nl/media/scala_wiki-150x150.png" alt="Scala Wiki" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NjYWxhLnN5Z25lY2EuY29tLw==">Scala Wiki</a></p>
<p><strong>An ever growing collection of resources on Scala.</strong></p>
<p><span>FAQ, code samples, design patterns, Scala job openings</span></td>
</tr>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2dzLnN1bi5jb20vc3VuZGFyYXJhamFuL2VudHJ5L3NjYWxhX2Zvcl9qYXZhX3Byb2dyYW1tZXJz"> <img class="alignnone size-thumbnail wp-image-388" title="Scala for Java Programmers" src="http://stuq.nl/media/scala_for_java_programmers-150x150.png" alt="Scala for Java Programmers" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2dzLnN1bi5jb20vc3VuZGFyYXJhamFuL2VudHJ5L3NjYWxhX2Zvcl9qYXZhX3Byb2dyYW1tZXJz">Scala for Java programmers</a></p>
<p><span>Multiple articles covering a feature by feature comparison of Scala and Java.</span></td>
</tr>
<tr>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZy9ub2RlLzE5OQ=="> <img class="alignnone size-thumbnail wp-image-390" title="Mailing Lists" src="http://stuq.nl/media/mailing_lists-150x150.png" alt="Mailing Lists" width="150" height="150" /></a></td>
<td><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zY2FsYS1sYW5nLm9yZy9ub2RlLzE5OQ==">Scala Mailing Lists</a></p>
<p><span><strong>Official mailing lists</strong></span></p>
<p><span>Subscribe: <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=c2NhbGEtc3Vic2NyaWJlQGxpc3Rlcy5lcGZsLmNo">empty message to scala-subscribe@listes.epfl.ch</a></span></td>
</tr>
</tbody>
</table>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDItMDQvNi1zY2FsYS1yZXNvdXJjZXMtZm9yLWphdmEtcHJvZ3JhbW1lcnM=">6 Scala resources for Java programmers</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=378" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers&amp;text=6 Scala resources for Java programmers&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers&amp;t=6 Scala resources for Java programmers">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers&amp;title=6 Scala resources for Java programmers&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-02-04%2F6-scala-resources-for-java-programmers&name=STUQ.nl&description=6+Scala+resources+for+Java+programmers" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-02-04/download-the-basic-and-wicket-scala-talk-materials' rel='bookmark' title='Download the Basic and Wicket Scala talk materials'>Download the Basic and Wicket Scala talk materials</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-24/scala-basics-what-is-scala' rel='bookmark' title='Scala basics: What is Scala?'>Scala basics: What is Scala?</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why many Java performance tests are wrong</title>
		<link>http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong</link>
		<comments>http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong#comments</comments>
		<pubDate>Wed, 28 Jan 2009 19:58:51 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=339</guid>
		<description><![CDATA[A lot of 'performance tests' are posted online lately. Many times these performance tests are implemented and executed in a way that completely ignores the inner workings of the Java VM. In this post you can find some basic knowledge to improve your performance testing. Remember, I am not a professional performance tester, so <strong>put your tips in the comments</strong>!<p>Read the original at <a href="http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong">Why many Java performance tests are wrong</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup' rel='bookmark' title='Automatically test your Wicket panel HTML markup'>Automatically test your Wicket panel HTML markup</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers' rel='bookmark' title='6 Scala resources for Java programmers'>6 Scala resources for Java programmers</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><img style="float: left;" title="Getting performance statistics right can be hard" src="http://stuq.nl/media/performance_statistics-150x150.jpg" alt="Getting performance statistics right can be hard" width="150" height="150" /></p>
<p>A lot of &#8216;performance tests&#8217; are posted online lately. Many times these performance tests are implemented and executed in a way that completely ignores the inner workings of the Java VM. In this post you can find some basic knowledge to improve your performance testing. Remember, I am not a professional performance tester, so <strong>put your tips in the comments</strong>!</p>
<h2>An example</h2>
<p>For example, some days ago a <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5ta3lvbmcuY29tL2phdmEvd2hpbGUtbG9vcC1mb3ItbG9vcC1hbmQtaXRlcmF0b3ItcGVyZm9ybWFuY2UtdGVzdC1qYXZhLw==">&#8216;performance test&#8217; on while loops, iterators and for loops</a> was posted. This test is wrong and inaccurate. I will use this test as an example, but there are many other tests that suffer from the same problems.</p>
<p>So, let&#8217;s execute this test for the first time. It tests the relative performance on some loop constructs on the Java VM. The first results:</p>
<blockquote><p>Iterator &#8211; Elapsed time in milliseconds: <strong>78</strong><br />
For &#8211; Elapsed time in milliseconds: <strong>28</strong><br />
While &#8211; Elapsed time in milliseconds: <strong>30</strong></p></blockquote>
<p>Allright, looks interesting. Let&#8217;s change the test a bit. When I reshuffle the code, putting the Iterator test at the end, I get:</p>
<blockquote><p>For &#8211; Elapsed time in milliseconds: <strong>37</strong><br />
While &#8211; Elapsed time in milliseconds: <strong>28</strong><br />
Iterator &#8211; Elapsed time in milliseconds: <strong>30</strong></p></blockquote>
<p>Hey, suddenly the <strong>For</strong> loop is the slowest! That&#8217;s weird!</p>
<p>So, when I run the test again, the results should be the same, right?</p>
<blockquote><p>For &#8211; Elapsed time in milliseconds: <strong>37</strong><br />
While &#8211; Elapsed time in milliseconds: <strong>32</strong><br />
Iterator &#8211; Elapsed time in milliseconds: <strong>33</strong></p></blockquote>
<p>And now the <strong>While</strong> loop is a lot slower! Why is that?</p>
<h2>Getting valid test results is not that easy!</h2>
<p><span style="font-weight: normal;">The example above shows that obtaining valid test results can be hard. You have to know something about the Java VM to get more accurate numbers, and you have to prepare a good test environment.</span></p>
<h3>Some tips and tricks</h3>
<ul>
<li><strong>Quit all other applications.</strong> It is a no-brainer, but many people are testing with their systems loaded with music players, RSS-feed readers and word processors still active. Background processes can reduce the amount of resources available to your program in an unpredictable way. For example, when you have a limited amount of memory available, your system may start swapping memory content to disk. This will have not only a negative effect on your test results, it also makes these results non-reproducible.</li>
<li><strong>Use a dedicated system</strong>. Even better than testing on your developer system is to use a dedicated testing system. Do a clean install of the operating system and the minimum amount of tools needed. Make sure the system stays as clean as possible. If you make an image of the system you can restore it in a previous known state.</li>
<li><strong>Repeat your tests</strong>. A single test result is worthless without knowing if it is accurate (as you have seen in the example above). Therefore, to draw any conclusions from a test, repeat it and use the average result. <strong>When the numbers of the test vary too much from run to run, your test is wrong.</strong> Something in your test is not predictable or consistent. Try to fix your test first.</li>
<li><strong>Investigate memory usage</strong>. If your code under test is memory intensive, the amount of available memory will have a large impact on your test results. Increase the amount of memory available. Buy new memory, fix your program under test.</li>
<li><strong>Investigate CPU usage</strong>. If your code under test is CPU intensive, try to determine which part of your test uses the most CPU time. If the CPU graphs are fluctuating much, try to determine the root cause. For example Garbage Collection, thread-locking or dependencies on external systems can have a big impact.</li>
<li><strong>Investigate dependencies on external systems.</strong> If your application does not seem to be CPU-bound or memory intensive, try looking into thread-locking or dependencies on external systems (network connections, database servers, etcetera)</li>
<li><strong>Thread-locking</strong> can have a big impact, to the extent that running your test on multiple cores will decrease performance. Threads that are waiting on each other are really bad for performance.</li>
</ul>
<h3>The Java HotSpot compiler</h3>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2phdmEuc3VuLmNvbS9wZXJmb3JtYW5jZS9yZWZlcmVuY2Uvd2hpdGVwYXBlcnMvNl9wZXJmb3JtYW5jZS5odG1sIzIuMS42">The Java HotSpot compiler kicks in when it sees a &#8216;hot spot&#8217; in your code</a>. It is therefore quite common that your code <strong>will run faster</strong> over time! So, you should adapt your testing methods.</p>
<p>The HotSpot compiler compiles in the background, eating away CPU cycles. So when the compiler is busy, your program is temporarily slower. But after compiling some hot spots, your program will suddenly run faster!</p>
<p>When you make a graph of the througput of your application over time, you can see when the HotSpot compiler is active:</p>
<p><img title="Throughput of a running application" src="http://stuq.nl/media/warmup_time.png" alt="Throughput of a running application" width="581" height="282" /></p>
<p><strong>Througput of a running application over time</strong></p>
<p>The warm up period shows the time the HotSpot compiler needs to get your application up to speed.</p>
<p><strong>Do not draw conclusions from the performance statistics during the warm up time!</strong></p>
<ul>
<li>Execute your test, measure the throughput until it stabilizes. The statistics you get during the warm up time should be discarded.</li>
<li>Make sure you know how long the warm up time is for your test scenario. We use a warm up time of 10-15 minutes, which is enough for our needs. But test this yourself! It takes time for the JVM to detect the hot spots and compile the running code.</li>
</ul>
<h3>Update</h3>
<p>From Dries Buytaert I <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tL2RyaWVzL3N0YXR1c2VzLzExNTY3MTc3MDU=">received</a> a link to a paper called <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2J1eXRhZXJ0Lm5ldC9maWxlcy9vb3BzbGEwNy1nZW9yZ2VzLnBkZg==">Statistically rigorous Java performance evaluation</a>. I highly recommend reading it when you want to know more about measuring Java performance.</p>
<p>Remember, I am not a professional performance tester, so <strong>put your tips in the comments</strong>!</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDktMDEtMjgvd2h5LW1hbnktamF2YS1wZXJmb3JtYW5jZS10ZXN0cy1hcmUtd3Jvbmc=">Why many Java performance tests are wrong</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=339" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong&amp;text=Why many Java performance tests are wrong&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong&amp;t=Why many Java performance tests are wrong">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong&amp;title=Why many Java performance tests are wrong&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2009-01-28%2Fwhy-many-java-performance-tests-are-wrong&name=STUQ.nl&description=Why+many+Java+performance+tests+are+wrong" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2009-11-01/automatically-test-your-wicket-panel-html-markup' rel='bookmark' title='Automatically test your Wicket panel HTML markup'>Automatically test your Wicket panel HTML markup</a></li>
<li><a href='http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects' rel='bookmark' title='4 steps to add Scala to your Maven Java projects'>4 steps to add Scala to your Maven Java projects</a></li>
<li><a href='http://stuq.nl/weblog/2009-02-04/6-scala-resources-for-java-programmers' rel='bookmark' title='6 Scala resources for Java programmers'>6 Scala resources for Java programmers</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2009-01-28/why-many-java-performance-tests-are-wrong/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>76 Events: statistics about Hibernate 3.2.2</title>
		<link>http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322</link>
		<comments>http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322#comments</comments>
		<pubDate>Tue, 30 Dec 2008 20:59:00 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Hibernate]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=310</guid>
		<description><![CDATA[Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. This is the analysis of Hibernate 3.2.2.<p>Read the original at <a href="http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322">76 Events: statistics about Hibernate 3.2.2</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6' rel='bookmark' title='37 Factories: statistics about Tomcat 6'>37 Factories: statistics about Tomcat 6</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvaGliZXJuYXRlLXN0YXRpc3RpY3MucG5n"><img style="float: left; clear: left;" title="Hibernate 3.2.2 class cloud" src="http://stuq.nl/media/hibernate-statistics-150x150.png" alt="Hibernate 3.2.2 statistics class cloud" width="150" /></a>Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. This is the analysis of Hibernate 3.2.2.</p>
<p>To get these statistics, I wrote a script that analyzed all classes. They get chopped up on word boundaries, so for <strong>ContextAwareFactoryBean</strong> the words Context, Aware, Factory and Bean are counted. From the output I generated a Class Cloud.</p>
<h3>What is Hibernate?</h3>
<p>Hibernate is a free, open source Java package that makes it easy to work with relational databases. Hibernate makes it seem as if your database contains plain Java objects like you use every day, without having to worry about how to get them out of (or back into) mysterious database tables.</p>
<h3>Hibernate listens very carefully</h3>
<p>What immediately catched my eye was the amount of classes with <strong>Event</strong> <strong>(76)</strong> or <strong>Listener (52) </strong>in their name. There are many events in Hibernate which can be catched. These events can have some related classes, like:</p>
<ul>
<li>the event itself (for example the <strong>AutoFlushEvent</strong>)</li>
<li>an interface (the <strong>AutoFlushEventListener</strong>)</li>
<li>a default implementation (the <strong>DefaultAutoFlushEventListener</strong>)</li>
</ul>
<p>It almost surprised me there was no <strong>AbstractAutoFlushEventListener</strong> or a <strong>AbstractAutoFlushEventListenerFactory!</strong></p>
<h3>Factories</h3>
<p>There are 57 factories, which is quite a lot outside of an industrial park. A lot of stuff can be created using factories, for example the <strong>BasicProxyFactory</strong>, the <strong>CGLIBProxyFactory</strong>, the <strong>CacheFactory</strong>, the <strong>ClassicQueryTranslatorFactory</strong> and the <strong>MapProxyFactory</strong>. I would guess this is the most popular design pattern within the Java world. Factories are everywhere.</p>
<h3>Types and Collections</h3>
<p>Luckily, there is also a lot of stuff directly related to the goal of Hibernate. There are 85 classes with <strong>Type</strong> in their name, and 54 have something to do with a <strong>C</strong><strong>ollection</strong>.</p>
<p>There are basic types like the <strong>FloatType</strong> and <strong>IntegerType</strong>. Advanced types like the <strong>OrderedMapType</strong> and the <strong>OrderedSetType</strong>. <strong>PersistentCollection</strong> and <strong>BasicCollectionLoader</strong>. These class names look quite good!</p>
<h3>Class Cloud (click to enlarge)</h3>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvaGliZXJuYXRlLXN0YXRpc3RpY3MucG5n"><img title="Hibernate 3.2.2 class cloud" src="http://stuq.nl/media/hibernate-statistics.png" alt="Hibernate 3.2.2 statistics Class Cloud" width="587" /></a></p>
<h3>Top 10 of partial class names</h3>
<ul>
<li>Type: 85</li>
<li>Event: 76</li>
<li>Factory: 57</li>
<li>Collection: 54</li>
<li>Cache: 53</li>
<li>Exception: 53</li>
<li>Query: 53</li>
<li>Listener: 52</li>
<li>Entity: 47</li>
<li>SQL: 39</li>
</ul>
<h3>Longest class name</h3>
<p>The longest class name of Hibernate is the <strong>CollectionFilterKeyParameterSpecification</strong>, with <strong>41</strong> characters!</p>
<p>The API documentation describes this class:</p>
<blockquote><p>A specialized ParameterSpecification impl for dealing with a collection-key as part of a collection filter compilation.</p></blockquote>
<p>I thought API documentation was meant to clarify? At least the above contains some pointers (like the ParameterSpecification).<br />
Stay tuned for more useless statistics for other well known projects! If you have suggestions for which projects you want to see, please let me know in the comments!</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDgtMTItMzAvNzYtZXZlbnRzLXN0YXRpc3RpY3MtYWJvdXQtaGliZXJuYXRlLTMyMg==">76 Events: statistics about Hibernate 3.2.2</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=310" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322&amp;text=76 Events: statistics about Hibernate 3.2.2&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322&amp;t=76 Events: statistics about Hibernate 3.2.2">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322&amp;title=76 Events: statistics about Hibernate 3.2.2&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2008-12-30%2F76-events-statistics-about-hibernate-322&name=STUQ.nl&description=76+Events%3A+statistics+about+Hibernate+3.2.2" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6' rel='bookmark' title='37 Factories: statistics about Tomcat 6'>37 Factories: statistics about Tomcat 6</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>37 Factories: statistics about Tomcat 6</title>
		<link>http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6</link>
		<comments>http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6#comments</comments>
		<pubDate>Mon, 29 Dec 2008 07:00:38 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=302</guid>
		<description><![CDATA[Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. This is the analysis of Tomcat 6.

To get these statistics, I wrote a script that analyzed all classes. They get chopped up on word boundaries, so for ContextAwareFactoryBean the words Context, Aware, Factory and Bean are counted. From the output I generated a Class Cloud.<p>Read the original at <a href="http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6">37 Factories: statistics about Tomcat 6</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322' rel='bookmark' title='76 Events: statistics about Hibernate 3.2.2'>76 Events: statistics about Hibernate 3.2.2</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvdG9tY2F0LXN0YXRpc3RpY3MucG5n"><img style="float: left; clear: left;" title="Tomcat 6 class cloud" src="http://stuq.nl/media/tomcat-statistics-150x150.png" alt="Tomcat 6 statistics class cloud" width="150" /></a>Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. This is the analysis of Tomcat 6.</p>
<p>To get these statistics, I wrote a script that analyzed all classes. They get chopped up on word boundaries, so for <strong>ContextAwareFactoryBean</strong> the words Context, Aware, Factory and Bean are counted. From the output I generated a Class Cloud.</p>
<h3>Tomcat is definitely Context-aware</h3>
<p>Tomcat consists of <strong>956</strong> classes. Of those, <strong>55</strong> classes contain the word <strong>Context</strong>, a percentage of <strong>5.75%</strong>. Remember that every live object has its own &#8216;context&#8217;, and the word instantly loses a lot of meaning. The API documentation gives some clearance about the subject:</p>
<blockquote><p>A <strong>Context</strong> is a Container that represents a servlet context, and therefore an individual web application, in the Catalina servlet engine.</p></blockquote>
<h3>Factories? Sure!</h3>
<p>Every self-respecting framework has factories. It nicely keeps the newcomers out and makes it &#8216;easier&#8217; for the experts. Well, Tomcat has <strong>37</strong> of them. Just like <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDgtMTEtMjgvMTk0Mi1jbGFzc2VzLXN0YXRpc3RpY3MtYWJvdXQtc3ByaW5nLTI1">Spring</a>, Tomcat has a <strong>BeanFactory</strong>. The API documentation say just enough to leave me in confusion:</p>
<blockquote><p>BeanFactory: Object factory for any Resource conforming to the JavaBean spec.</p></blockquote>
<h3>The AbstractObjectCreationFactory</h3>
<p>It was love on first sight with the <strong>AbstractObjectCreationFactory</strong>. It all comes together in this single class. Every project should have this&#8230; until now you created all your abstract objects yourself, this is not needed anymore! All those years!</p>
<p>Unfortunately, I had it wrong. This is an abstract implementation of the <strong>ObjectCreationFactory</strong> interface. Further investigation revealed that this is part of the Digester package.</p>
<blockquote><p>The Digester package provides for rules-based processing of arbitrary XML documents.</p></blockquote>
<p>I have no idea why this is in Tomcat. A leftover? Bad refactoring? Who knows?</p>
<h3>Class Cloud (click to enlarge)</h3>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvdG9tY2F0LXN0YXRpc3RpY3MucG5n"><img title="Tomcat 6 class cloud" src="http://stuq.nl/media/tomcat-statistics.png" alt="Tomcat 6 statistics Class Cloud" width="587" /></a></p>
<h3>Top 10 of partial class names</h3>
<ul>
<li>Context: 55</li>
<li>Factory: 37</li>
<li>Task: 33</li>
<li>Ast: 33</li>
<li>Channel: 33</li>
<li>Rule: 32</li>
<li>Base: 31</li>
<li>Constants: 30</li>
<li>Handler: 30</li>
<li>Jsp: 27</li>
</ul>
<h3>Longest class name</h3>
<p>The grand prize goes to: <strong>MbeansDescriptorsIntrospectionSource</strong>, with <strong>36</strong> characters!</p>
<p>The API documentation does not contain a description of this class, so I have no idea what it does&#8230;</p>
<p>Stay tuned for more useless statistics for other well known projects! If you have suggestions for which projects you want to see, please let me know in the comments!</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDgtMTItMjkvMzctZmFjdG9yaWVzLXN0YXRpc3RpY3MtYWJvdXQtdG9tY2F0LTY=">37 Factories: statistics about Tomcat 6</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=302" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6&amp;text=37 Factories: statistics about Tomcat 6&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6&amp;t=37 Factories: statistics about Tomcat 6">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6&amp;title=37 Factories: statistics about Tomcat 6&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2008-12-29%2F37-factories-statistics-about-tomcat-6&name=STUQ.nl&description=37+Factories%3A+statistics+about+Tomcat+6" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322' rel='bookmark' title='76 Events: statistics about Hibernate 3.2.2'>76 Events: statistics about Hibernate 3.2.2</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket' rel='bookmark' title='8.47% is a Resource: statistics about Wicket'>8.47% is a Resource: statistics about Wicket</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>8.47% is a Resource: statistics about Wicket</title>
		<link>http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket</link>
		<comments>http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket#comments</comments>
		<pubDate>Tue, 02 Dec 2008 19:23:09 +0000</pubDate>
		<dc:creator>Daan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://stuq.nl/?p=246</guid>
		<description><![CDATA[<p>Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. First: Wicket 1.3.3.</p>
<p>To get these statistics, I wrote a script that analyzed all classes. They get chopped up on word boundaries, so for ContextAwareFactoryBean the words Context, Aware, Factory and Bean are counted.</p><p>Read the original at <a href="http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket">8.47% is a Resource: statistics about Wicket</a> or go to the homepage of <a href="http://stuq.nl">STUQ.nl</a></p>


<br/><br/>
Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6' rel='bookmark' title='37 Factories: statistics about Tomcat 6'>37 Factories: statistics about Tomcat 6</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322' rel='bookmark' title='76 Events: statistics about Hibernate 3.2.2'>76 Events: statistics about Hibernate 3.2.2</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvd2lja2V0LXN0YXRpc3RpY3MucG5n"><img style="float: left; clear: left;" title="Wicket 1.3.3 class cloud" src="http://stuq.nl/media/wicket-statistics-150x150.png" alt="Wicket 1.3.3 statistics class cloud" width="150" /></a>Frameworks are growing with every release. Classes are changed, removed and added. In this series I zoom in on some well known projects and analyze their class names with completely meaningless statistics. Now up: Wicket 1.3.3!</p>
<p>To get these statistics, I wrote a script that analyzed all classes. They get chopped up on word boundaries, so for <strong>ContextAwareFactoryBean</strong> the words Context, Aware, Factory and Bean are counted. From the output I generated a class cloud.</p>
<h3>Wicket likes Requests for Pages or Resources</h3>
<p><strong>8.47%</strong> of the total number of classes in Wicket contain the word <strong>Resource</strong>. In absolute numbers, 68 classes (of a total of 802) have this word in their name. This is quite a low percentage for the top result, compared to the <a title=\"Spring statistics\" href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDgtMTEtMjgvMTk0Mi1jbGFzc2VzLXN0YXRpc3RpY3MtYWJvdXQtc3ByaW5nLTI1">Spring statistics</a> where the top result <strong>Bean</strong> is present in <strong>12.31%</strong> of all classes.</p>
<p>From the top ten, it&#8217;s easy to spot that Wicket is a web framework, with <strong>Pages</strong>, <strong>Web</strong>, <strong>Ajax</strong> and <strong>Resources</strong> in many class names.</p>
<h3>Wicket loves Wicket</h3>
<p>A bit remarkable regarding Wicket statistics: about <strong>4.24% </strong>of all classes have the string &#8216;Wicket&#8217; in their name. Relative to the number of Spring classes that have Spring in their name, this is 2.3 times as much!</p>
<p>In general, the class names of Wicket are well distributed. This probably originates in the fact that Wicket is very specialized on one subject and is not a general purpose platform.</p>
<h3>Class Cloud (click to enlarge)</h3>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvd2lja2V0LXN0YXRpc3RpY3MucG5n"><img title="Wicket 1.3.3 class cloud" src="http://stuq.nl/media/wicket-statistics.png" alt="Wicket 1.3.3 statistics Class Cloud" width="587" /></a></p>
<h3>Top 10 of partial class names</h3>
<p><a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvbWVkaWEvd2lja2V0X3N0YXRzX2Jhci5wbmc="><img style="float: right;" title="Wicket 1.3.3 statistics bar chart" src="http://stuq.nl/media/wicket_stats_bar.png" alt="Wicket 1.3.3 statistics bar chart" width="260" height="169" /></a></p>
<ul>
<li>Resource: 68</li>
<li>Request: 62</li>
<li>Page: 56</li>
<li>Abstract: 42</li>
<li>Target: 37</li>
<li>Stream: 36</li>
<li>Validator: 36</li>
<li>Web: 36</li>
<li>Component: 34</li>
<li>Ajax: 34</li>
</ul>
<h3>Longest class name</h3>
<p>The grand prize goes to: <strong>BookmarkablePageRequestTargetUrlCodingStrategy</strong>, with <strong>46</strong> characters!</p>
<blockquote><p>The BookmarkablePageRequestTargetUrlCodingStrategy encodes and decodes mounts for a single bookmarkable page class (<a title=\"BookmarkablePageRequestTargetUrlCodingStrategy API doc\" href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3dpY2tldC5hcGFjaGUub3JnL2FwaWRvY3MvMS40L29yZy9hcGFjaGUvd2lja2V0L3JlcXVlc3QvdGFyZ2V0L2NvZGluZy9Cb29rbWFya2FibGVQYWdlUmVxdWVzdFRhcmdldFVybENvZGluZ1N0cmF0ZWd5Lmh0bWw=">source</a>).</p></blockquote>
<p>Stay tuned for more useless statistics for other well known projects! If you have suggestions for which projects you want to see, please let me know in the comments!</p>
<p>Read the original at <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmwvd2VibG9nLzIwMDgtMTItMDIvODQ3LWlzLWEtcmVzb3VyY2Utc3RhdGlzdGljcy1hYm91dC13aWNrZXQ=">8.47% is a Resource: statistics about Wicket</a> or go to the homepage of <a href="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0dXEubmw=">STUQ.nl</a></p>
 <img src="http://stuq.nl/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=246" width="1" height="1" style="display: none;" /><div id="simple_socialmedia"><ul class="ssm_row"><li class="sharetext">Share:</li><li class="twitter"><a target="_blank" href="http://twitter.com/share?url=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket&amp;text=8.47% is a Resource: statistics about Wicket&amp;via=daanvanetten">Tweet</a></li><li class="facebook"><a target="_blank" title="Share on Facebook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket&amp;t=8.47% is a Resource: statistics about Wicket">Facebook</a></li><li class="linkedin"><a target="_blank" title="Share on LinkedIn" rel="nofollow" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket&amp;title=8.47% is a Resource: statistics about Wicket&amp;source=STUQ.nl">LinkedIn</a></li><li class="tumblr"><a target="_blank" title="Share on Tumblr" rel="nofollow" href="http://www.tumblr.com/share/link?url=http%3A%2F%2Fstuq.nl%2Fweblog%2F2008-12-02%2F847-is-a-resource-statistics-about-wicket&name=STUQ.nl&description=8.47%25+is+a+Resource%3A+statistics+about+Wicket" title="Share on Tumblr">Tumblr</a></li><li class="stumble"><a target="_blank" title="Share on StumbleUpon" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket">Stumble</a></li><li class="digg"><a target="_blank" title="Share on Digg" rel="nofollow" href="http://www.digg.com/submit?phase=2&amp;url=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket">Digg</a></li><li class="delicious"><a target="_blank" title="Share on Delicious" rel="nofollow" href="http://del.icio.us/post?url=http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket&amp;title=INSERT_TITLE">Delicious</a></li></ul></div>

<br/><br/><p>Related posts:<ul><li><a href='http://stuq.nl/weblog/2008-11-28/1942-classes-statistics-about-spring-25' rel='bookmark' title='1942 classes: statistics about Spring 2.5'>1942 classes: statistics about Spring 2.5</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-29/37-factories-statistics-about-tomcat-6' rel='bookmark' title='37 Factories: statistics about Tomcat 6'>37 Factories: statistics about Tomcat 6</a></li>
<li><a href='http://stuq.nl/weblog/2008-12-30/76-events-statistics-about-hibernate-322' rel='bookmark' title='76 Events: statistics about Hibernate 3.2.2'>76 Events: statistics about Hibernate 3.2.2</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://stuq.nl/weblog/2008-12-02/847-is-a-resource-statistics-about-wicket/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

