<?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>Steve On Java &#187; Announcements</title>
	<atom:link href="http://steveonjava.com/category/announcements/feed/" rel="self" type="application/rss+xml" />
	<link>http://steveonjava.com</link>
	<description>Hacking Java, JavaFX, and Flash with Agility</description>
	<lastBuildDate>Thu, 01 Dec 2011 01:36:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Celebrating Java 7 with 7 Reasons to Attend OSCON Java</title>
		<link>http://javafx.steveonjava.com/celebrating-java-7-with-7-reasons-to-attend-oscon-java/</link>
		<comments>http://javafx.steveonjava.com/celebrating-java-7-with-7-reasons-to-attend-oscon-java/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 23:31:32 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[OSCON Java]]></category>
		<category><![CDATA[java 7]]></category>
		<category><![CDATA[jvm languages]]></category>
		<category><![CDATA[oscon]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1844</guid>
		<description><![CDATA[OSCON Java is a new conference that I am helping to kick off as co-chair this July.  While there are plenty of conferences out there that you could attend, I am confident that this is the one you won&#8217;t want to miss. To celebrate the Java 7 release, I put together 7 reasons why you [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fcelebrating-java-7-with-7-reasons-to-attend-oscon-java%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FokllHE%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Celebrating%20Java%207%20with%207%20Reasons%20to%20Attend%20OSCON%20Java%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/celebrating-java-7-with-7-reasons-to-attend-oscon-java/";
		var dzone_title = "Celebrating Java 7 with 7 Reasons to Attend OSCON Java";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p><a href="http://www.oscon.com/oscon2011/public/content/java">OSCON Java</a> is a new conference that I am helping to kick off as co-chair this July.  While there are plenty of conferences out there that you could attend, I am confident that this is the one you won&#8217;t want to miss.</p>
<p>To celebrate the Java 7 release, I put together 7 reasons why you should attend OSCON Java.  Also, make sure to use the 20% discount code of &#8220;OS11COM&#8221; when you register:</p>
<div class="download"><a href="https://en.oreilly.com/oscon2011/public/register">Register now</a></div>
<h3>1. Come Celebrate the First New Java Release in Half a Decade!</h3>
<p><a href="http://jdk7.java.net/"><img class="alignnone" title="Java 7" src="http://geeknizer.com/wp-content/uploads/java7.jpg" alt="" width="138" height="131" /></a></p>
<p>The last major release of Java was Java 6, which came out 5 years ago on December 11, 2006.  After only a year of the Sun acquisition, Oracle has already made a major Java release happen with another scheduled in a year&#8217;s time.</p>
<p>We have broad coverage of the <a href="http://jdk7.java.net/">Java 7</a> release with a keynote and technical session by <a href="http://www.oscon.com/oscon2011/public/schedule/detail/21184">Joe Darcy</a>, and technical sessions on OpenJDK and Coin by <a href="http://www.oscon.com/oscon2011/public/schedule/detail/21184">Dalibor Topic</a> and <a href="http://www.oscon.com/oscon2011/public/schedule/detail/20049">Stuart Marks</a>.  I have been pretty impressed with Stuart&#8217;s coverage of topics from a developer&#8217;s perspective and am looking forward to his talk myself.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>2. Because Google Matters</h3>
<p><img class="alignnone" title="Joshua Bloch" src="http://assets.en.oreilly.com/1/eventprovider/1/_@user_121468.jpg" alt="" width="75" height="100" /></p>
<p>Regardless of what you think about the Android lawsuit, I think the biggest detriment has been the lack of good content on Google technologies at Java conferences.  We are an independent conference, so it allows us to bring content that you would otherwise not find, such as an exclusive keynote from Joshua Bloch and several mobile <a href="http://www.oscon.com/oscon2011/public/schedule/tag/android">Android sessions</a> to help you leverage your Java skills on modern devices.</p>
<h3>3. You Think JVM Languages are Cool</h3>
<p><img class="alignnone" title="Martin Odersky" src="http://assets.en.oreilly.com/1/eventprovider/1/_@user_106308.jpg" alt="" width="75" height="100" /></p>
<p>It has been said that the crown jewel of the Java platform is the JVM, not the language.  Java 7 has further solidified this with better support for dynamic languages.  Come find out what is the latest and greatest on the alternative language front with a keynote and some meaty sessions from <a href="http://www.oscon.com/oscon2011/public/schedule/detail/17884">Martin Odersky</a>, deep technical sessions on Groovy, Clojure, Scala, and other languages, and some bytecode hacking with <a href="http://www.oscon.com/oscon2011/public/schedule/detail/19924">Charles Nutter</a>.</p>
<h3>4. And You Wouldn&#8217;t Mind Hanging out with JVM language Authors for a Day&#8230;</h3>
<p><a href="http://jvmlangsymposium.eventbrite.com/"><img class="alignnone" title="JVM Langauge Symposium" src="http://evbdn.eventbrite.com/s3-s3/eventlogos/1862435/1630108699-2.png" alt="" width="205" height="200" /></a></p>
<p>On the Sunday before OSCON we are organizing a free <a href="http://jvmlangsymposium.eventbrite.com/">JVM Languages Symposium</a> that many of the speakers will be attending.  This is a great opportunity to hang out with JVM language authors and the movers and shakers in the industry in an informal unconference atmosphere.  Events like this are what I believe sets apart community-driven conferences from large corporate events, and provide a lot more value to the attendees than simply one-way content.  If you happen to be in the Portland area, you can drop by for this free event with no obligation to stay for OSCON.</p>
<h3>5. Your Boss Won&#8217;t Let You Fly to Belgium</h3>
<p><a href="http://devoxx.com/"><img class="alignnone" title="Devoxx" src="http://www.devoxx.com/download/attachments/4751369/DV11?version=10&amp;modificationDate=1305560192000" alt="" width="218" height="80" /></a></p>
<p>I travel to speak at different conferences around the world and I would have to say that the golden standard for Java conferences is <a href="http://devoxx.com/">Devoxx</a>.  They have an amazing venue &#8212; it is great to see your slides on a huge movie screen, and relaxing for attendees to take it in from nice, plush seats.  They attract an international audience&#8230;  not only Belgium, but Italy, France, Germany, and citizens of many of the other surrounding countries consider Devoxx their home conference. Even though Devoxx is a wildly successful conference, they still have a small-conference feel, run by a very tight knit conference committee that acts more like a user group than an organization. This makes the entire conference experience much more personalized.</p>
<p>OSCON Java has a lot of similarities with Devoxx. It has a small, enthusiastic program committee with folks who really care about Java technologies. We are also following the Devoxx model of recording and posting talks online afterwards, so even if you miss a great talk because you are in the room next door, you can always watch it online later. Finally, since we are an independent conference, you get the full experience of Java, Android, and other technologies that you would otherwise have to go to multiple conferences to see.</p>
<h3>6. OSCON is a Pretty Sweet Conference as Well&#8230;</h3>
<p><a href="http://www.oscon.com"><br />
<img src="http://assets.en.oreilly.com/1/event/61/oscon2011_attending_210x60.gif " border="0" alt="OSCON 2011" width="210" height="60" /><br />
</a><br />
The O&#8217;Reilly OSCON conference has been underrepresented in the Java community, but is a pretty huge event in its own right.  They have some amazing content around <a href="http://www.oscon.com/oscon2011/public/schedule/topic/Emerging%20Languages">emerging languages</a> and <a href="http://www.oscon.com/oscon2011/public/schedule/topic/Mobile%20Platforms">mobile platforms</a>.  Plus, you can get OSCON, OSCON Java, and OSCON Data all wrapped up in one neat package with the <a href="https://en.oreilly.com/oscon2011/public/register">OSCON Superpass</a>.</p>
<h3>7. There is Only One Inaugural Year!</h3>
<p><a href="http://www.oscon.com"><br />
<img src="http://assets.en.oreilly.com/1/event/61/oscon2011_java_attending_468x60.gif" border="0" alt="OSCON Java 2011" width="468" height="60" /><br />
</a><br />
This is our first year putting on <a href="http://www.oscon.com/oscon2011/public/content/java">OSCON Java</a>, so we are pulling out all the stops with the best speakers, tutorials, content, and events.  You will have a unique opportunity to participate in the creation of a new Java tradition, and a decade from now can brag to your friends about being a founding attendee of the biggest open-source Java conference in the world.</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/celebrating-java-7-with-7-reasons-to-attend-oscon-java/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/celebrating-java-7-with-7-reasons-to-attend-oscon-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON Java, The Java Open Source Conference</title>
		<link>http://flash.steveonjava.com/oscon-java-the-java-open-source-conference/</link>
		<comments>http://flash.steveonjava.com/oscon-java-the-java-open-source-conference/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 00:19:15 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OSCON Java]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1819</guid>
		<description><![CDATA[It is pretty easy to get lost in the media hype around the Java events of the past year.  If you follow the headlines, you might believe that all the Java talent left Oracle in a mass exodus, Larry hates open source, or Java is turning into the next COBOL.  Regardless of the factual correctness [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fflash.steveonjava.com%252Foscon-java-the-java-open-source-conference%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fgnm2qD%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OSCON%20Java%2C%20The%20Java%20Open%20Source%20Conference%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://flash.steveonjava.com/oscon-java-the-java-open-source-conference/";
		var dzone_title = "OSCON Java, The Java Open Source Conference";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>It is pretty easy to get lost in the media hype around the Java events of the past year.  If you follow the headlines, you might believe that all the Java talent left Oracle in a mass exodus, Larry hates open source, or Java is turning into the next COBOL.  Regardless of the factual correctness of these headlines, the Java ecosystem is about more than a single company or set of individuals.  Java has the largest open-source community of any language in existence!</p>
<p>So how big is Java and open-source?  Here is an informal search poll of some of the most popular open-source project hosting providers:</p>
<p><a href="http://steveonjava.com/wp-content/uploads/2011/03/Open-source-platform-comparison.png"><img class="aligncenter size-full wp-image-1823" title="Open-source platform comparison" src="http://steveonjava.com/wp-content/uploads/2011/03/Open-source-platform-comparison.png" alt="" width="574" height="324" /></a></p>
<p>The data for this chart comes from the top six open-source hosting providers using Google Search as a metric for gauging activity level for each of the platforms.  As you can see, Java is still the most active open-source platform in the world, followed closely by PHP and Python.  While not an indicator of language popularity, Bill Gates has gone on record speaking out against open source, so the poor representation from the C# community is not surprising.</p>
<p>This takes us to <a href="http://www.oscon.com/oscon2011/public/cfp/159">OSCON Java</a>, which is a new conference I am helping to kick off as conference co-chair together with <a href="http://twitter.com/#!/laurelatoreilly">Laurel Ruma</a>.  It is colocated with OSCON in Portland, Oregon, but is exclusively focused on Java and open source.  O&#8217;Reilly is the conference organizer, but they are very neutral when it comes to corporations and technologies.  This allows us to reach out to a wide variety of Java technology players including Apache, Google, Adobe, Oracle, the JCP, and many others.</p>
<p>We have big plans for the OSCON Java keynotes, technical content, and exhibitors.  Also, we are working on making this a model conference from the get-go based on my experience attending and speaking at premier conference venues across the world.  Expect a huge focus on community outreach, a lot of interaction between speakers and attendees, and a particular focus on the JVM languages of tomorrow.</p>
<p>If you are interested in participating as a speaker, it is still not too late to submit a talk.  The CFP ends on March 28th (4 days!), so you still have time to submit a last minute talk:<a href="http://www.oscon.com/oscon2011/public/cfp/159"></p>
<p>http://www.oscon.com/oscon2011/public/cfp/159</a></p>
<p>If you have a great idea, but can&#8217;t get your talk together in time or miss the deadline by a few days, shoot me an e-mail via the <a href="http://steveonjava.com/contact/">contact form</a> on my blog.</p>
<p>I look forward to seeing you at OSCON Java, uniting the Java open-source community towards a brighter future!</p>
<div class="plus-one-wrap"><g:plusone href="http://flash.steveonjava.com/oscon-java-the-java-open-source-conference/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://flash.steveonjava.com/oscon-java-the-java-open-source-conference/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash On&#8230; Meetup Premiere</title>
		<link>http://flash.steveonjava.com/flash-on-meetup-premiere/</link>
		<comments>http://flash.steveonjava.com/flash-on-meetup-premiere/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 08:29:08 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1658</guid>
		<description><![CDATA[I am pleased to announce the Flash On&#8230; user group that I am kicking off together with Keith Sutton, Oswald Campesato, and Justin Webb.  The focus is Flash on consumer devices from Mobile to Tablet to TV. Oswald and I will be doing the inaugural presentation on Flash mobile technologies this evening.  You can catch [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fflash.steveonjava.com%252Fflash-on-meetup-premiere%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Flash%20On...%20Meetup%20Premiere%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://flash.steveonjava.com/flash-on-meetup-premiere/";
		var dzone_title = "Flash On&#8230; Meetup Premiere";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I am pleased to announce the <a href="http://meetup.com/flashon/">Flash On&#8230; user group</a> that I am kicking off together with Keith Sutton, Oswald Campesato, and Justin Webb.  The focus is Flash on consumer devices from Mobile to Tablet to TV.</p>
<p>Oswald and I will be doing the <a href="http://www.meetup.com/flashon/calendar/15056595/">inaugural presentation</a> on Flash mobile technologies this evening.  You can catch the live stream on Adobe Connect here:</p>
<p><a href="http://experts.na3.acrobat.com/flashondevices/">http://experts.na3.acrobat.com/flashondevices/</a><br />
(Stream starts at 7PM PST!)</p>
<p>For those of you who haven&#8217;t been following the Flash Mobile headlines, there have been a lot of great announcements that make this platform worth developing for:</p>
<p><strong>Mobile</strong></p>
<ul>
<li>With the <a href="http://get.adobe.com/air/">AIR 2.5 release</a>, Android devices are fully supported</li>
<li>Apple has <a href="http://www.apple.com/pr/library/2010/09/09statement.html">relaxed their license</a> to allow Flash-based applications in the App Store</li>
<li>Similar announcements have come from other vendors such as <a href="http://pressroom.palm.com/releasedetail.cfm?ReleaseID=519951">Palm</a>, <a href="http://www.engadget.com/2010/10/25/adobe-confirms-flash-player-10-1-is-coming-to-blackberry-window/">Windows 7, and others</a></li>
</ul>
<p><strong>TV</strong></p>
<ul>
<li><a href="http://www.google.com/tv/features.html">Google TV</a> prominently features Flash support</li>
<li> Adobe also announced <a href="http://eon.businesswire.com/news/eon/20101024005146/en/Adobe-Extends-AIR-Applications-Screens">AIR support for Samsung devices</a> such as Smart TVs and Blu-ray Players</li>
</ul>
<p><strong>Tablet</strong></p>
<ul>
<li> Blackberry announced <a href="http://us.blackberry.com/newsroom/news/press/release.jsp?id=4674">Adobe AIR support</a> for their Playbook Tablet</li>
</ul>
<p>Here is an excerpt from the Adobe Max 2010 keynote that shows off the Blackberry Playbook Tablet running Flash:<br />
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/zyJVNK7aSW4?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zyJVNK7aSW4?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>When put together, Flash is well poised to become the defacto standard for building rich user experiences across different screens.</p>
<p>We will cover all this and more in our <a href="http://www.meetup.com/flashon/calendar/15056595/">presentation</a> tonight.  As usual, we will have high production values for the talk with side-by-side presenter video and slides plus a chat area to ask questions.  I hope to see you there!</p>
<div class="plus-one-wrap"><g:plusone href="http://flash.steveonjava.com/flash-on-meetup-premiere/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://flash.steveonjava.com/flash-on-meetup-premiere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Visage &#8211; The DSL for Writing UIs</title>
		<link>http://javafx.steveonjava.com/accouncing-visage/</link>
		<comments>http://javafx.steveonjava.com/accouncing-visage/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 07:16:42 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Visage]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1421</guid>
		<description><![CDATA[I am pleased to announce the Visage Language, a domain specific language (DSL) for writing user interfaces. http://visage-lang.org/ User interface developers have long been neglected and forced to deal with languages and tooling that are a poor fit for their craft.  At times they are asked to write user interfaces in languages originally meant for [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Faccouncing-visage%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdcqvOL%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Announcing%20Visage%20-%20The%20DSL%20for%20Writing%20UIs%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/accouncing-visage/";
		var dzone_title = "Announcing Visage &#8211; The DSL for Writing UIs";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I am pleased to announce the Visage Language, a domain specific language (DSL) for writing user interfaces.</p>
<p><a href="http://visage-lang.org/">http://visage-lang.org/</a></p>
<p>User interface developers have long been neglected and forced to deal with languages and tooling that are a poor fit for their craft.  At times they are asked to write user interfaces in languages originally meant for server-side applications such as C and Java.  In other instances they are required to use a markup language originally meant for representing documents or structured data such as HTML and XML.  These are fine technologies for the applications in which they were originally intended, but a weak substitute for declaring and representing user interfaces.</p>
<p>The goal of Visage is to provide a common language for user interface developers that provides the following benefits:</p>
<ol>
<li>Model the UI &#8211; The code should look like the user interface with a similar structure to how the resulting application will appear.</li>
<li>Data Binding &#8211; All user interfaces have a backend model, so it should be easy and painless to hook this up to the UI with bidirectional integration.</li>
<li>Resilient Behavior &#8211; The last thing you want to see during a customer demo of your new application is a NullPointerException.  Language constructs should have deterministic, but fault tolerant behavior in all cases.</li>
<li>Rapid Development &#8211; Application development should allow rapid, iterative cycles with early feedback starting right at the compilation phase.</li>
</ol>
<p>The way in which Visage satisfies these requirements is summarized in the following table:</p>
<table border="1" cellspacing="0" cellpadding="3" width="650">
<col width="150"></col>
<col width="108"></col>
<col width="112"></col>
<col width="122"></col>
<col width="132"></col>
<tbody>
<tr height="20">
<td width="150" height="20"></td>
<td width="108">Model the UI</td>
<td width="112">Data Binding</td>
<td width="122">Resilient Behavior</td>
<td width="132">Rapid Development</td>
</tr>
<tr height="20">
<td height="20">Object Literals</td>
<td>X</td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Closures</td>
<td>X</td>
<td>X</td>
<td></td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Data Binding</td>
<td></td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Bijective Binding</td>
<td></td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Null-Safe Semantics</td>
<td></td>
<td></td>
<td>X</td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Strong Type Checking</td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
<tr height="20">
<td height="20">Compiled Language</td>
<td></td>
<td></td>
<td></td>
<td>X</td>
</tr>
</tbody>
</table>
<p>So what does a Visage application look like?  Here is Hello World in the Visage language:</p>
<pre class="brush: javafx; title: ; notranslate">
Stage {
  title: &quot;Hello World&quot;
  Scene {
    Text {
      &quot;Hello World&quot;
    }
  }
}
</pre>
<p>This code should look familiar to readers of my blog.  It is based on the JavaFX Script language with a few (proposed) syntactic additions.</p>
<p>For those of you who don&#8217;t know the history of JavaFX Script, it was originally designed by Christopher Oliver and called F3 for Form Follows Function.  With the acquisition of SeeBeyond by Sun, this technology became the cornerstone of JavaFX and was open sourced in 2007 at JavaOne.  Oracle purchased Sun and just this past week at JavaOne 2010 announced that they are going to continue with the JavaFX Platform, but replace the JavaFX Script language with Java APIs.  We are adopting the JavaFX Compiler for use in the Visage project, and plan to continue evolving it.</p>
<p>Here are some of the goals of the Visage project:</p>
<ul>
<li>Provide a JavaFX Java API Binding &#8211; One of the most innovative parts of the JavaFX platform was the language, and it is what all JavaFX applications are written in today.  Our number 1 project goal is to make sure that developers can continue to write declarative code and easily port over their existing applications.</li>
<li>Enhance the Visage Language &#8211; The language syntax remains largely unchanged since the 1.0 release of JavaFX.  We plan on making numerous improvements that will be beneficial to UI programmers and make common patterns easier to code.</li>
<li>Support for Other Platforms &#8211; For the Visage language to thrive, it has to be a general purpose UI programming language.  Some other platforms that are in great need of a UI DSL include HTML5, Flex, and Android.</li>
<li>Language Standardization &#8211; We would like to see the Visage language be made an official standard with possibly multiple implementations.</li>
</ul>
<p>If you are interested in following the project or helping out, please join the Google Groups:</p>
<p><a href="http://groups.google.com/group/visage-users">http://groups.google.com/group/<strong>visage-users</strong></a></p>
<p><a href="http://groups.google.com/group/visage-dev">http://groups.google.com/group/<strong>visage-dev</strong></a></p>
<p><strong><br />
</strong></p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/accouncing-visage/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/accouncing-visage/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0 (a.k.a. What Just Happened to JavaFX Script?)</title>
		<link>http://javafx.steveonjava.com/javafx-2-0/</link>
		<comments>http://javafx.steveonjava.com/javafx-2-0/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 11:28:22 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaFX Mobile]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx 2.0]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1395</guid>
		<description><![CDATA[There were some huge announcements at JavaOne today for the JavaFX platform.  Overall I think the announcements show some very positive momentum for the future of JavaFX and rich client Java, but there were some casualties&#8230; In this blog I will cover the salient bits, but if you would like an opportunity to hear it [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fjavafx-2-0%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9CGqvR%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%202.0%20%28a.k.a.%20What%20Just%20Happened%20to%20JavaFX%20Script%3F%29%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/javafx-2-0/";
		var dzone_title = "JavaFX 2.0 (a.k.a. What Just Happened to JavaFX Script?)";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>There were some huge announcements at JavaOne today for the JavaFX platform.  Overall I think the announcements show some very positive momentum for the future of JavaFX and rich client Java, but there were some casualties&#8230;</p>
<p>In this blog I will cover the salient bits, but if you would like an opportunity to hear it directly from the JavaFX leadership team in a free event, we will be hosting a <a href="http://www.svjugfx.org/calendar/14224927/">JavaFX 2.0 event</a> with Richard Bair and Jai Suri at our next SvJugFX meeting.  As usual, the event will be streamed live, and questions can be asked remotely via Google Moderator.</p>
<p><span style="color: #ffffff;">.</span></p>
<h1>The Good Parts:</h1>
<h2>Java and Alternative JVM Languages</h2>
<p>JavaFX has a new API face.  All the JavaFX 2.0 APIs will be exposed via Java classes that will make it much easier to integrate Java server and client code.  This also opens up some huge possibilities for JVM language integration with JavaFX that Jonathan Giles and I explored in our JavaOne talk today.  We did a whirlwind tour through four different JVM languages (Ruby, Clojure, Groovy, and Scala) showing what JavaFX 2.0 code may look like when ported to these different languages.</p>
<p>Here is the full presentation deck:</p>
<div id="__ss_5248670" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="JavaFX Your Way: Building JavaFX Applications with Alternative Languages" href="http://www.slideshare.net/steveonjava/javafx-your-way-building-javafx-applications-with-alternative-languages">JavaFX Your Way: Building JavaFX Applications with Alternative Languages</a></strong><object id="__sse5248670" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javafxyourway-100921060903-phpapp02&amp;rel=0&amp;stripped_title=javafx-your-way-building-javafx-applications-with-alternative-languages&amp;userName=steveonjava" /><param name="name" value="__sse5248670" /><param name="allowfullscreen" value="true" /><embed id="__sse5248670" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javafxyourway-100921060903-phpapp02&amp;rel=0&amp;stripped_title=javafx-your-way-building-javafx-applications-with-alternative-languages&amp;userName=steveonjava" allowscriptaccess="always" allowfullscreen="true" name="__sse5248670"></embed></object></div>
<p>Which can also be <a href="http://jonathangiles.net/blog/wp-content/uploads/2010/09/JavaFXYourWay.pdf">downloaded as a PDF</a>.</p>
<h2>Open Source Controls</h2>
<p><span id="more-1395"></span>Thomas Kurian announced a strategy to open source the JavaFX controls going forward.  This is a huge move in the right direction for the platform, and will make life for us third-party control developers much better!  Even though this is not the <a href="../javafx-petition/">full platform open sourcing</a> that I have been petitioning for (thanks for all your support!!!), I will still take some of the credit.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>JavaFX 2.0 Proposed Roadmap</h2>
<p>Oracle has published a <a href="http://javafx.com/roadmap/">proposed roadmap</a> for JavaFX 2.0 in the 2011 timeframe.  There are some really great things included, many of which I have been campaigning for:</p>
<ul>
<li>Multithreading Improvements &#8211; The move to Java APIs breaks down some of the barriers to multi-threaded programming that were present with JavaFX.  Presumably a similar model to Swing will exist where you can launch worker threads, but still have to do all UI operations on a main event thread.</li>
<li>Texture Paint &#8211; Interesting to see this highlighted, but its use in JavaFX was <a href="http://today.java.net/article/2009/07/27/introducing-custom-paints-javafx">pioneered</a> by Jeff Friesen and included in JFXtras 0.7.</li>
<li>Grid Layout Container + CSS &#8211; Very good to see that they are taking the Grid Layout and evolving it.  The addition of making it accessible from CSS will make it an extremely powerful layout container suitable for multiple uses.</li>
<li>HD Media &#8211; Media seems to be getting a big upgrade, which has been long overdue.  This is in addition to other promised improvements in full screen capabilities, media markers, animation synchronization, and low latency audio.</li>
<li>HTML5 WebView &#8211; It is good to see that this is finally getting the attention it deserves.  JavaFX is great for dynamic application development, but is not well suited for content presentation.  The combination of JavaFX + HTML5 will greatly expand the range of applications that can be developed.</li>
<li>Controls Galore! &#8211; TableView, SplitView, TabView, and Rich Text to name a few.  This is a necessity to build robust enterprise applications.</li>
<li>File (and other) Dialogs &#8211; This may seem like a minor point, but is incredibly important for building real applications.</li>
</ul>
<h2>HTML5 Support</h2>
<p>Not to be confused with the WebView, there is also a plan for the successor to JavaFX 2.0 (2012 timeframe) to support an alternate HTML5 rendering pipeline.  Not many details are available about this yet, but it could be a huge technological breakthrough if they are able to pull it off successfully.  The practical applications of being able to deploy your JavaFX application to any HTML5 compliant device is enormous.</p>
<p><span style="color: #ffffff;">.</span></p>
<h1>The Casualties:</h1>
<h2>JavaFX Script</h2>
<p>JavaFX Script was good to us, but it is no longer a go forward technology for Oracle.  I am a bit disappointed about this move, because it takes away a lot of the productivity benefits that have made JavaFX code a joy to write.  However, many of the promised improvements in JavaFX 2.0 are around language features of JavaFX Script (such as binding and sequences), so hopefully they can maintain some of the benefits.</p>
<p>Richard Bair added a very <a href="http://fxexperience.com/2010/09/javafx-2-0/">insightful post</a> on his blog, which goes into more details on the language changes and is well worth a read.</p>
<h2>JavaFX Mobile</h2>
<p>JavaFX Mobile has not seen a lot of action since JavaOne 2009 and the mobile focus in the keynote was on JavaME and LWUIT.  I am still a big fan of the &#8220;write once, run anywhere&#8221; mantra, and am waiting for this to return to the mobile space.  With the proliferation of different mobile programming models (Android, iPhone, WebOS, etc.), whoever solves the mobile cross-platform development problem in a technically solid way will profit immensely.</p>
<p><span style="color: #ffffff;">.</span></p>
<h1>What&#8217;s Next?</h1>
<p>Now that Oracle is done with their announcements, I have some of my own.  If you are at JavaOne, drop by my Wednesday session entitled &#8220;<a href="http://my.javaonedevelop.com/events/event/1804">JFXtras: JavaFX Controls, Layouts, Services, and More</a>&#8221; at 2:15 to hear it firsthand, or wait for my blog post shortly following that.</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-2-0/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-2-0/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>JavaFX Your Way: Building JavaFX Applications with Alternative Languages</title>
		<link>http://javafx.steveonjava.com/javafx-your-way-building-javafx-applications-with-alternative-languages/</link>
		<comments>http://javafx.steveonjava.com/javafx-your-way-building-javafx-applications-with-alternative-languages/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 01:42:16 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1347</guid>
		<description><![CDATA[If you preregistered for any JavaFX sessions at JavaOne, you probably noticed a bit of churn in the past few weeks.  I actually requested that they drop my talk entitled &#8220;Take Control of JavaFX&#8221;, because Jonathan and I didn&#8217;t think we could do justice to the topic. However, we came up with an alternative talk, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fjavafx-your-way-building-javafx-applications-with-alternative-languages%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbdkmmH%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%20Your%20Way%3A%20Building%20JavaFX%20Applications%20with%20Alternative%20Languages%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/javafx-your-way-building-javafx-applications-with-alternative-languages/";
		var dzone_title = "JavaFX Your Way: Building JavaFX Applications with Alternative Languages";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>If you preregistered for any JavaFX sessions at JavaOne, you probably noticed a bit of churn in the past few weeks.  I actually requested that they drop my talk entitled &#8220;Take Control of JavaFX&#8221;, because Jonathan and I didn&#8217;t think we could do justice to the topic.</p>
<p style="text-align: center;"><img class="aligncenter" title="JVM Languages" src="http://3.bp.blogspot.com/_aQ9isAh6Od0/Svaq0z3nSbI/AAAAAAAABuc/DcAj-mp5o3I/s320/scala+or+groovy+and+others.JPG" alt="" width="320" height="194" /></p>
<p>However, we came up with an alternative talk, which we believe will be even better and more topical.  Here are the talk details:</p>
<p><strong>JavaFX Your Way: Building JavaFX Applications with Alternative Languages</strong><br />
Abstract: JavaFX is more than a language. It is also a platform for building immersive applications with graphics, animation, and rich media. In this session, you will see how you can leverage JavaFX from a host of different JVM languages, including Java, JRuby, Groovy, Scala, and Clojure.</p>
<p>The talk is on Monday at 4PM in Hilton San Francisco, Golden Gate 8.  Hope to see you there!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-your-way-building-javafx-applications-with-alternative-languages/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-your-way-building-javafx-applications-with-alternative-languages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JavaFX Talks Accepted</title>
		<link>http://javafx.steveonjava.com/javafx-talks-accepted/</link>
		<comments>http://javafx.steveonjava.com/javafx-talks-accepted/#comments</comments>
		<pubDate>Sun, 23 May 2010 06:46:25 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[jazoon]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1192</guid>
		<description><![CDATA[I am honored to be accepted by some great conferences to speak on JavaFX.  Each of the talks I am giving is unique, which means more work for me, but is a great opportunity to talk about some different topics that I think are important for folks using JavaFX. First up is Jazoon in Zurich, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fjavafx-talks-accepted%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbeZoei%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%20Talks%20Accepted%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/javafx-talks-accepted/";
		var dzone_title = "JavaFX Talks Accepted";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I am honored to be accepted by some great conferences to speak on JavaFX.  Each of the talks I am giving is unique, which means more work for me, but is a great opportunity to talk about some different topics that I think are important for folks using JavaFX.</p>
<p><a href="http://jazoon.com/"><img class="alignright size-full wp-image-1174" title="jazoon" src="http://steveonjava.com/wp-content/uploads/2010/04/jazoon.png" alt="" width="140" height="35" /></a>First up is <a href="http://jazoon.com/">Jazoon</a> in Zurich, Switzerland on June 1-3.  I have heard great things about this conference from folks who have attended in past years, and have already heard from some folks who will be attending my talk.  The topic for my session will be Building Data Rich Interfaces with JavaFX.  I have some good content lined up from my open source projects (actually too much content), so it should be a great session.</p>
<p>Next I will be speaking at JavaOne in my hometown of San Francisco on September 19-23.  Oracle is pulling out all the stops for this conference, taking over a full block of Mason Street as the JavaOne &#8220;Zone&#8221;.  They will be putting up a big tent with videostreaming and other festivities, in addition to the 4,000 square feet of space dedicated to talks and sessions.  For those of you who are not aware of the magnitude of Oracle, here is a shot of what they have done in past years for Oracle Open World:</p>
<p><a rel="attachment wp-att-1196" href="http://steveonjava.com/javafx-talks-accepted/oracle-tent/"><img class="alignnone size-full wp-image-1196" title="Oracle Moscone Tent" src="http://steveonjava.com/wp-content/uploads/2010/05/Oracle-Tent.jpg" alt="" width="600" height="400" /></a></p>
<p>I am fortunate enough to be able to co-present 2 Technical Sessions and 2 BOFs at JavaOne 2010:</p>
<p><strong>Technical Session 1</strong>: Pro JavaFX: Developing Enterprise Applications<br />
Co-presented with Jim Weaver</p>
<p><strong>Technical Session 2</strong>: Take Control of JavaFX<br />
Co-presented with Jonathan Giles from the JavaFX Control Team</p>
<p><strong>Birds of a Feather Session 1</strong>: JFXtras: JavaFX Controls, Layouts, Services, and More<br />
Co-presented with Dean Iverson and the rest of the JFXtras Team</p>
<p><strong>Birds of a Feather Session 2</strong>: JavaFX Author JAM<br />
Co-presented with Jim Weaver, Jim Clarke, Dean Iverson, and many other JavaFX authors (to be announced)</p>
<p>If you haven&#8217;t already, it is not too late to <a href="http://www.oracle.com/us/javaonedevelop/index.html">book your ticket</a> for JavaOne.  This will definitely be a year you won&#8217;t want to miss!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-talks-accepted/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-talks-accepted/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing the Apropos Project</title>
		<link>http://agile.steveonjava.com/announcing-the-apropos-project/</link>
		<comments>http://agile.steveonjava.com/announcing-the-apropos-project/#comments</comments>
		<pubDate>Tue, 04 May 2010 01:06:52 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[apropos]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1177</guid>
		<description><![CDATA[At the Lean Software and Systems Conference a week ago, Israel Gat, Erik Huddleston, and I did a presentation on Reformulating the Product Delivery Process.  At the end of this talk, we unveiled an open-source, JavaFX tool called Apropos that we use for Product Portfolio Planning at Inovis. Note: The data has been blurred to [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fagile.steveonjava.com%252Fannouncing-the-apropos-project%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdoIKuw%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Announcing%20the%20Apropos%20Project%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://agile.steveonjava.com/announcing-the-apropos-project/";
		var dzone_title = "Announcing the Apropos Project";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>At the <a href="http://atlanta2010.leanssc.org/">Lean Software and Systems Conference</a> a week ago, Israel Gat, Erik Huddleston, and I did a presentation on <a href="http://theagileexecutive.com/2010/04/26/apropos-the-inovis-end-to-end-kanban-system/">Reformulating the Product Delivery Process</a>.  At the end of this talk, we unveiled an open-source, JavaFX tool called <a href="http://code.google.com/p/apropos/">Apropos</a> that we use for Product Portfolio Planning at <a href="http://inovis.com/">Inovis</a>.</p>
<p><a href="http://code.google.com/p/apropos/"><img class="alignnone size-large wp-image-1178" title="apropos-portfolio" src="http://steveonjava.com/wp-content/uploads/2010/05/apropos-portfolio-650x430.png" alt="" width="650" height="430" /></a></p>
<p class="note">Note: The data has been blurred to hide corporate information.  The final release will include a test bed of public data, which can be used for display and testing.</p>
<p>What you are seeing in the above screenshot is the Portfolio Kanban View that we use for tracking features through their full lifecycle from proposal through validation.  It is backed by the Rally Agile Lifecycle Management tool, which exposes Web Services for accessing all of our planning data.  The entire UI was written in JavaFX, and makes heavy use of <a href="http://jfxtras.org/">JFXtras</a> features, such as the XTableView.</p>
<p>The plan for this tool is to do the initial launch of a BSD-licensed open-source version on May 22nd.  This will include support for the <a href="http://www.rallydev.com/agile_products/editions/community/signup/">Rally Community Edition</a>, which is free for up to 10 users.  In future releases we plan to support other Agile Lifecycle Management tools, both commercial and open-source, but will need assistance from the community to do this.</p>
<p>If you are interested in helping out with this project, please <a href="http://steveonjava.com/contact/">contact me</a>.  I will have limited bandwidth until after the initial launch, but after that would love to scale up this project with interested parties.</p>
<p>Here is the full presentation, which includes additional screenshots of <a href="http://code.google.com/p/apropos/">Apropos</a> at the end (slides 15-19):</p>
<div id="__ss_3853287" style="width: 425px;"><object id="__sse3853287" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lssc10v5-100425212336-phpapp02&amp;stripped_title=reformulating-the-product-delivery-process-3853287" /><param name="name" value="__sse3853287" /><param name="allowfullscreen" value="true" /><embed id="__sse3853287" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lssc10v5-100425212336-phpapp02&amp;stripped_title=reformulating-the-product-delivery-process-3853287" name="__sse3853287" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div class="plus-one-wrap"><g:plusone href="http://agile.steveonjava.com/announcing-the-apropos-project/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://agile.steveonjava.com/announcing-the-apropos-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 1.3 Top 10</title>
		<link>http://javafx.steveonjava.com/javafx-1-3-top-10/</link>
		<comments>http://javafx.steveonjava.com/javafx-1-3-top-10/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:45:40 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[javafx 1.3]]></category>
		<category><![CDATA[top-10]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1112</guid>
		<description><![CDATA[JavaFX 1.3 has just gone live on JavaFX.com.  This release is deceptively small, but has an enormous number of changes under the hood.  In this post I will take you through the Top 10 major features, giving you background information I learned from working with the JavaFX team, and flooding you with details on interesting [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fjavafx-1-3-top-10%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9AVafu%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%201.3%20Top%2010%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/javafx-1-3-top-10/";
		var dzone_title = "JavaFX 1.3 Top 10";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>JavaFX 1.3 has just gone live on <a href="http://javafx.com/">JavaFX.com</a>.  This release is deceptively small, but has an enormous number of changes under the hood.  In this post I will take you through the Top 10 major features, giving you background information I learned from working with the JavaFX team, and flooding you with details on interesting tidbits you might otherwise miss.</p>
<h2>JavaFX 1.3 Top 10 Features</h2>
<p><a rel="attachment wp-att-1113" href="http://steveonjava.com/javafx-1-3-top-10/javafx1-3-top-ten/"><img class="alignnone size-full wp-image-1113" title="javafx1.3-top-ten" src="http://steveonjava.com/wp-content/uploads/2010/04/javafx1.3-top-ten.jpg" alt="" width="449" height="404" /></a></p>
<h4>1. New Controls</h4>
<p><span id="more-1112"></span>JavaFX 1.3 comes with several new controls that are extremely useful when designing user interfaces.  For building forms you have the new PasswordBox, ChoiceBox, and Separator classes.  The PasswordBox is similar to the TextBox control, except it automatically hides input as it is typed.  The ChoiceBox control is long overdue, but surprisingly simple to use.  The interface is similar to the ListView control, both of which take a sequence of items.</p>
<p>Speaking of the ListView, this control has received a serious upgrade.  This includes the ability to render horizontally or vertically as well as customizable cell renderers via a cellFactory closure.</p>
<p>In addition, there is a new ScrollView class that simplifies the task of creating a simple scrollable viewport surrounding a collection of nodes.  This has been a feature in <a href="http://jfxtras.org/">JFXtras</a> for a while, so it is nice to see that the JavaFX team thought it was useful enough to add to the core libraries.</p>
<p>Finally, all controls now take a Tooltip that will be displayed on rollover.</p>
<p>To bring it all together, here is a simple example that demonstrates all the new controls in action:</p>
<p><a rel="attachment wp-att-1150" href="http://steveonjava.com/javafx-1-3-top-10/controldemo/"><img class="alignnone size-full wp-image-1150" title="Control Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/ControlDemo.png" alt="" width="266" height="288" /></a></p>
<p>And here is the source code:</p>
<pre class="brush: javafx; title: ; notranslate">

import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.geometry.Insets;

var list = [&quot;apples&quot;, &quot;bananas&quot;, &quot;oranges&quot;, &quot;pears&quot;, &quot;cabbage&quot;];

ScrollView {
  width: 250
  height: 250
  managed: false
  node: VBox {
    padding: Insets {top: 10, left: 10, bottom: 10, right: 10}
    spacing: 10
    content: [
      PasswordBox {promptText: &quot;enter password&quot;}
      Separator {}
      ChoiceBox {
        items: list
      }
      ListView {
        vertical: false
        items: list
      }
    ]
  }
}
</pre>
<h4>2. Layout Enhancements</h4>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --></p>
<p><!--[endif]--></p>
<p class="MsoNormal">Layout has undergone some serious changes as a result of this release, including the following:</p>
<ul>
<li>LayoutInfo and Resizable now include settings for fill, grow, and shrink.  Fill will allow you to specify whether the contents of a layout stop at their preferredSize or take up the maximum allowable space.  Grow and shrink are hints to the container about the relative priority for different nodes to get the available space.</li>
<li>LayoutInfo also includes a new margin feature, which makes it very easy to add visual padding around your Nodes in a layout!  This is in addition to padding, which appears on all the built-in layouts.</li>
<li>Container has a new snapToPixel boolean that allows you to create pixel-perfect alignments to avoid unwanted aliasing effects.</li>
<li>There is a new autoSize feature on Groups.<span> </span>Children will be automatically resized to their preferred width and height, preventing layout bugs when uninitialized components return the wrong bounds initially.<span> </span>You can still disable this feature, but it is strongly recommended that you fix your application to make use of preferred widths and heights instead of setting Node width and height manually.</li>
<li>Resizable classes automatically have layoutBounds set to [0, 0, width, height], avoiding an additional required declaration.</li>
<li>New support for baseline layouts via the TextOrigin class.</li>
<li>The Tile class now automatically sizes the tileWidth and tileHeight by default.</li>
<li>HPos and VPos have boolean for fillHeight and fillWidth, which rarely should be changed, but allow you to default back to the pre 1.3 behavior.</li>
</ul>
<p>For the most part, the JavaFX team has done an amazing job of keeping the layout changes backwards compatible.  However, to fully take advantage of the new layout features you will have to update your code.</p>
<p>The layout changes are significant enough that I can&#8217;t do them justice in this short blurb.  However, either myself or <a href="http://www.java.net/blogs/aim/">Amy Fowler</a> (whoever makes it first) will do an in depth article on just this one topic!</p>
<h4>3. Performance</h4>
<p>There have been some very significant changes in performance in the JavaFX 1.3 release all the way down to the compiler generated code.</p>
<p>Some areas you will notice the largest performance improvement in include:</p>
<ul>
<li>Bind performance &#8211; All binds in the language are now lazy by default, which means that they will get marked as dirty immediately, but only get re-evaluated when needed (if at all).</li>
<li>General code performance &#8211; With the compiler rewrite, a level of indirection on variable access has been removed, which will significantly improve the overall performance of any application.</li>
<li>Layout performance &#8211; The layout code has been optimized to reduce the number of passes required on each layout cycle, greatly improving the perceived responsiveness of applications.</li>
<li>Text performance &#8211; With the change to logical rather than physical layout bounds, any applications that heavily use Text elements will see a dramatic improvement in overall performance.</li>
<li>CSS performance &#8211; The CSS support has been rewritten from the ground up, greatly improving performance of applied styles.</li>
</ul>
<h4>4. Enhanced CSS</h4>
<p>The CSS support in JavaFX 1.3 has been rewritten from the ground up.  This includes some greatly enhanced functionality, especially for the Control classes, and also has a dramatic improvement on performance.</p>
<p>Because the changes are so significant, you may find that a lot of your previous styles do not work correctly on the 1.3 release.  The full set of CSS changes and supported tags is such a large topic that I will provide a link to the full JavaFX CSS specification once it is made available.</p>
<p>Dean Iverson has done an excellent writeup of some of the new CSS capabilties here: <a href="http://pleasingsoftware.blogspot.com/2010/04/advanced-javafx-control-styling.html">Advanced  JavaFX Control Styling</a></p>
<h4>5. 3D Support</h4>
<p>Via the new, experimental Prism graphics stack you can start experimenting with 3D graphics in your JavaFX applications.  Some of the new APIs that you will see throughout the JavaFX documentation for working with 3D graphics include:</p>
<ul>
<li>New Camera classes for changing the viewing perspective of the Scene, including a ParallelCamera that does orthographic projections and a PerspectiveCamera that can be used to see things in full 3D</li>
<li>Transition changes to accept a three dimensional axis on RotationTransition, ScaleTransition, and TranslateTransition</li>
<li>A completely revamped set of transform classes that accept z coordinates</li>
<li>A new Point3D class as well as changes to BoundingBox and Bounds to accept a third dimension</li>
<li>The addition of rotationAxis, scaleZ, and translateZ on all scene graph Nodes</li>
</ul>
<p>To use 3D in your applications you will need to enable the prism graphics stack with the following JVM argument:</p>
<pre class="brush: plain; title: ; notranslate">

-Xtoolkit prism
</pre>
<p>Runtime you can validate whether 3D is enabled or not using the new Platform and ConditionalFeature classes like this:</p>
<pre class="brush: javafx; title: ; notranslate">

Platform.isSupported(ConditionalFeature.3D);
</pre>
<p>The best example of JavaFX 3D in action is Jim Weaver&#8217;s new <a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html">3D Calendar Cube post</a>.</p>
<p><a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html"><img class="alignnone size-thumbnail wp-image-1122" title="CalendarCube3D" src="http://steveonjava.com/wp-content/uploads/2010/04/CalendarCube3D-150x150.png" alt="" width="150" height="150" /></a></p>
<h4>6. TV Emulator</h4>
<p>For the first time, JavaFX 1.3 includes a TV Emulator as part of the distribution.  This gives you the chance to compile and test your applications against the new TV profile, and sometime in the near future deploy it to the big screen!</p>
<p>The easiest way to change your application to run against the TV profile is to select the &#8220;Run in TV Emulator&#8221; option in the NetBeans Properties dialog.  From the command line you can accomplish the same thing by passing in &#8220;-profile TV&#8221; to both the compiler and JavaFX runtime.</p>
<p>Here is a screenshot of the TV Emulator in action:</p>
<p><a rel="attachment wp-att-1116" href="http://steveonjava.com/javafx-1-3-top-10/displayshelftv/"><img class="alignnone size-full wp-image-1116" title="DisplayShelfTV" src="http://steveonjava.com/wp-content/uploads/2010/04/DisplayShelfTV.png" alt="" width="340" height="260" /></a></p>
<p>The biggest change you will notice is the different icon in the upper-left hand corner of the screen.  From a development perspective, it feels very similar to the desktop experience, but you need to keep in mind the following constraints:</p>
<ul>
<li>Screen Distance &#8211; Your end users will be sitting 5 to 6 feet away from the screen, so your entire application has to be designed to be visually distinctive at a distance.</li>
<li>Remote Interaction &#8211; TV viewers do not typically sit on their couches with full QWERTY keyboards, so your UI will need to be designed to be fully operational from a common remote control.  This can make navigation, selection, and text input much more challenging.</li>
</ul>
<p>If you are interested to see a live demonstration of JavaFX TV, join us in person or for the live web stream of our <a href="http://www.svjugfx.org/calendar/13260637/">June SvJugFX meeting</a> with Mikhail Gorshenev from the JavaFX TV development team.</p>
<h4>7. Conditional Features</h4>
<p>I mentioned a little bit about conditional features in the 3D section above.  However, having conditional features is itself an extremely important feature.</p>
<p>In previous release of JavaFX if you wanted to make use of certain features, such as effects, that were only in the desktop profile, you were required to remove these from your code to compile against mobile.  With the addition of conditional features you can now safely include these features in your application and they will be silently ignored if they are not supported on your platform.</p>
<p>This takes the concept of write once, run anywhere to a new level in JavaFX, greatly simplifying development on platforms that only support the common profile!</p>
<p>Here is a short program that will print out whether or not each of the conditional features is enabled for your platform:</p>
<pre class="brush: javafx; title: ; notranslate">
import javafx.runtime.*;

println(&quot;Effect enabled: {Platform.isSupported(ConditionalFeature.EFFECT)}&quot;);
println(&quot;Input Method enabled: {Platform.isSupported(ConditionalFeature.INPUT_METHOD)}&quot;);
println(&quot;Scene 3D enabled: {Platform.isSupported(ConditionalFeature.SCENE3D)}&quot;);
println(&quot;Shape Clip enabled: {Platform.isSupported(ConditionalFeature.SHAPE_CLIP)}&quot;);
</pre>
<h4>8. Custom Cursors</h4>
<p>You are no longer limited to the set of default cursors defined on the Cursor class.  Using the new ImageCursor class you can take any JavaFX Image and turn it into a mouse cursor.</p>
<p>This capability was recently released as a part of the <a href="http://steveonjava.com/jfxtras-0-6-final-released/">JFXtras 0.6 Release</a> thanks to the hard work of Jeff Friesen, but is a very welcome addition to the core API!  Now all that is needed is an implementation of Jeff&#8217;s <a href="http://today.java.net/article/2009/07/27/introducing-custom-paints-javafx">custom paints</a>.</p>
<h4>9. Faster Animation</h4>
<p>JavaFX 1.3 has a new cacheHint option on Nodes that allows you to degrade performance while animations are taking place.  Perceptually it is hard for the user to notice the loss of quality, but it can have a very big difference in performance of your application.  This is a staple of other JavaFX scene graph technologies like <a href="http://piccolo2d.org/">Piccolo2D</a>, so it is good to see progress on this in the JavaFX 1.3 release.</p>
<p>There is a great example of how to use this new capability right in the <a href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene/javafx.scene.Node.html">JavaFX Node API docs</a> (duplicated here for convenience):</p>
<pre class="brush: javafx; title: ; notranslate">
 expensiveNode.cache = true;
 expensiveNode.cacheHint = CacheHint.QUALITY;
 ...
 // Do an animation
 expensiveNode.cacheHint = CacheHint.SPEED;
 Timeline {
     keyFrames: [
         KeyFrame {
             time: 2s
             values: [
                 expensiveNode.scaleX =&gt; 2.0,
                 expensiveNode.scaleY =&gt; 2.0,
                 expensiveNode.rotate =&gt; 360,
                 expensiveNode.cacheHint =&gt; CacheHint.QUALITY
             ]
        }
     ]
 }.play();
</pre>
<h4>10. Preview Features</h4>
<p>In addition to the public API, JavaFX 1.3 contains a number of top secret new features!  These are features that are not final, but are very usable if you are willing to live with future API changes.  All of the preview features are grouped under the com.javafx.preview package, and include the following:</p>
<ul>
<li>Grid &#8211; A Grid layout that makes it much simpler to layout nodes in perfectly aligned rows and columns.  The original layout code was donated by the <a href="http://jfxtras.org/">JFXtras team</a>, and productized by the amazing layout skills of Amy Fowler.</li>
<li>MenuBar/PopupMenu &#8211; This is the completed version of Jonathan Giles very popular <a href="http://jonathangiles.net/blog/?p=566">Menu control</a>.  He is now a core member of the JavaFX Control Team, and plugging away at bringing this and other great controls to the hands of JavaFX developers.</li>
<li>TreeView &#8211; A full implementation of a hierarchical tree in JavaFX complete with TreeItems and TreeCells.</li>
<li>ToolBar &#8211; A palette-like control that lets you create rows of tool buttons with icons and text.  This is the handiwork of Paru Somashekar.</li>
</ul>
<p>In a future post I will go into more detail on usage of these preview features, which greatly extend the power of JavaFX!</p>
<h2>Other Noteworthy Features</h2>
<p>Besides the major features mentioned above, there are also thousands of little changes that have made it in to the 1.3 release.  While I don&#8217;t have time (or room) to cover all of them in detail, here are some other noteworthy features that you can take advantage of in your applications:</p>
<ul>
<li>New Amble font &#8211; JavaFX now includes its own high fidelity fonts that are consistent across all platforms.  Since this is the new default font, you may notice that the spacing and alignment of your existing applications may be slightly off.</li>
<li>Timelines can now be paused.  There is also an evaluateKeyValues that allows you to reevaluate the value portion of your animation (whatever is on the right side of the =&gt;) on demand (normally the value is evaluated once before the first Timeline execution).</li>
<li>You can get exceptions that occur while processing JSON/XML via the new exception variable on Event.</li>
<li>PullParsers can now be run asynchronously using the new ParserTask class.</li>
<li>FXD now supports node selection via an XPath-like syntax and has metadata support on nodes, which is exposed as a map to the application.</li>
<li>There is a new Bounds class for representing widths and heights.</li>
<li>Builtins has a new isReadOnly function, which tells you if a variable is bound.  No more catching AssignToBoundException!</li>
<li>Durations are now Comparable, have new constants for one and zero, and a new static TYPE_INFO variable.</li>
<li>CustomNode now has a publicly exposed children sequence.  This makes it much easier to work with scenegraph navigation.  It also solves a potentially perplexing issue with object initialization order.  You should definitely make use of the new children sequence rather than overriding the old create function.</li>
<li>The infernal scene graph warning is gone!  You can now move a node around the scenegraph without worrying about removing it from the previous parent.  Stuart Marks has a <a href="http://stuartmarks.wordpress.com/2009/12/04/that-infernal-scene-graph-warning-message-ii/">great blog post</a> about this.</li>
<li>Node has a new pickOnBounds variable that lets you change the active hit region to be the logical rather than the physical bounds.</li>
<li>All container nodes (Group, CustomNode, Container, Control) now extend Parent and have a children sequence, greatly simplifying scene graph traversal.</li>
<li>Text supports logical and physical bounds.  Big performance improvement with the new default of logical!</li>
<li>Improved charts…  background lines, shading, and cleaner text.  Here is a before and after picture:</li>
</ul>
<p><a rel="attachment wp-att-1131" href="http://steveonjava.com/javafx-1-3-top-10/chartbeforeandafter/"><img class="alignnone size-full wp-image-1131" title="Chart Before and After" src="http://steveonjava.com/wp-content/uploads/2010/04/chartBeforeAndAfter.png" alt="" width="626" height="327" /></a></p>
<h2>Additional Resources</h2>
<p>The JavaFX team did a great job of documenting the new features and migration to JavaFX 1.3 in the following articles:</p>
<ul>
<li><a href="http://javafx.com/docs/articles/javafx1-3.jsp">What&#8217;s New in  JavaFX 1.3</a></li>
<li><a href="http://javafx.com/docs/articles/porting-guide-javafx1-3.jsp">JavaFX  1.3 Migration Guide</a></li>
</ul>
<p>And not to be outdone, Jim Weaver had the very first external post about the 1.3 release emphasizing the new 3D capabilities:</p>
<ul>
<li><a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html">Your Calendar PWN3D: Leveraging the JavaFX SCENE3D ConditionalFeature</a></li>
</ul>
<p>Since this post first appeared, some excellent resources have come up:</p>
<ul>
<li><a href="http://pleasingsoftware.blogspot.com/2010/04/advanced-javafx-control-styling.html">Advanced JavaFX Control Styling</a> by Dean Iverson</li>
<li></li>
</ul>
<p>As additional resource become available, I will continue to update this section.</p>
<h2>Conclusion</h2>
<p>I hope you enjoyed this whirlwind tour through all the new features of the JavaFX 1.3 release.  There is a lot of goodness here, some of which I might have missed, so please comment on any features of the 1.3 release that you enjoy using!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 4976px; width: 1px; height: 1px; overflow: hidden;">
<h3 class="entry-header">Your Calendar PWN3D: Leveraging the JavaFX  SCENE3D ConditionalFeature</h3>
</div>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-1-3-top-10/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-1-3-top-10/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>JFXtras 0.6 Final Released</title>
		<link>http://javafx.steveonjava.com/jfxtras-0-6-final-released/</link>
		<comments>http://javafx.steveonjava.com/jfxtras-0-6-final-released/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 06:18:37 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1011</guid>
		<description><![CDATA[I am pleased to announce the 0.6 release of the open-source JFXtras project, the largest 3rd party library of JavaFX add-ons.  This release is a very large undertaking that represents the work of several dozen contributors over the past 6 months. JFXtras 0.6 will work with any JavaFX release in the 1.2 family.  We recommend [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fjavafx.steveonjava.com%252Fjfxtras-0-6-final-released%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9yUS14%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JFXtras%200.6%20Final%20Released%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://javafx.steveonjava.com/jfxtras-0-6-final-released/";
		var dzone_title = "JFXtras 0.6 Final Released";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p><a href="http://code.google.com/p/jfxtras/downloads/list"><img class="alignright size-full wp-image-1041" title="Download JFXtras 0.6" src="http://steveonjava.com/wp-content/uploads/2010/04/download-button1.png" alt="" width="175" height="174" /></a>I am pleased to announce the 0.6 release of the open-source JFXtras project, the largest 3rd party library of JavaFX add-ons.  This release is a very large undertaking that represents the work of several dozen contributors over the past 6 months.</p>
<p>JFXtras 0.6 will work with any JavaFX release in the 1.2 family.  We recommend using the very latest release (currently JavaFX 1.2.3), which can be downloaded from <a href="http://javafx.com/">JavaFX.com</a>.</p>
<p>Starting immediately, we will be focusing on developing a JavaFX 1.3 compatible JFXtras release.  Our plan is to release a 1.3 compatible version of JFXtras within 1 week of the official release announcement from Oracle.  To hear about future JFXtras release announcements, make sure to <a href="http://twitter.com/steveonjava">follow my blog</a>.</p>
<h3>JFXtras Functionality</h3>
<p>To make it easier to see some of the JFXtras capabilities in action, I have included Web Start demos from our component test library.  It may take a minute or two to load the first demo, but after that the rest should launch instantaneously.</p>
<h4>Data-Driven Controls</h4>
<p>The JFXtras controls include a Table, Tree, Shelf, Calendar, PasswordBox, Picker, Spinner, MultiLineTextBox, ScoreBoard, and Menu.  Many of these controls can be driven off a dynamic data provider that gives back incremental results from an asynchronous operation, such as a Web Service call.</p>
<p>XTableView (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XTableViewDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XTableViewDemo.jnlp"><img class="alignnone size-full wp-image-1062" title="JFXtras XTableView Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/table.png" alt="" width="649" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XTableViewDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<p><span id="more-1011"></span>XShelfView (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XShelfViewDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XShelfViewDemo.jnlp"><img class="alignnone size-full wp-image-1082" title="JFXtras Shelf Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/shelf1.png" alt="" width="574" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XShelfViewDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<p>XPicker (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XPickerDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XPickerDemo.jnlp"><img class="alignnone size-full wp-image-1083" title="JFXtras XPicker Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/xpicker.png" alt="" width="640" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XPickerDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Advanced Layouts</h4>
<p>The JFXtras layouts include the XGrid, XMigLayout, and Resizable versions of Stack, HBox, and VBox.  All of these layouts support dynamic animation and a powerful defaults system.  The JFXtras XGrid has been contributed back to Oracle and will be included in the JavaFX 1.3 release.</p>
<p>XGrid (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/layout/XGridEricDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridEricDemo.jnlp"><img class="alignnone size-full wp-image-1088" title="JFXtras Grid Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/grid.png" alt="" width="626" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridEricDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h3>Wipe Library</h3>
<p>Wipe transitions including: blind, fade-out, fade-reveal, fade, fade-zoom, flip-180, reveal, shape, slide-over, slide, and swing-in as featured in Simon Morris&#8217; <a href="http://www.manning.com/morris/">JavaFX in Action</a> book.</p>
<p>Wide Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/animation/wipe/WipeDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/WipeDemo.jnlp"><img class="alignnone size-full wp-image-1089" title="JFXtras Wipe Library" src="http://steveonjava.com/wp-content/uploads/2010/04/wipe.png" alt="" width="528" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/WipeDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Shapes</h4>
<p>JFXtras includes a wide selection of skinnable shapes including: Almond, Arrow, Asterisk, Astroid, Balloon, Cross, Donut, ETriangle, Gear, ITriangle, Lauburu, RTriangle, Rays, RegularPolygon, ResizableEllipse, ResizableRectangle, ReuleauxTriangle, RoundPin, Sphere, and Star.</p>
<p>Shapes Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/shape/ShapesDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"></a><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"><img class="size-full wp-image-1056 alignnone" title="JFXtras Shapes Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/shape-demo2.png" alt="" width="367" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"><img class="size-full wp-image-642  alignnone" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Borders</h4>
<p>We also have a large set of skinnable borders including: bevel, ellipse, empty, etched, frame, image, line, metallic, pipe, raised, rounded, shape, soft, and titled.</p>
<p>Borders Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/border/XGridBordersDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"></a><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"><img class="alignnone size-full wp-image-1057" title="JFXtas Borders Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/borders-demo1.png" alt="" width="636" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"><img class="size-full wp-image-642 alignnone" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>And a Whole Lot More</h4>
<p>Here are some of the other features JFXtras has to offer:</p>
<ul>
<li>XStore Data Storage &#8211; Simple persistence of JavaFX primitives and sequences with defaults,  auto-save, and save-on-exit.</li>
<li>Asynchronous JavaFX Support (for experts only) &#8211; Allows invocation  of JavaFX code off the EDT either via a SwingWorker-style callback or a  set of closure-driven primitives.</li>
<li>Swing Integration &#8211; Via the original SceneToJComponent wrapper or  the new, easier to use, JXScene class.</li>
<li>Custom Cursors and Paints &#8211; Allows you to use <a href="http://today.java.net/pub/a/today/2009/07/14/custom-cursors-javafx.html">custom cursors</a> and <a href="http://today.java.net/article/2009/07/27/introducing-custom-paints-javafx"> custom paints</a> within your JavaFX application via a special Toolkit as featured in Jeff Friesen&#8217;s articles.</li>
<li>Interpolatable and HSB Gradients &#8211; Ever wanted to animate a color?   This is the perfect solution, complete with support for an HSB color  palette.</li>
<li>Bindable XMap &#8211; A simplified map syntax for use with JavaFX that  includes bind support on gets.</li>
<li>Image Caching &#8211; An image caching library that supports high  performance, asynchronous loading and sizing of images from URLs.</li>
</ul>
<h3>Documentation</h3>
<p>The full API is documented online here:</p>
<p><a href="http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html">http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html</a></p>
<p>We also have a new documentation wiki on the JFXtras website.  Please  browse it for ideas on how to use the JFXtras components and feel free  to comment or contribute back to the docs to make them better:</p>
<p><a href="http://jfxtras.org/portal/core"><img class="alignnone size-full wp-image-1095" title="JFXtras Documentation Wiki" src="http://steveonjava.com/wp-content/uploads/2010/04/wiki1.png" alt="" width="500" height="136" /></a></p>
<p><a href="http://jfxtras.org/portal/core">http://jfxtras.org/portal/core</a></p>
<h3>Migrating from Previous Releases</h3>
<p>In order to avoid name collisions with the built-in JavaFX classes, we have undergone a fairly aggressive renaming strategy on all scene graph classes.  If you have been using an earlier version of JFXtras, you will have to rename your usages by pre-pending an X before the class name.  Going forward this will reduce the likelihood of collisions with JavaFX built-in classes and make it easier to visually inspect code that uses a mix of JavaFX and JFXtras classes.</p>
<p>Some other migration changes that you need to take into account include:</p>
<ul>
<li>The fill layout constraint has been changed from an enumeration to two booleans (hfill, vfill).</li>
<li>The Grid border feature has been replaced with a general purpose margin on XLayoutInfo</li>
<li>The Deck class has been renamed to XStack</li>
<li>All the layout classes starting with Resizable* have changed to X* (when in doubt try the JavaFX class name prepended with an X)</li>
</ul>
<h3>JFXtras Test</h3>
<p>There is also a matching release of JFXtras Test so you can do behavior-driven development with a declarative JavaFX syntax.  We use this for all the unit tests in JFXtras and encourage you to do the same on your projects.  Some of the new JFXtras Test features include:</p>
<ul>
<li>Asynchronous Testing Support &#8211; Test background processes such as HttpRequests</li>
<li>JUnit Integration &#8211; Integrate JFXtras Test in your Ant or Maven build using a standard JUnit runner</li>
</ul>
<p><a href="http://code.google.com/p/jfxtras/downloads/list">Download</a> it and give it at try!</p>
<h3>Credits</h3>
<p>Some of the folks I would like to thank for making this release possible include:</p>
<ul>
<li>Jim Weaver for inspiring me to start this project and being a great mentor.</li>
<li>Keith Combs for assisting me on various bits and putting up with my perfectionism on everything.</li>
<li>Jim Clarke for being the most productive JavaFX coder at Oracle who is not on the core team.</li>
<li>Dean Iverson for bringing MigLayout to JFXtras and being the clean code guru (see his article on <a href="http://jfxtras.org/portal/core/-/wiki/JFXtras/Style_guidelines">code conventions</a>).</li>
<li>David Armitage for contributing some great controls and making sure our documentation was top notch.</li>
<li>Tom Eugelink for being our voice of sanity on the mailing list and being polite about my past mistakes in misattributing his work.</li>
<li>Pedro Duque Vieira for making the world a safer place for Swing developers with JXScene.</li>
<li>John Freeman for contributing a very high quality JTable wrapper that I always underpromote.</li>
<li>And also: Peter Pilgrim, Christophe DUFOUR, Joshua Marinacci, Simon Morris, Andres Almiray, Jeff Friesen, Andrew Hughes, and Liu Huasong.</li>
</ul>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/jfxtras-0-6-final-released/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/jfxtras-0-6-final-released/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
	</channel>
</rss>

