<?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>Rich Internet Applications (RIA) &#187; Java</title>
	<atom:link href="http://canoo.com/blog/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://canoo.com/blog</link>
	<description></description>
	<lastBuildDate>Thu, 12 Aug 2010 11:50:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Java Post Mortem with Gilad Bracha</title>
		<link>http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/</link>
		<comments>http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/#comments</comments>
		<pubDate>Fri, 07 May 2010 07:10:52 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1290</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";</script>This year&#8217;s JAX.de conference hosted many great Java thought leaders, including one of my personal favorites Gilad Bracha. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";</script><div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">This year&#8217;s JAX.de conference hosted many great Java thought leaders, including one of my personal favorites Gilad Bracha. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend reading his papers on Pluggable Type Systems and Software as a Service.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Lucky for me, my &#8220;Code Generation on the JVM&#8221; talk was sandwiched between his &#8220;Java: A Post Mortem&#8221; and &#8220;Newspeak: A Principled, Dynamic Language&#8221;. It was surreal to see my name next to someone I&#8217;ve revered for many years, and I felt a bit like the rookie professional athlete who has to play his first game against someone they grew up watching on TV.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As expected, his talks were good mix of humor, strong opinion, and thoughtful analysis. Here are my favorite bits:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you can&#8217;t abstract over it then it doesn&#8217;t belong there.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">An original sin of Java was constructors. They are static methods that commit to returning a concrete implementation. Remember the design mandate &#8220;program to interfaces&#8221;? Constuctors subvert this and gave rise to a cottage industry of Dependency Injection frameworks to get around the issue (as long as you consider VMWare a cottage industry!). You wouldn&#8217;t need DI if your language supported proper inversion of control in the first place. The next generation of languages hopefully won&#8217;t have this limitation.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Class initialization is absurd. There should be none.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Static state is bad, bad, bad and read Gilad&#8217;s great blog post if you aren&#8217;t persuaded. Without static state there is no need for class initialization. We&#8217;ve all heard that the JVM start up times are slow, but that is a bit of a myth. The problem is that through class initialization we&#8217;re asking the JVM to do millions of operations that could be avoided without static state. A Lambourgini isn&#8217;t slow, but it sure seems that way if you try to drive it to the Moon. Likewise the JVM.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Why should a high level language need a memory model in the first place?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The original Java memory model was incoherent, the revised memory model is understood by only five people in the world, and the actors for concurrency idea existed since the Gulati paper of 1970. Bracha&#8217;s point wasn&#8217;t that we need a better Java memory model, it is that we should have made a language that did not need to expose a memory model to the developers. As with many of the Java original sins, Threads were the wrong level of abstraction and something better like Actors should have been chosen.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Java is going to stay but it is going to stay where you don&#8217;t want to look</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Everyone wants to predict the demise of Java, don&#8217;t they? But few people offer a real, long-term alternative. There is enough risk with any of the other JVM languages to persude Enterprises that sticking with Java is the best choice. The evening&#8217;s speaker panel agreed (mostly) that the real successor to Java didn&#8217;t exist today. So where will the next big lanugage come from? Who can monetize a programming language? Microsoft has somehow done it with .NET, but show me the Oracle business plan that details how to get rich from writing a programming language. Or any other company for that matter. Here is my prediction: all this language innovation results in the best ideas making it into libraries and frameworks available for the Java language, and Java remains number one on our beloved TIOBE index, clunky syntax and all.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Webapps make you reboot. It is called &#8220;session expired&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Newspeak was funded to solve the problem of always on, always updated software. Quick question: what version of Google do you use? I&#8217;ve never in my life seen a version number at Google.com and that is a deployment success story. All software should work this way. I&#8217;m unclear how Newspeak is going to solve the session state problem but I&#8217;m also certain that I do &lt;i&gt;not&lt;/i&gt; fully grasp the Newspeak vision.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you want a static language you should look at Egyptian heiroglyphics because it hasn&#8217;t changed in a long time</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">And another quote from Brian Hurt: &#8220;Demand that you not have to learn something new to learn new languages, and then wonder why languages don&#8217;t improve much&#8221;. Newspeak is a bold change, and people are going to be very resistent. Incremental changes like Groovy are much easier to sell than big sweeping language changes. And an always changing language can hardly be adopted by the masses. I left the session wondering if Newspeak is an experiment meant to fuel language innovation or a real alternative as a mainstream programming language.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Complicated is not a sign that you&#8217;re clever. It is a sign that you failed.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Simple solutions can be achieved with a low number of non-overlapping concepts. If you need something more complicated then build it by composing the simpler pieces together. Special cases like primitive types are the road to ruin. Or the road to massive popularity and success as is the case with Java. In my humble opinion: success is an accident, much better to aim for happiness.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Language development has moved away from professional language writer and into the hands of hobbiest developers</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As a hobbiest developer working on the Groovy language, I have averaged a mere 2-3 hours a week of work over the last 12 months. The good news: I&#8217;m clearing my schedule after the GR8 Conference to work on Groovy&#8217;s GEP-4. The bad news, I am and will remain a non-professional hobbiest developer hacking on a language in my spare time. Life couldn&#8217;t be better.</div>
<p>This year&#8217;s <a href="http://jax.de">JAX.de</a> conference hosted many great Java thought leaders, including one of my personal favorites <a href="http://bracha.org">Gilad Bracha</a>. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend reading his <a href="http://bracha.org/Site/Papers.html">papers</a> on <a href="http://bracha.org/pluggableTypesPosition.pdf">Pluggable Type Systems</a> and <a href="http://bracha.org/objectsAsSoftwareServices.pdf">Objects as Software Services</a>. Lucky for me, my &#8220;<a href="http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=jax2010&amp;id=13700">Code Generation on the JVM</a>&#8221; talk was sandwiched between his &#8220;Java: A Post Mortem&#8221; and &#8220;<a href="http://newspeaklanguage.org/">Newspeak</a>: A Principled, Dynamic Language&#8221;. It was surreal to see my name next to someone I&#8217;ve revered for many years, and I felt a bit like the rookie professional athlete who has to play his first game against someone they grew up watching on TV.</p>
<p>As expected, his talks were good mix of humor, strong opinion, and thoughtful analysis. Here are my favorite bits:</p>
<p><strong>If you can&#8217;t abstract over it then it doesn&#8217;t belong there.<br />
</strong>An original sin of Java was constructors. They are static methods that commit to returning a concrete implementation. Remember the design mandate &#8220;program to interfaces&#8221;? Constuctors subvert this and gave rise to a cottage industry of Dependency Injection frameworks to get around the issue (as long as you consider VMWare a cottage industry!). You wouldn&#8217;t need DI if your language supported proper inversion of control in the first place. The next generation of languages hopefully won&#8217;t have this limitation.</p>
<p><strong>Class initialization is absurd. There should be none.<br />
</strong>Static state is bad, bad, bad and read Gilad&#8217;s great blog post if you aren&#8217;t persuaded. Without static state there is no need for class initialization. We&#8217;ve all heard that the JVM start up times are slow, but that is a bit of a myth. The problem is that through class initialization we&#8217;re asking the JVM to do millions of operations that could be avoided without static state. A Lambourgini isn&#8217;t slow, but it sure seems that way if you try to drive it to the Moon. Likewise the JVM.</p>
<p><strong>Why should a high level language need a memory model in the first place?<br />
</strong>The original Java memory model was incoherent, the revised memory model is understood by only five people in the world, and the actors for concurrency idea existed since the Gulati paper of 1970. Bracha&#8217;s point wasn&#8217;t that we need a better Java memory model, it is that we should have made a language that did not need to expose a memory model to the developers. As with many of the Java original sins, Threads were the wrong level of abstraction and something better like Actors should have been chosen.</p>
<p><strong>Java is going to stay but it is going to stay where you don&#8217;t want to look<br />
</strong>Everyone wants to predict the demise of Java, don&#8217;t they? But few people offer a real, long-term alternative. There is enough risk with any of the other JVM languages to persude Enterprises that sticking with Java is the best choice. The evening&#8217;s speaker panel agreed (mostly) that the real successor to Java didn&#8217;t exist today. So where will the next big lanugage come from? Who can monetize a programming language? Microsoft has somehow done it with .NET, but show me the Oracle business plan that details how to get rich from writing a programming language. Or any other company for that matter. Here is my prediction: all this language innovation results in the best ideas making it into libraries and frameworks available for the Java language, and Java remains number one on our beloved <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE</a> index, clunky syntax and all.</p>
<p><strong>Webapps make you reboot. It is called &#8220;session expired&#8221;<br />
</strong>Newspeak was funded to solve the problem of always on, always updated software. Quick question: what version of Google do you use? I&#8217;ve never in my life seen a version number at Google.com and that is a deployment success story. All software should work this way. I&#8217;m unclear how Newspeak is going to solve the session state problem but I&#8217;m also certain that I do &lt;i&gt;not&lt;/i&gt; fully grasp the Newspeak vision.</p>
<p><strong>If you want a static language you should look at Egyptian heiroglyphics because it hasn&#8217;t changed in a long time<br />
</strong>And another quote from <a href="http://enfranchisedmind.com/blog/">Brian Hurt</a>: &#8220;Demand that you not have to learn something new to learn new languages, and then wonder why languages don&#8217;t improve much&#8221;. Newspeak is a bold change, and people are going to be very resistent. Incremental changes like Groovy are much easier to sell than big sweeping language changes. And an always changing language can hardly be adopted by the masses. I left the session wondering if Newspeak is an experiment meant to fuel language innovation or a real alternative as a mainstream programming language.</p>
<p><strong>Complicated is not a sign that you&#8217;re clever. It is a sign that you failed.<br />
</strong>Simple solutions can be achieved with a low number of non-overlapping concepts. If you need something more complicated then build it by composing the simpler pieces together. Special cases like primitive types are the road to ruin. Or the road to massive popularity and success as is the case with Java. In my humble opinion: success is an accident, much better to aim for happiness.</p>
<p><strong>Language development has moved away from professional language writer and into the hands of hobbiest developers<br />
</strong>As a hobbiest developer working on the Groovy language, I have averaged a mere 2-3 hours a week of work over the last 12 months. The good news: I&#8217;m clearing my schedule after the <a href="http://gr8conf.org/">GR8 Conference</a> to work on <a href="http://docs.codehaus.org/display/GroovyJSR/GEP+4+-+AstBuilder+AST+Templates">Groovy&#8217;s GEP-4</a>. The bad news, I am and will remain a non-professional hobbiest developer hacking on a language in my spare time. Life couldn&#8217;t be better.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juggling with DLLs, WebStart and Maven</title>
		<link>http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/</link>
		<comments>http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/#comments</comments>
		<pubDate>Thu, 06 May 2010 11:00:16 +0000</pubDate>
		<dc:creator>christoph</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java RIA]]></category>
		<category><![CDATA[Technical Concepts]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[drag & drop]]></category>
		<category><![CDATA[jacob]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[office integration]]></category>
		<category><![CDATA[UltraLightClient]]></category>
		<category><![CDATA[webstart]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1219</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/";</script>Juggling with DLLs, WebStart and Maven
Recently we were asked to implement a Drag &#38; Drop mechanism between Microsoft Outlook and a Java based internet application. This necessitated our Java server having to communicate with COM objects on the client side. How do you do that?
The good thing is that our application was built using UltraLightClient, [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/";</script><h1>Juggling with DLLs, WebStart and Maven</h1>
<p>Recently we were asked to implement a Drag &amp; Drop mechanism between Microsoft Outlook and a Java based internet application. This necessitated our Java server having to communicate with COM objects on the client side. How do you do that?</p>
<p>The good thing is that our application was built using <a href="http://www.canoo.com/ulc/" target="_new">UltraLightClient</a>, so we had java on both the server and on the client side. And after some thinking, the steps seemed pretty clear, even if a tiny bit of juggling would be required. However, the juggle almost turned into a struggle when we encountered some unexpected pitfalls.</p>
<p>In this blog I will give a quick sketch of our solution and point out some of the traps to be aware of.</p>
<h3>Step 1: Talking COM using JACOB</h3>
<p>In order to communicate with Microsoft programs from Java you need a Java COM Bridge.<br />
We were using <a href="http://sourceforge.net/projects/jacob-project/" target="_new">JACOB</a> and it was surprisingly easy to extract Outlook mails into Java objects.</p>
<p><strong>The idea:</strong><br />
The following method extracts the selected outlook mails to a directory and returns the list of created files:<br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;"></pre><br />
<strong>The trap:</strong><br />
Using the email subject as a file name is practical, but it can contain many weird characters which may not be supported when the files are created. We found out that JACOB has problems creating files containing even characters like &#8220;:&#8221; and &#8220;,&#8221;. Furthermore, no exception is thrown, although the file fails to be created completely.</p>
<p><strong>The solution:</strong><br />
Replace potentially dangerous characters with something neutral using regular expressions:<br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;">[[code]]czoxOTU6XCINCnB1YmxpYyBTdHJpbmcgZ2V0VmFsaWRGaWxlTmFtZShTdHJpbmcgcmF3U3RyaW5nKSB7DQogICAgUGF0dGVybiBpbnZ7WyYqJl19YWxpZENoYXJhY3RlcnMgPSBQYXR0ZXJuLmNvbXBpbGUoXCJbXkEtWmEtejAtOV8ge30rIV1cIik7DQogICAgcmV0dXJuIGludmFsaWRDe1smKiZdfWhhcmFjdGVycy5tYXRjaGVyKHJhd1N0cmluZykucmVwbGFjZUFsbChcIiBcIik7DQp9DQpcIjt7WyYqJl19[[/code]]</pre><br />
To be on the safe side we were using a whitelist approach. We treat everything as invalid except for characters which are listed after the &#8220;^&#8221; character.</p>
<h3>Step 2: Shipping a DLL with Webstart</h3>
<p>JACOB can talk to Outlook because it comes with a DLL which has to be present in the classpath. This means we either have to ensure that all our users have this library installed (yikes!) or we ship it together with the application client using Java Webstart.</p>
<p><strong>The idea:</strong><br />
We include the DLL in the jar file and sign it with a valid certificate. Then it can be referenced from the JNLP file that launches your web application:<br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;">[[code]]czoxNjc6XCINClsuLi5dDQogICAgPCEtLSBBdHRlbnRpb246IFRoaXMgZG9lcyBub3Qgd29yayEhISAtLT4NCiAgICA8cmVzb3VyY2V7WyYqJl19cyBvcz1cIldpbmRvd3NcIj4NCiAgICAgICAgPG5hdGl2ZWxpYiBocmVmPVwibXktZGxsLmphclwiIGRvd25sb2FkPVwibGF6eVwiLz4NCiAgIHtbJiomXX0gPC9yZXNvdXJjZXM+DQpbLi4uXQ0KXCI7e1smKiZdfQ==[[/code]]</pre><br />
<strong>The trap:</strong><br />
We were using the optional parameter download=&#8221;lazy&#8221; to ensure that the library is only downloaded when it is really needed. The result was that it never got loaded at all(!) because we did not specify to which &#8220;part&#8221; the library belongs. This is another optional parameter which turns mandatory in combination with download=&#8221;lazy&#8221;.<br />
Unfortunately this little detail is not too well documented. The only hint found was <a href="http://www.dpunkt.de/java/Programmieren_mit_Java/Deployment/9.html#id519" target="_new">this one</a> (in german). It took me quite some time to find this critical information.</p>
<p><strong>The solution:</strong><br />
Since the jar containing our DLL is really small we chose to use download=&#8221;eager&#8221; (which is the default anyway) instead of defining &#8220;parts&#8221; in our JNLP.<br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;">[[code]]czoxNTE6XCINClsuLi5dDQogICAgPCEtLSBUaGlzIG9uZSBpcyBlYXNpZXIgYW5kIGl0IHdvcmtzISAtLT4NCiAgICA8cmVzb3VyY2V7WyYqJl19cyBvcz1cIldpbmRvd3NcIj4NCiAgICAgICAgPG5hdGl2ZWxpYiBocmVmPVwibXktZGxsLmphclwiLz4NCiAgICA8L3Jlc291cmNlcz4NClt7WyYqJl19Li4uXQ0KXCI7e1smKiZdfQ==[[/code]]</pre></p>
<h3>Step 3: Using native lib references with the webstart-maven-plugin</h3>
<p>We already were using Maven as a build system and our client distribution is generated with the <a href="http://mojo.codehaus.org/webstart/webstart-maven-plugin/" target="_new">webstart-maven-plugin</a> as follows:<br />
- We use a separate module with packaging type &#8220;pom&#8221; for the generation of the webstart client. Of course, this module is part of the multi module build for our application.<br />
- We provide a template for the JNLP file containing a parameter &#8220;$dependencies&#8221; which will be replaced by a list of the dependencies of the current module<br />
- At build time the dependencies will be signed and put into a zip file together with the JNLP file.<br />
- The zip file can be extracted to a java webstart server or, in our case, into a war file that will be deployed on a server.</p>
<p><strong>The idea:</strong><br />
Since JACOB is available via <a href="http://repo2.maven.org/maven2/net/sf/jacob-project/" target="_new">Maven Central</a> integration seemed pretty easy. We only have to generate the correct reference to the native library.</p>
<p><strong>The trap:</strong><br />
Unfortunately the current version of the webstart-maven-plugin (1.0-alpha-2) does not support native libs (<a href="http://jira.codehaus.org/browse/MWEBSTART-8" target="_new">open issue</a>). So we will need a workaround that wraps the jacob.dll into a jar file and generates the nativelib reference in our JNLP.</p>
<p><strong>The solution:</strong><br />
Perform the following steps:<br />
- Change the packaging type for the module from &#8220;pom&#8221; to &#8220;jar&#8221;.<br />
- Configure the pom.xml to copy jacob.dll from the maven repository into the build directory of the module using the <a href="http://maven.apache.org/plugins/maven-dependency-plugin/" target="_new">maven-dependency-plugin</a><br />
- Add the nativelib reference to the velocity template using the build artifact of the current module as a reference.<br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;"></pre><br />
<pre style="overflow: auto; font-size: 12px; line-height: 14px; width: 100%;">[[code]]czoyNjA6XCINClsuLi5dDQogICAgPHJlc291cmNlcz4NCiAgICAgICAgPGoyc2UgdmVyc2lvbj1cIjEuNStcIiBpbml0aWFsLWhlYXAtc3tbJiomXX1pemU9XCIyNTZNXCIgbWF4LWhlYXAtc2l6ZT1cIjUxMk1cIi8+DQogICAgICAgICRkZXBlbmRlbmNpZXMNCiAgICA8L3Jlc291cmNlcz4NCntbJiomXX0gICAgPHJlc291cmNlcyBvcz1cIldpbmRvd3NcIj4NCiAgICAgICAgPG5hdGl2ZWxpYiBocmVmPVwiJHtwcm9qZWN0LmJ1aWxkLmZpbmFse1smKiZdfU5hbWV9LmphclwiLz4NCiAgICA8L3Jlc291cmNlcz4NClsuLi5dDQpcIjt7WyYqJl19[[/code]]</pre></p>
<h3>Summary:</h3>
<p>After successfully having avoided the traps (okay: by stepping into them and finding a way out again) we got an application with a pretty cool feature integrated seamlessly in our build process. Nice!</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/05/06/juggling-with-dlls-webstart-and-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo Hosts Hackergarten, Open Source Benefits</title>
		<link>http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/</link>
		<comments>http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:29:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Hackergarten]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1145</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";</script>A few weeks ago on a Friday evening, Canoo opened its doors to the public and hosted a new programming user group called Hackergarten. The goal of the group is different from other user groups: instead of learning from listening to a presentation they want to learn by writing code. In their own words:
Our goal [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";</script><p>A few weeks ago on a Friday evening, Canoo opened its doors to the public and hosted a new programming user group called <a href="http://hackergarten.net/">Hackergarten</a>. The goal of the group is different from other user groups: instead of learning from listening to a presentation they want to learn by writing code. In their own words:</p>
<blockquote><p>Our goal is to create something that others can use; whether it be working software, improved documentation, or better educational materials. Our intent is to end each meeting with a patch or similar contribution submitted to an open and public project.</p></blockquote>
<p>We&#8217;re excited to say that their contribution to the <a href="http://www.gradle.org">Gradle</a> build system was accepted last week! The next release of Gradle 0.9 contains an &#8220;Announce&#8221; plugin that can notify you and your customers of build events using Twitter, Snarl, or the Ubuntu notification system. You can notify yourself of local build failures or notify your customers of successful formal build releases. It was a long Friday night, but the group of over 10 developers are all happy to see their work accepted. As the group sponsor, Canoo is happy to have kept them caffeinated and well fed.</p>
<p>The next Hackergarten is this Friday, 30 April 2010. The group plans to write some <a href="http://griffon.codehaus.org/">Griffon plugins</a>, a desktop application framework written in Java and Groovy. The Griffon Project Lead (and Canoo employee)<a href="http://www.jroller.com/aalmiray/">Andres Almiray</a> will be present to help guide the group. If you are anywhere near the Basel area this Friday, then please stop by Canoo and come join the fun. Don&#8217;t worry if you&#8217;ve never seen Groovy or Griffon before, the point is to learn new skills and meet new people.</p>
<p>You can find out more information on the Hackergarten <a href="http://groups.google.com/group/hackergarten/">mailing list</a> or follow <a href="http://twitter.com/Hackergarten">@Hackergarten</a> to stay up to date.</p>
<p>Come join the fun. Here&#8217;s what people are saying about the last event:</p>
<p><span style="color: #ffffff;">.</span></p>
<p><img class="size-full wp-image-1148 alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 20px; margin-right: 20px;" title="etienne" src="http://canoo.com/blog/wp-content/uploads/2010/04/etienne.jpg" alt="etienne" width="108" height="108" /><em> </em></p>
<blockquote>
<p style="text-align: left; "><em>The first Hackergarten was a great event, not only because there was free pizza, but primarily because it was a true team event with everyone actively contributing. Submitting a patch for a new Gradle plugin at the end of the night was our goal which we reached successfully. I look forward to learning more about Griffon at the next Hackergarten.</em></p>
<p style="text-align: left; ">Etienne Stuber</p>
</blockquote>
<p style="text-align: left; "><span style="color: #ffffff;">.</span></p>
<p style="text-align: left; "><img class="size-full wp-image-1160 alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 20px; margin-right: 20px;" title="alberto" src="http://canoo.com/blog/wp-content/uploads/2010/04/alberto.jpg" alt="alberto" width="108" height="108" /></p>
<blockquote></blockquote>
<blockquote><p><em>I learned how easy and powerful Gradle is. The fact: with a little group and in a little time, we wrote a worth-making contribution to an open source project. Did I have fun? Definitely, it was like meeting with friends but for a beer but enjoying coding at the same time. In the future I am interested in writing Grails or Griffon plugins</em>.</p>
<p>Alberto Mijares</p></blockquote>
<p><span style="color: #ffffff;">.</span></p>
<p><img class="alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 40px; margin-right: 20px;" title="Christophe" src="http://canoo.com/images/people/christoph_sperle.jpg" alt="" width="86" height="71" /></p>
<blockquote></blockquote>
<blockquote><p><em>At Hackergarten I learned about the Pomodoro technique and how to use groovy closures to do exception handling in a smart way. And yes, I had a lot of fun! For future events I am interested in anything with new technologies but especially with testing different approaches on how to program in teams</em>.</p>
<p>Christoph Sperle</p></blockquote>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Hamlet D&#8217;Arcy</title>
		<link>http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/</link>
		<comments>http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 07:42:52 +0000</pubDate>
		<dc:creator>Felix Schrape</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[hamlet]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1020</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/";</script>Canoo Software Engineer Hamlet D&#8217;Arcy was interviewed for the GR8 conference about his professional background and his conference contribution as well as Groovy and the Canoo Hackergarten.
Here&#8217;s the link to the interview! And here are some pictures of Hamlet during Canoo Day 2010:
  
var dzone_style="2";//]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/";</script><p>Canoo Software Engineer Hamlet D&#8217;Arcy was interviewed for the GR8 conference about his professional background and his conference contribution as well as <a href="http://groovymag.com/" target="_blank">Groovy</a> and the <a href="http://hackergarten.net/" target="_blank">Canoo Hackergarten</a>.</p>
<p><a href="http://www.gr8conf.org/blog/2010/04/15/70" target="_blank">Here&#8217;s the link to the interview</a>! And here are some pictures of Hamlet during Canoo Day 2010:</p>
<p><img class="alignnone size-medium wp-image-1021" title="DSC_0750" src="http://canoo.com/blog/wp-content/uploads/2010/04/4520260415_b5934c9745_b-199x300.jpg" alt="DSC_0750" width="199" height="300" /> <img class="alignnone size-medium wp-image-1022" title="DSC_0772" src="http://canoo.com/blog/wp-content/uploads/2010/04/4520896696_5cf1a3e7fc_b-199x300.jpg" alt="DSC_0772" width="199" height="300" /> <img class="alignnone size-medium wp-image-1023" title="DSC_0777" src="http://canoo.com/blog/wp-content/uploads/2010/04/4520897276_d4e9d27b8a_b-199x300.jpg" alt="DSC_0777" width="199" height="300" /></p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/04/15/interview-with-hamlet-darcy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo RIA Suite Beta</title>
		<link>http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/</link>
		<comments>http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 12:37:40 +0000</pubDate>
		<dc:creator>Felix Schrape</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[UltraLightClient]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1003</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/";</script>Canoo Engineering is proud to present the next generation of UltraLightClient! Download the Beta here!
The RIA-Framework (Rich Internet Application) has been completely overhauled and enhanced with a series of innovative and useful functions. These will enable more efficient and convenient deployment in future, as well as adding some attractive features to the design of the [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/";</script><p><strong>Canoo Engineering is proud to present the next generation of UltraLightClient! <a href="http://www.canoo.com/ulc/beta/">Download the Beta here!</a></strong></p>
<p>The RIA-Framework (Rich Internet Application) has been completely overhauled and enhanced with a series of innovative and useful functions. These will enable more efficient and convenient deployment in future, as well as adding some attractive features to the design of the user interface.</p>
<p>UltraLightClient will bear the name ULC Core from now on, and forms the basis of the new Canoo RIA Suite, which will officially be released at the beginning of May. The suite is designed in a modular fashion, allowing you to compose functionality according to your own needs. And you only pay for those modules which you actually require.</p>
<p><span style="color: #ffffff;">.</span></p>
<p><img class="alignnone size-full wp-image-1004" title="RIA suite" src="http://canoo.com/blog/wp-content/uploads/2010/04/RIA-suite.jpg" alt="RIA suite" width="178" height="50" /></p>
<p><strong>The Highlights</strong></p>
<ul>
<li>The new <strong>Chart Functionality</strong> enables you to present even complex facts and figures clearly and simply.</li>
<li>Using the integrated <strong>Animations Framework</strong> you can develop dynamic and attractive content in future.</li>
<li>Further <strong>sophisticated graphic features</strong> allow even more attractive designs: transparency, rounded angles etc.</li>
<li>Easy integration to Google App Engine.</li>
</ul>
<h2 style="font-size: 15px; font-weight: bold; line-height: 1px; padding-top: 18px;">THE NEW MODULES AT A GLANCE</h2>
<p><strong>ULC Table Plus</strong>: this package enables you to implement even the most complex tabular requirements in a rapid and straightforward manner.</p>
<p><strong>ULC Web Integration</strong>: simply integrate any browsers such as Safari, Firefox or Internet Explorer into your application developed under ULC. Web services and plug-ins like Google Maps or Flash Player can thus be launched directly in the application.</p>
<p><strong>ULC Office Integration</strong>: this ULC Core module supports the future import and export of Excel and Word files out-of-the-box. The contents can then be stored as PDF files and later printed.</p>
<p><strong>ULC Enterprise Portal Integration</strong>: using this optional extra, existing portlet applications can be easily and efficiently augmented with ULC applications.</p>
<p><strong>ULC Visual Editor</strong>: with the optimized visual editor you can generate your ULC applications by drag &amp; drop even more easily and, as usual, without any manual programming effort whatsoever.</p>
<p><strong>ULC Load</strong>: put your ULC applications though extensive load and performance tests using ULC Load. Thus you can be confident that your applications can bear up to the most rigorous demands in an operational environment.</p>
<p><a href="http://www.canoo.com/ulc/beta/">Download the Beta here!</a></p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/04/01/canoo-ria-suite-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which JVM language is for you?</title>
		<link>http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/</link>
		<comments>http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:42:25 +0000</pubDate>
		<dc:creator>Felix Schrape</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=990</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/";</script>Enjoy a new video of Canoo Fellow Dierk König in action:
In this discussion, panel members Dierk König, Guillaume Laforge (Groovy), Charles Nutter (JRuby), Stefan Tilkov (Clojure) and Ted Neward (Scala) discuss with the audience the pros and cons of the popular JVM-based lanauges Scala, Groovy, JRuby and Clojure in order to attempt to reach a [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/";</script><p><strong>Enjoy a new video of Canoo Fellow Dierk König in action</strong>:</p>
<div id="attachment_991" class="wp-caption alignnone" style="width: 310px"><a href="http://skillsmatter.com/podcast/ajax-ria/scala-groovy-jruby-clojure-which-jvm-language-is-for-you/zx-486"><img class="size-full wp-image-991" title="Video" src="http://canoo.com/blog/wp-content/uploads/2010/03/Bild-1.png" alt="&quot;Scala, Groovy, JRuby, Clojure - Which JVM language is for you?&quot;" width="300" height="254" /></a><p class="wp-caption-text">&quot;Scala, Groovy, JRuby, Clojure - Which JVM language is for you?&quot;</p></div>
<p>In this <a href="http://skillsmatter.com/podcast/ajax-ria/scala-groovy-jruby-clojure-which-jvm-language-is-for-you/zx-486" target="_blank">discussion</a>, panel members Dierk König, Guillaume Laforge (Groovy), Charles Nutter (JRuby), Stefan Tilkov (Clojure) and Ted Neward (Scala) discuss with the audience the pros and cons of the popular JVM-based lanauges Scala, Groovy, JRuby and Clojure in order to attempt to reach a verdict of rank. The panellists try to logically wade through arguments based on the key concepts of each language along with their primary applications and try to resolve clichéd comparisons such as performance.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/03/18/which-jvm-language-is-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo Fellow Dierk König about Pros and Cons of Language Diversity</title>
		<link>http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/</link>
		<comments>http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:43:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java RIA]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Dierk König]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=943</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/";</script>Watch an interesting interview (in German) with Dierk König about the actual language diversity in the Java community — Groovy, Scala, Clojure, JRuby and all the rest of them! If you are interested in this topic, we also recommend to take a look on the schedule of the Java Language Days 2010 (moderated by Dierk König and Markus [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/";</script><p><a href="http://it-republik.de/jaxenter/news/JAX-TV-Dierk-Koenig-ueber-Pro-und-Contra-der-Sprachenvielfalt-053492.html" target="_blank">Watch an interesting interview</a> (in German) with Dierk König about the actual language diversity in the Java community — Groovy, Scala, Clojure, JRuby and all the rest of them! If you are interested in this topic, we also recommend to take a look on the schedule of the <a href="http://it-republik.de/konferenzen/jax2010/specialdays/">Java Language Days 2010</a> (moderated by Dierk König and Markus Völter (<a href="http://www.itemis.com/">itemis</a>).</p>
<p><a href="http://it-republik.de/jaxenter/news/JAX-TV-Dierk-Koenig-ueber-Pro-und-Contra-der-Sprachenvielfalt-053492.html" target="_blank"><img class="alignnone size-full wp-image-944" title="Dierk König interviewed" src="http://canoo.com/blog/wp-content/uploads/2010/01/Bild-2.png" alt="Dierk König interviewed" width="544" height="309" /></a></p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/01/25/canoo-fellow-dierk-konig-about-pros-and-cons-of-language-diversity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When is it worth deploying RIA technology?</title>
		<link>http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/</link>
		<comments>http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:30:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java RIA]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[UltraLightClient]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=932</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/";</script>Excerpt of  &#8221;Rich Internet Applications for Business&#8221;, an article by Hans Dirk Walter, CEO Canoo Engineering AG (in print). 
Even if RIA technology continues to expand steadily in the future and the number of purely HTML based applications does decline, it is nonetheless not recommended to resort to an RIA framework or library for technology’s [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/";</script><p><em>Excerpt of  &#8221;Rich Internet Applications for Business&#8221;, an article by Hans Dirk Walter, CEO Canoo Engineering AG (in print). </em></p>
<p>Even if RIA technology continues to expand steadily in the future and the number of purely HTML based applications does decline, it is nonetheless not recommended to resort to an RIA framework or library for technology’s sake alone when developing online applications. Instead, the decision depends on the user interface requirements.</p>
<p><span style="color: #ffffff;"><span style="color: #000000;"><br />
</span></span></p>
<div id="attachment_934" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-934 " title="Figure 1" src="http://canoo.com/blog/wp-content/uploads/2010/01/Figure1.jpg" alt="Figure 1 provides a schematic illustration of various categories of application depending on usage, and shows the dependency of these applications with regard to interactivity requirements and interface richness (UI functionality, drag &amp; drop, graphics)." width="600" height="450" /><p class="wp-caption-text">Figure 1 provides a schematic illustration of various categories of application depending on usage, and shows the dependency of these applications with regard to interactivity requirements and interface richness (UI functionality, drag &amp; drop, graphics).</p></div>
<p><span style="color: #ffffff;">.</span></p>
<p>Typical web applications such as online shopping or rail timetables, that are only occasionally visited by their customers, need to be self explanatory and easy to operate. Speed and sophisticated interaction are of secondary importance in these cases. This type of application is best implemented using form based “wizards”. The functionality offered by HTML is generally more than sufficient in such cases. This does not apply, however, to productive systems, whose users often spend several hours per day with the application. The interface need not necessarily be self explanatory, while training is normally worthwhile. These kinds of application should be developed using RIA technology. The final types of program identified are games, which place the most demanding requirements of all in terms of interactivity (extremely speedy program reaction times in response to rapid successive inputs), as well as sophistication (3D animations, film sequences, etc.) Such application have so far scarcely been realised in satisfactory quality as RIAs.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/01/21/rich-internet-applications-for-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Significant Software Development Developments 2009</title>
		<link>http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/</link>
		<comments>http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 09:34:49 +0000</pubDate>
		<dc:creator>Felix Schrape</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java RIA]]></category>
		<category><![CDATA[JavaOne]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=888</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/";</script>Recently, Dustin Marx postet his top ten of the most &#8220;Software Development Developments of 2009&#8220;. Here is a short summary as a basis for further discussion:
Mergers and Acquisitions: SpringSource acquiring Cloud Foundry, SpringSource itself being acquired by VMware; Oracle&#8217;s acquisition of Virtual Iron and GoldenGate, Microsoft&#8217;s acquiring of Interactive Supercomputing, Google&#8217;s acquisitions of companies such as [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/";</script><p>Recently, <a href="http://marxsoftware.blogspot.com/">Dustin Marx</a> postet his top ten of the most &#8220;<a href="http://www.javaworld.com/community/?q=node/3869">Software Development Developments of 2009</a>&#8220;. Here is a short summary as a basis for further discussion:</p>
<div style="font-weight: normal;"><strong>Mergers and Acquisitions</strong>: <em>SpringSource </em>acquiring <em>Cloud Foundry,</em> <em>SpringSource</em> itself being acquired by <em>VMware</em>; <em>Oracle</em>&#8217;s acquisition of <em>Virtual Iron</em> and <em>GoldenGate</em>, <em>Microsoft</em>&#8217;s acquiring of <em>Interactive Supercomputing</em>, <em>Google</em>&#8217;s acquisitions of companies such as <em>reCAPTCHA</em> and <em>Teracent</em>, etc.</div>
<p><span style="font-weight: normal;"><strong>Changing Landscape of Software Development Conferences</strong>: <em>Colorado Software Summit</em> and <em>SDWest</em> and <em>SD Best Practices</em> terminated their long-running tradition in 2009. There is speculation that <em>JavaOne 2009</em> may have been the last.</span></p>
<p><span style="font-weight: normal;"><strong>Java IDE Wars</strong>: <em>IntelliJ IDEA</em> has been the only one of the four leading Java IDEs that has not been available without charge. In 2009, the availability of an open source community edition of <em>IntelliJ IDEA</em> potentially changed the Java IDE landscape.</span></p>
<p><span style="font-weight: normal;"><strong>Groovy</strong>: <em>Groovy</em> claims to be &#8220;the most popular and successful dynamic language for the JVM&#8221;. According to Marx, this certainly seems to be the case (he mentions the high number of books on <em>Groovy</em> (and <em>Grails</em>) and the existence of a <em>DZone</em> area dedicated to Groovy (<a href="http://groovy.dzone.com/">Groovy Zone</a>) for evidence.</span></p>
<p><span style="font-weight: normal;"><strong>Java EE 6</strong>: Marx defines the December release of <em>Java EE 6</em> as a significant development in the enterprise space.</span></p>
<p><span style="font-weight: normal;"><strong>Oracle buys Sun</strong>: According to Marx, even developers who do not use <em>Sun</em> or <em>Oracle </em>products are likely to be at least indirectly affected by this acquisition because it will almost certainly affect the entire software development competitive landscape.</span></p>
<p><span style="font-weight: normal;"><br />
</span></p>
<p>Also included in the ranking were topics as:</p>
<ul>
<li><strong>Programming Environments for Mobile Devices</strong></li>
<li><strong>Bing Search Engine</strong></li>
<li><strong>Scala</strong></li>
<li><strong>Java SE 7 News</strong></li>
<li><strong>Cloud Computing</strong></li>
<li><strong>Google Chrome OS</strong></li>
</ul>
<p>If you are interested in Marx&#8217; full review of 2009, please read his blog entry at <a href="http://www.javaworld.com/community/?q=node/3869">JW Blogs</a>. He also cited other annual reviews from <a href="http://java.dzone.com/articles/java-2009-retrospective">JavaLobby</a> and <a href="http://www.computerworld.com/s/article/9142626/Software_development_s_winners_and_losers_2009_edition">Computerworld</a>. <strong>So what are last year&#8217;s most significant developments in software development from your point of view?</strong></p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2010/01/14/significant-software-development-developments-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ULC Load 3.0.2 available for Mac OS X</title>
		<link>http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/</link>
		<comments>http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 15:02:44 +0000</pubDate>
		<dc:creator>marcel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java RIA]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[UltraLightClient]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=851</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/";</script>We are pleased to announce that ULCLoad 3.0.2 for Mac OS X is now available for download.
This are maintenance release for ULCLoad 3.0. Please see the release notes for a list of implemented feature requests and fixed problem reports. 
Please note: the ULCLoad 3.0 license key is valid for all software releases labeled ULCLoad 3.0. [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/";</script><p>We are pleased to announce that <a href="http://www.canoo.com/ulc/products/ulcload.html">ULCLoad 3.0.2 for Mac OS X</a> is now available for download.</p>
<p>This are maintenance release for ULCLoad 3.0. Please see the <a href="http://www.canoo.com/ulc/external/load-releasenotes.html">release notes</a> for a list of implemented feature requests and fixed problem reports. </p>
<p>Please note: the ULCLoad 3.0 license key is valid for all software releases labeled ULCLoad 3.0. If you already have a ULCLoad 3.0 license key, a new license key is not required.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2009/11/27/ulc-load-3-0-2-available-for-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
