<?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; JAX</title>
	<atom:link href="http://canoo.com/blog/category/jax/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>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 session at JavaOne 2008</title>
		<link>http://canoo.com/blog/2008/04/22/canoo-session-at-javaone-2008/</link>
		<comments>http://canoo.com/blog/2008/04/22/canoo-session-at-javaone-2008/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 07:33:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[JavaOne]]></category>
		<category><![CDATA[RIA4Mobiles]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=253</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2008/04/22/canoo-session-at-javaone-2008/";</script>While Dierk König is speaking at this week&#8217;s JAX in Wiesbaden, Germany, I&#8217;m sending out an info pointing to his next session in San Francisco.  

Dierk König and Mike Mannion are presenting a session at JavaOne 2008 on:    	
 Going Mobile with JavaFX™ Script Technology, Groovy, and Google Android


Add this session [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://canoo.com/blog/2008/04/22/canoo-session-at-javaone-2008/";</script><p>While <a href="http://it-republik.de/jaxenter/jax/speaker.php?language=#1208-k%F6nig-dierk">Dierk König</a> is speaking at this week&#8217;s JAX in Wiesbaden, Germany, I&#8217;m sending out <a href="http://www.canoo.com/news/javaone.html">an info</a> pointing to his next session in San Francisco.  </p>
<p><img src="http://canoo.com/blog/wp-content/uploads/2008/03/javaone.jpg" alt="JavaOne 2008" /></p>
<p>Dierk König and Mike Mannion are presenting a session at JavaOne 2008 on:    	</p>
<blockquote><p> <a href="https://www28.cplan.com/cc191/session_details.jsp?isid=295815&#038;ilocation_id=191-1&#038;ilanguage=english">Going Mobile with JavaFX™ Script Technology, Groovy, and Google Android</a>
</p></blockquote>
<p><br/><br />
Add this session to your schedule! And stop by at the Canoo booth at booth number 429.<br />
<br/></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/2008/04/22/canoo-session-at-javaone-2008/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://canoo.com/blog/2008/04/22/canoo-session-at-javaone-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
