<?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; JavaFX</title>
	<atom:link href="http://steveonjava.com/tag/javafx/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>JavaOne is Rebuilding Momentum</title>
		<link>http://javafx.steveonjava.com/javaone-is-rebuilding-momentum/</link>
		<comments>http://javafx.steveonjava.com/javaone-is-rebuilding-momentum/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:06:18 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OSCON Java]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[javaone]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=2099</guid>
		<description><![CDATA[Just finished up an extremely busy week at JavaOne and there was a lot to like about this year&#8217;s event.  There were plenty of surprise announcements, lots of good content/sessions, and a lot of improvements on the venue and organization. For folks who have been patiently waiting for me to publish all my talks, I [...]]]></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%252Fjavaone-is-rebuilding-momentum%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fpzy4Rl%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaOne%20is%20Rebuilding%20Momentum%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/javaone-is-rebuilding-momentum/";
		var dzone_title = "JavaOne is Rebuilding Momentum";
		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>Just finished up an extremely busy week at JavaOne and there was a lot to like about this year&#8217;s event.  There were plenty of surprise announcements, lots of good content/sessions, and a lot of improvements on the venue and organization.</p>
<p>For folks who have been patiently waiting for me to publish all my talks, I apologize for the delay&#8230;  giving 4 talks + a keynote (plus 3 more talks at Silicon Valley Code Camp yesterday) was a lot more work than I expected.  To make sure I can cover the topics and code in enough detail I am going to publish 1 talk plus commentary a day for the next week.  Please follow me on <a href="http://twitter.com/steveonjava">twitter</a> or <a href="http://steveonjava.com/feed/">rss</a> to catch the updates as they roll out.</p>
<p>To get you started, here are some of the highlights from JavaOne:</p>
<h3>JavaFX is back in the spotlight!</h3>
<p>After a year of hibernation, JavaFX is back with a 2.0 release, big open source announcement (more on this below), and mobile prototypes on Android and iOS.  For those naysayers who said JavaFX is dead, Oracle has proved that they are going to continue to move the platform forward and support state-of-the art development on Java client technology.  As always, Jasper and the rest of the JavaFX team had some pretty impressive demos and the entire Java community was re-energized about the future of client Java.</p>
<p>If you haven&#8217;t already, go <a href="http://javafx.com/">download JavaFX 2.0</a> right now!  It is available in production for Windows and there is a developer preview of Mac OS X, so you have no excuse for not trying it out today.  (unless you are on Linux&#8230;  but that is supposed to be coming soon too)</p>
<h3>The Open Source Petition Was Successful!</h3>
<p>Thanks to all my blog readers who spent the time and energy to sign and support the <a href="http://javafx.steveonjava.com/javafx-petition/">petition to open source JavaFX</a>.  In part due to the huge community sentiment about the need to open source JavaFX, Oracle has taken action and promised to open source the entire platform.  They are going to start with the controls library as announced last year, and continue to open source the entire platform as part of the OpenJDK project.</p>
<p>This is a huge benefit to JavaFX, which will finally be getting equal treatment with the rest of the Java platform.  They are also actively working on getting JavaFX to be fully redistributable, which will remove yet another obstacle to making JavaFX the standard for desktop development.</p>
<h3>Community, Community, Community.</h3>
<p>Oracle has been listening to the Java community, and put in place many of the changes and suggestions that were raised.  This was evident in the entire JavaOne conference, which was a huge improvement over last year&#8217;s event.  Some of the improvements that I noticed while hanging out at JavaOne this year included:</p>
<ul>
<li>A Community-focused Keynote &#8211; While I may have been biased as a participant, I thought the best keynote of the conference was the wrap-up community keynote that <a href="http://twitter.com/#!/Sharat_Chander">Sharat Chander</a> lead.  This included some amazing demos by the Duke&#8217;s Choice Winners of audible development for the blind and home automation using Glassfish, a spicy panel that had a lot of positive things to say about the Java Community and <a href="http://www.oscon.com/oscon2011">OSCON Java</a>, and a surprise appearance by the <a href="http://javaposse.com/">Java Posse</a> who were at 3/4 of their finest!  (the 1/4 being poor Tor, the Googler)</li>
<li>Community Hang Spaces &#8211; While navigating the conference it was much easier to bump into folks you know by hanging around one of the many hang spaces that were built out around the venue.  In fact, <a href="http://twitter.com/#!/deanriverson">Dean Iverson</a> and I found ourselves preparing for one of our talks in the hang area, because it was more conducive to collaboration and interaction than the speaker room.</li>
<li>Easier Venue Navigation &#8211; A couple things contributed to this&#8230;  One was that all 3 hotels were reserved for JavaOne talks, so you had more talks concentrated in the same vicinity.  Another was the plethora of helpful staff directing traffic and answering questions (I made quite a lot of use out of this myself).  Finally, the signage and open tent configuration made it much easier to get form Point A to Point B.</li>
</ul>
<h3>And a Few Things to Improve for Next Year&#8230;</h3>
<p>Everyone has their personal gripes&#8230;  here are some of mine:</p>
<ul>
<li>Fewer Sponsored Keynotes &#8211; When you pay big $$$ to attend a conference, the last thing you want to do is sit in a session and watch a canned talk by a corporate stooge.  The Juniper Networks talk was a particularly blatant example of something that was not really focused on the Java crowd tossed in as a sales kick-back.  In the future, it would be better to make the sponsors earn the attention of the attendees by labeling the talks as sponsored and giving attendees some alternatives.</li>
<li>Better Network Connectivity &#8211; It was almost impossible to get on the wifi network in any crowded situation (like a session), and once connected the response times were abysmal. That is until everyone left around Thursday midday and the network started going blazingly fast for those who stuck it out for the last few talks.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Improved Tech Support on Talks &#8211; I listened to the presenter advice and formatted all my slides in 16:9, which didn&#8217;t seem to work for the first couple talks that had big black letter-boxes above and below the slides.  Also, my first talk had no network connectivity on the wired connection (and as I mentioned, wireless was useless).  However, I had to the good fortune of giving way too many talks, so by the time I got to my 3rd and 4th ones they seemed to have figured out how to use the very expensive screen adjustment boxes and got everything tuned just right.  Also, the wired network seemed to work fine in all the other rooms I hi.</li>
<li>Patching Things Up With Google &#8211; This is the second year that Google has refused to let anyone speak at JavaOne. They blame the lawsuit for this, but at some point the policy is more retaliation than just good legal defense. (Is letting Tor speak on stage in a community setting is really going to jeopardize the Android platform?) The real losers in this battle are the average developer who is missing out on great technology and content from one of the most innovative companies in the world.</li>
</ul>
<p>Overall, JavaOne was a great conference this year, and is definitely back on the upswing.  There was mention of improving the venue in the community keynote, and I hope the upper management at Oracle takes this seriously.  The 3-hotel setup is not ideal, and really not large enough to contain the Java community.  It is time to unleash the Java Community in a full conference venue of its own.</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javaone-is-rebuilding-momentum/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javaone-is-rebuilding-momentum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0 and Scala, Like Milk and Cookies</title>
		<link>http://javafx.steveonjava.com/javafx-2-0-and-scala-like-milk-and-cookies/</link>
		<comments>http://javafx.steveonjava.com/javafx-2-0-and-scala-like-milk-and-cookies/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 13:18:25 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[ScalaFX]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[javafx 2.0]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=2036</guid>
		<description><![CDATA[JavaFX 2.0 and Scala are both great technologies individually, but work even better when used together.  JavaFX 2.0 is a powerful rich client technology with advanced graphics, animation, and media capabilities.  Scala is a simple, yet powerful language with advanced language features for writing domain-specific languages (DSLs).  Add a little Scala UI DSL to your [...]]]></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-and-scala-like-milk-and-cookies%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%202.0%20and%20Scala%2C%20Like%20Milk%20and%20Cookies%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-and-scala-like-milk-and-cookies/";
		var dzone_title = "JavaFX 2.0 and Scala, Like Milk and Cookies";
		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 2.0 and Scala are both great technologies individually, but work even better when used together.  JavaFX 2.0 is a powerful rich client technology with advanced graphics, animation, and media capabilities.  Scala is a simple, yet powerful language with advanced language features for writing domain-specific languages (DSLs).  Add a little Scala UI DSL to your JavaFX 2.0 project and you will be in cookie and cream heaven!</p>
<p><img class="alignnone" title="Cookie Drop 1" src="http://farm5.static.flickr.com/4005/4507206940_e2251dd44a_m.jpg" alt="" width="216" height="186" /> <img class="alignnone" title="Cookie Drop 2" src="http://farm3.static.flickr.com/2248/4506569781_ac93d2fb1f_m.jpg" alt="" width="216" height="186" /> <img class="alignnone" title="Cookie Drop 3" src="http://farm3.static.flickr.com/2121/4507213530_be29d5f9c5_m.jpg" alt="" width="194" height="186" /></p>
<p>Time Lapse Photography <a href="http://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons Licensed</a> by <a href="http://www.flickr.com/photos/photo_art/">Robbie&#8217;s Photo Art</a></p>
<h2>JavaFX Colored Circles</h2>
<p>I will go into more detail on why Scala in a bit, but I believe this is all best illustrated with a code example.  One of the basic examples of JavaFX 2.0 functionality that comes with the SDK is a sample application called ColorfulCircles.  The full source code can be found here:</p>
<h2><span class="download"><a href="http://download.oracle.com/javafx/2.0/get_started/ColorfulCircles.java.html">Java Colored Circles Code</a></span></h2>
<p>With the help of <a href="http://nbguru.blogspot.com/">Sven Reimers</a>, we ported this to Scala on top of the <a href="https://code.google.com/p/scalafx"> ScalaFX library</a>.  The working application source can be found here:</p>
<h2><span class="download"><a href="https://code.google.com/p/scalafx/source/browse/demo/scalafx/SimpleColorfulCircles.scala">ScalaFX Colored Circles Code</a></span></h2>
<p><strong>Update</strong>: Dean Iverson has a great example of the same code in <a href="http://pleasingsoftware.blogspot.com/2011/09/groovyfx-vs-scalafx.html">GroovyFX</a></p>
<p>Feel free to peruse the source code at your leisure, and take note of the following:</p>
<h4>1. ScalaFX is More Concise</h4>
<p>The ScalaFX version is shorter both in number of lines and more importantly number of characters.</p>
<p>Code Count (excluding licenses and imports):</p>
<ul>
<li>Lines:
<ul>
<li>Java: 48</li>
<li>ScalaFX: 42</li>
</ul>
</li>
<li>Characters:
<ul>
<li>Java: 1602</li>
<li>ScalaFX: 866</li>
</ul>
</li>
</ul>
<p>This is due to custom tailored DSL language that is fully expressive with less redundancy.  In the Java version of the code you will notice a lot more boilerplate and syntactic repetition that is required by the language.</p>
<h4>2. ScalaFX Code Looks Like the Output</h4>
<p>While the output of the Colored Circles example is quite simple, it actually hides quite a bit of complexity in the way it is structured.  Here is the output run from JavaFX 2.0 Build 45 using ScalaFX:</p>
<p><a href="http://steveonjava.com/wp-content/uploads/2011/09/colorfulcircles.png"><img class="aligncenter size-full wp-image-2076" title="colorfulcircles" src="http://steveonjava.com/wp-content/uploads/2011/09/colorfulcircles.png" alt="" width="400" height="301" /></a></p>
<p>What you are actually seeing is a SceneGraph composed of the following layers:</p>
<ul>
<li>A Scene with a black background that contains&#8230;
<ul>
<li>A Group that contains
<ul>
<li>30 semi-transparent Circles covered by&#8230;</li>
</ul>
</li>
<li>A rainbow-colored Rectangle overlay</li>
</ul>
</li>
</ul>
<p>When reading the ScalaFX code you get this nesting through the object-literal style declaration of the Nodes in the Scene as excerpted here:</p>
<pre class="brush: scala; title: ; notranslate">
// ScalaFX Scene Excerpt:
scene = new Scene {
  content = Seq(
    new Group {
      circles = for (i &lt;- 0 until 30) yield new Circle { ... }
    }
    new Rectangle { ... }
  )
}
</pre>
<p>However, the Java version does not give you the same hierarchical representation, and instead uses an imperative series of calls to constructors, getters, and collection methods.</p>
<h4>3. Tailored Animation Syntax</h4>
<p>Animations are very commonly used in creating good UIs, which is why JavaFX Script had a built-in construct to simplify the creation of animations. ScalaFX has a similar syntax that allows you to quickly and easily create animations, which is used in the ColorfulCircles example:</p>
<pre class="brush: scala; title: ; notranslate">
Seq(
  at(0 s) {circle.centerX -&gt; random * 800},
  at(0 s) {circle.centerY -&gt; random * 600},
  at(40 s) {circle.centerX -&gt; random * 800},
  at(40 s) {circle.centerY -&gt; random * 600}
)
</pre>
<p>This makes it trivially easy to create complex animations.</p>
<h4>4. And the ScalaFX Version Has a Hidden Bonus Feature&#8230;</h4>
<p>Unlike the JavaFX version, the contents are bound to the width and height of the stage. Binding in ScalaFX is as simple as replacing the assignment operator (=) with the bind operator (&lt;==) as shown here:</p>
<pre class="brush: scala; title: ; notranslate">
// ScalaFX Property Setting:
width &lt;== scene.width
height &lt;== scene.height
</pre>
<p>While this is a simple operator change in ScalaFX, it requires complex enough code that they decided to omit it from the JavaFX sample. A loose translation to Java would be the following:</p>
<pre class="brush: java; title: ; notranslate">
// Java Fixed Property Binding
colors.widthProperty().bind(scene.widthProperty())
colors.heightProperty().bind(scene.heightProperty())
</pre>
<p>Although, the precise equivalent code in Java syntax would actually be the following:</p>
<pre class="brush: java; title: ; notranslate">
// Java Dynamic Property Binding
colors.widthProperty().bind(Bindings.selectDouble(primaryStage.sceneProperty(), &quot;width&quot;))
colors.heightProperty().bind(Bindings.selectDouble(primaryStage.sceneProperty(), &quot;height&quot;))
</pre>
<p>Either of these versions is quite a bit more complex and unwieldy than the ScalaFX equivalent, and this is for a very simple binding!</p>
<h2>About ScalaFX</h2>
<p><a href="https://code.google.com/p/scalafx/">ScalaFX</a> is a UI DSL written within the Scala Language that sits on top of JavaFX 2.0 (not to be confused with <a href="http://people.epfl.ch/ingo.maier">Ingo Maier&#8217;s</a> great work on <a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB0QFjAA&amp;url=http%3A%2F%2Flamp.epfl.ch%2F%7Eimaier%2Fpub%2FDeprecatingObserversTR2010.pdf&amp;rct=j&amp;q=ingo%20maier%20functional%20reactive%20programming%20pdf&amp;ei=FpmBTs3aD4fZiALL29yYDQ&amp;usg=AFQjCNEdY1-mrWx4Sev3tCqrhRzDbaoDTg&amp;sig2=J_T9I5FQhs8OeJKMVrJK2g&amp;cad=rja">Functional Reactive Programming</a> for Swing). This means that every ScalaFX application is also a valid Scala application. By extension it supports full interoperability with Java and can run anywhere the Java Virtual Machine (JVM) and JavaFX 2.0 are supported.</p>
<p>Some of the features of ScalaFX include:</p>
<h4>A Programmer-Friendly Object-Literal-Like Syntax</h4>
<p>ScalaFX uses a simple, hierarchical pattern for creating new objects and building up the scene graph.  Here is a simple example that creates a new stage with a rectangle that changes color based on mouse events:</p>
<pre class="brush: scala; title: ; notranslate">
stage = new Stage {
  title.value = &quot;Hello Stage&quot;
  width = 600
  height = 450
  scene = new Scene {
    fill = Color.LIGHTGREEN
    content = new Rectangle {
      x = 25
      y = 40
      width = 100
      height = 100
      fill &lt;== when (hover) then Color.GREEN otherwise Color.RED
    }
  }
  visible = true
}
</pre>
<p>Unlike the builders you find in the core JavaFX APIs, the ScalaFX object declaration syntax uses the normal object API. This means that you can use the same operators and convenient syntax to create and modify your scene graph. Also, anything that is permissible in a Scala block (such as variable declarations, method calls, binding, etc.) can also be done inline while constructing objects. For JavaFX builders you need to declare binding after you finish creating your objects, which leads to disassociated and hard to maintain code.</p>
<h4>Natural Language Bind Expressions</h4>
<p>One of the greatest advantages of using the Scala language as a DSL is the rich support for operators as methods. This is similar to the C++ concept of operator overloading, but much more uniform and clean in its application.</p>
<p>The ScalaFX bind library exposes normal operators such as &amp;&amp;, ||, +, -, *, / on top of all bindable objects. Also, Scala supports operator precedence, so it looks and feels like you are writing normal expressions even though you are creating bound objects under the covers. As a result, you have the full functionality available from the JavaFX 2.0 binding libraries with code that looks akin to mathematical expressions and operators.</p>
<p>Here are some examples of what you can do with the ScalaFX bind API:</p>
<p>Infix Addition/Subtraction/Multiplication/Division/etc.</p>
<pre class="brush: scala; title: ; notranslate">
height &lt;== rect1.height + rect2.height
</pre>
<p>Aggregate Operators</p>
<pre class="brush: scala; title: ; notranslate">
width &lt;== max(rect1.width, rect2.width, rect3.width)
</pre>
<p>Conditional Expressions</p>
<pre class="brush: scala; title: ; notranslate">
color &lt;== when (hover) then Color.GREEN otherwise Color.RED
</pre>
<p>Complex Boolean Expressions and String Concatenation</p>
<pre class="brush: scala; title: ; notranslate">
text &lt;== when (rect.hover || circle.hover &amp;&amp; !disabled) then textField.text + &quot; is enabled&quot; otherwise &quot;disabled&quot;
</pre>
<p>Free-form Invalidation and Change Handlers</p>
<pre class="brush: scala; title: ; notranslate">
rect.hover onInvalidate {
  needsRepaint = true
}
</pre>
<h4>Fully Type-Safe APIs</h4>
<p>This may seem like an insignificant point&#8230;  Type safety is something that Java developers have always had (and often take for granted), and developers in other scripting languages live without (and unknowingly suffer with runtime errors as a result). However, it is a critical feature if you are developing applications that cannot have unexpected runtime errors and bugs after deployment.</p>
<p>A good compiler will be able to pick up many common coding mistakes through comparison of expected and actual types, and a great compiler (like Scala) will automatically infer types for you so you don&#8217;t have to tediouisly repeat them throughout your code.</p>
<p>ScalaFX gets the best of both worlds with a scripting-like DSL syntax where you can rarely have to explicitly type objects, with the strong type-safety of the Scala compiler that will infer and check the types of every expression and API call. This means less time spent debugging weird code bugs and misspellings, and higher quality code right out of the gate!</p>
<h4>Seamless JavaFX/ScalaFX Interoperability</h4>
<p>It is often the case that you do not have complete freedom about the predominant language of the codebase, or of the libraries you are including functionality from.  Even in a mixed environment codebase where you have Java, Scala, and possibly other JVM languages, ScalaFX will seamlessly convert and interoperate.</p>
<p>ScalaFX gets this functionality through the implicit operator capabilities of Scala.  Anywhere your program expects a JavaFX typed object, it will automatically insert the code to convert from ScalaFX wrapped objects to JavaFX native classes.  Any time you use a ScalaFX specific feature, the compiler automatically creates a ScalaFX wrapper object that allows you to call advanced methods and access the full functionality. This all happens behind the scenes, letting you focus on writing clean code, and not fussing about integration and interoperability.</p>
<p>With all this interoperability magic happening behind the scenes, there is some additional overhead on your application. We have taken pains to minimize this using features like @specialize in the Scala language, which allows us to avoid boxing and unboxing costs on primitives. However, without real benchmarks it is hard to tell just how good of a job we have done. Hopefully more on this in a future post.</p>
<h2>Finding out More About ScalaFX</h2>
<p>The <a href="https://code.google.com/p/scalafx">ScalaFX project site</a> is hosted by Google Code including a couple mailing lists that you should join if you are interested:</p>
<ul>
<li><a href="http://groups.google.com/group/scalafx-users" rel="nofollow">ScalaFX Users</a></li>
<li><a href="http://groups.google.com/group/scalafx-dev" rel="nofollow">ScalaFX Developers</a></li>
</ul>
<p>At the time of writing we do not have a bundled release, but are interested in early adopter feedback.  If you would like to give it a try, please download the source and give it a quick spin!</p>
<p>I will have more details about ScalaFX at my upcoming JavaOne session with Dean Iverson entitled &#8220;<a href="https://www.google.com/calendar/render?eid=MDl1dXRibmltcG9lamgyZDcyMG44c2xyMTggNWQ0Y2VqajJkODBxNzdiZXRibDltcGVkbThAZw&amp;ctz=America/Los_Angeles&amp;pli=1&amp;sf=true&amp;output=xml">JavaFX 2.0 With Alternative Languages</a>&#8220;.  Come to hear more about Scala, Groovy, and other JVM languages you can use to write simpler, cleaner code.</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-2-0-and-scala-like-milk-and-cookies/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-2-0-and-scala-like-milk-and-cookies/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Steveonjava Track at JavaOne</title>
		<link>http://javafx.steveonjava.com/steveonjava-track-at-javaone/</link>
		<comments>http://javafx.steveonjava.com/steveonjava-track-at-javaone/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 10:10:56 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Visage]]></category>
		<category><![CDATA[javaone]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=2011</guid>
		<description><![CDATA[The JavaOne Session Builder is now up and available for setting up your sessions. If you are not used to the JavaOne ritual, it is always a good idea to sign-up for sessions well in advance so you don&#8217;t get bumped out of the more popular ones. This also helps them fix the room allocation [...]]]></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%252Fsteveonjava-track-at-javaone%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Steveonjava%20Track%20at%20JavaOne%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/steveonjava-track-at-javaone/";
		var dzone_title = "Steveonjava Track at JavaOne";
		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>The <a href="https://oracleus.wingateweb.com/scheduler/home.jsp">JavaOne Session Builder</a> is now up and available for setting up your sessions.  If you are not used to the JavaOne ritual, it is always a good idea to sign-up for sessions well in advance so you don&#8217;t get bumped out of the more popular ones.  This also helps them fix the room allocation so popular talks get the right size room.</p>
<p>I put together my own schedule of all the JavaFX-related content I plan to attend, and published it on Google Calendar.  It is also a pretty good guide to some of the top JavaFX content that is being featured at JavaOne this year. &#8212; Apologies to my fellow speakers with conflicting session slots.  I wish I could be in multiple places at once, but even rich client technology is not that advanced &#8212; yet.</p>
<p class="note">Note: Click for details &#8212; sessions I am actually giving are highlighted in green.</p>
<p><iframe src="https://www.google.com/calendar/embed?title=JavaOne%20Schedule&amp;showTitle=0&amp;showNav=0&amp;showDate=0&amp;showPrint=0&amp;showTabs=0&amp;showCalendars=0&amp;showTz=0&amp;mode=AGENDA&amp;height=870&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=slsl4fn4gnm6tq1kqrec4ptu64%40group.calendar.google.com&amp;color=%23856508&amp;src=5d4cejj2d80q77betbl9mpedm8%40group.calendar.google.com&amp;color=%23125A12&amp;ctz=America%2FLos_Angeles&#038;dates=20111002%2F20111006" style=" border-width:0 " width="650" height="870" frameborder="0" scrolling="no"></iframe></p>
<p>Also, for those of you brave enough to attempt to use the schedule builder, it is no simple feat.  The UI is fairly convoluted, so getting your schedule tweaked to be just right takes a lot of time and experimentation.  Fortunately, I did a lot of this work for you and have figured out the happy path through the system.</p>
<p>JavaOne Schedule Builder Happy Path:</p>
<ol>
<li>Login to the system and go to the <a href="https://oracleus.wingateweb.com/scheduler/eventcatalog/eventCatalogJavaOne.do?ts=1314863228804">JavaOne Content Catalog</a></li>
<li>Setup your filters to get the sessions you want (if you are reading this, you probably want to search on &#8220;javafx&#8221;)</li>
<li>Click on the stars to pick the sessions you are interested in &#8212; this adds them to the &#8220;My interests&#8221; list</li>
<li>Finally, click on &#8220;Schedule My Interests&#8221; and follow the little wizard UI</li>
</ol>
<p>Just about any other path through the system (scheduling by time, resolving conflicts as you add sessions, etc.) is fraught with peril, so be warned.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Enjoy, and I hope to see you at JavaOne!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/steveonjava-track-at-javaone/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/steveonjava-track-at-javaone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0 at the Chennai JUG</title>
		<link>http://javafx.steveonjava.com/javafx-2-0-at-the-chennai-jug/</link>
		<comments>http://javafx.steveonjava.com/javafx-2-0-at-the-chennai-jug/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:10:41 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[chennai]]></category>
		<category><![CDATA[india]]></category>
		<category><![CDATA[jug]]></category>
		<category><![CDATA[Visage]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1801</guid>
		<description><![CDATA[I was fortunate enough to be invited to speak at the Chennai Java User Group during my trip to India.  I was expecting a small group of very devoted Java fans; however, I was surprised to walk into a room of over 200 developers eager to learn about JavaFX 2.0.  The venue was very impressive [...]]]></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-at-the-chennai-jug%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FgAJH7w%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%202.0%20at%20the%20Chennai%20JUG%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-at-the-chennai-jug/";
		var dzone_title = "JavaFX 2.0 at the Chennai JUG";
		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 was fortunate enough to be invited to speak at the <a href="http://www.jugchennai.in/2011/02/20/javafx-with-stephen-chin-java-user-group-chennai-at-first-planet-19-February/">Chennai Java User Group</a> during my trip to India.  I was expecting a small group of very devoted Java fans; however, I was surprised to walk into a room of over 200 developers eager to learn about JavaFX 2.0.  The venue was very impressive with rows of workstations that we later used for a lab, as well as plenty of seating.</p>
<div id="attachment_1802" class="wp-caption alignnone" style="width: 660px"><a href="http://steveonjava.com/wp-content/uploads/2011/02/DSC_0035.jpg"><img class="size-large wp-image-1802" title="Chennai JUG" src="http://steveonjava.com/wp-content/uploads/2011/02/DSC_0035-650x435.jpg" alt="" width="650" height="435" /></a><p class="wp-caption-text">Chennai User Group Venue at Tenth Planet</p></div>
<p>Also, <a href="http://twitter.com/rajmahendra">Raj</a> was a great host, and both he and the folks at <a href="http://tenthplanet.in/">Tenth Planet</a> went completely over the top with this event.  This included:</p>
<ul>
<li>A life-size poster with the event details</li>
<li>An ornamental flower arrangement with the event details</li>
<li>Two gifts presented at the conclusion of the talk</li>
</ul>
<div id="attachment_1803" class="wp-caption alignnone" style="width: 660px"><a href="http://steveonjava.com/wp-content/uploads/2011/02/DSC_0037.jpg"><img class="size-large wp-image-1803" title="Chennai JUG Poster" src="http://steveonjava.com/wp-content/uploads/2011/02/DSC_0037-650x435.jpg" alt="" width="650" height="435" /></a><p class="wp-caption-text">Life-Size Event Poster</p></div>
<p>The session ran from 10AM through 4:30PM with a break for lunch in the middle.  When half the hands went up for returning after lunch, I didn&#8217;t believe most of them would be back, but we easily had 60% of the folks back in their seats by the time we were ready to start.</p>
<p>If you are interested to see the slides from the talk, you can find them on Slideshare <a href="http://www.slideshare.net/steveonjava/javafx-20-and-alternative-languages">here</a>:</p>
<div id="__ss_7002242" style="width: 650px;"><object id="__sse7002242" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="650" height="530" 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-chennai-110221135800-phpapp02&amp;stripped_title=javafx-20-and-alternative-languages&amp;userName=steveonjava" /><param name="name" value="__sse7002242" /><param name="allowfullscreen" value="true" /><embed id="__sse7002242" type="application/x-shockwave-flash" width="650" height="530" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javafxyourway-chennai-110221135800-phpapp02&amp;stripped_title=javafx-20-and-alternative-languages&amp;userName=steveonjava" name="__sse7002242" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Thanks again to the folks in the Chennai JUG for being great hosts!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-2-0-at-the-chennai-jug/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-2-0-at-the-chennai-jug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 2.0 With Alternative Languages at the SvJugFx</title>
		<link>http://javafx.steveonjava.com/javafx-2-0-with-alternative-languages-at-the-svjugfx/</link>
		<comments>http://javafx.steveonjava.com/javafx-2-0-with-alternative-languages-at-the-svjugfx/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 11:19:36 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Visage]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1503</guid>
		<description><![CDATA[It is kind of ironic, but after a year running I have never spoken at my own user group.  In November I am going to break the trend and present an updated version of the JavaFX Alternative Language talk that I gave at JavaOne. You can sign-up for the event here: http://www.svjugfx.org/calendar/14264038/ Note: Even if [...]]]></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-with-alternative-languages-at-the-svjugfx%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FcuoFZE%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%202.0%20With%20Alternative%20Languages%20at%20the%20SvJugFx%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-with-alternative-languages-at-the-svjugfx/";
		var dzone_title = "JavaFX 2.0 With Alternative Languages at the SvJugFx";
		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 kind of ironic, but after a year running I have never spoken at my own user group.  In November I am going to break the trend and present an updated version of the JavaFX Alternative Language talk that I gave at JavaOne.  You can sign-up for the event here:</p>
<p><a href="http://www.svjugfx.org/calendar/14264038/">http://www.svjugfx.org/calendar/14264038/</a></p>
<p class="note">Note: Even if you plan on attending online, please make sure to sign-up above so you get reminders for the broadcast.</p>
<p>Since Jonathan Giles and I originally gave the talk, the JavaFX 2.0 APIs  have gotten closer to completion, interest in the JVM Language  Communities has grown, and I have launched the <a href="http://visage-lang.org/">Visage</a> project to carry forward JavaFX Script.</p>
<div class="wp-caption alignright" style="width: 264px"><a rel="attachment wp-att-1507" href="http://steveonjava.com/javafx-2-0-with-alternative-languages-at-the-svjugfx/2scapigl/"><img style="margin-left: 10px; position: relative; z-index: 1000;" title="La Scapigliata" src="../wp-content/uploads/2010/10/2scapigl-254x300.jpg" alt="" width="254" height="300" /></a><p class="wp-caption-text">&nbsp;&nbsp;&nbsp;LEONARDO da Vinci&#39;s &quot;La Scapigliata&quot;</p></div>
<pre class="brush: javafx; title: ; notranslate">
Digression {
  var link = Hyperlink {
    name: &quot;Jim Weaver's blog&quot;
    url: &quot;http://learnjavafx.typepad.com/&quot;
  }
  description: &quot;Speaking of Visage, I am looking for&quot;
  &quot;a logo for the project.  I would have gone with&quot;
  &quot;Matisse's \&quot;Visage - Mask\&quot; from {link} but it was&quot;
  &quot;created in 1951 and has an active copyright.  The&quot;
  &quot;current front runner is LEONARDO da Vinci's \&quot;La&quot;
  &quot;Scapigliata\&quot;, which is simple and has nice emphasis&quot;
  &quot;of the figure's 'Visage'.&quot;
}
</pre>
<p>Invite your language-guru geek friends too.  I want as much feedback as possible on the suggested APIs so they can be used to improve the underlying JavaFX 2.0 APIs prior to release.  As usual, we will be taking questions online via <a href="http://www.google.com/moderator/#15/e=34f8&amp;t=34f8.48">Google Moderator</a>.</p>
<p>As always, I will have the  very latest and greatest content to share (at great demo peril to  myself).</p>
<p>I hope to see you there!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javafx-2-0-with-alternative-languages-at-the-svjugfx/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javafx-2-0-with-alternative-languages-at-the-svjugfx/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apropos Launches into the Stratus</title>
		<link>http://agile.steveonjava.com/apropos-launches-into-the-stratus/</link>
		<comments>http://agile.steveonjava.com/apropos-launches-into-the-stratus/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 08:40:26 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[apropos]]></category>
		<category><![CDATA[portfolio planning]]></category>
		<category><![CDATA[rally]]></category>
		<category><![CDATA[stratus]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1473</guid>
		<description><![CDATA[Followers of my blog have probably heard about the Apropos project that I built in JavaFX and released as open-source.  It is an Agile Project Portfolio Planning tool that I developed for work to help manage our large Agile rollout. Apropos is a perfect application of rich client technology, because it sits on top of [...]]]></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%252Fapropos-launches-into-the-stratus%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdaGRqK%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Apropos%20Launches%20into%20the%20Stratus%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/apropos-launches-into-the-stratus/";
		var dzone_title = "Apropos Launches into the Stratus";
		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>Followers of my blog have probably heard about the <a href="http://code.google.com/p/apropos/">Apropos</a> project that I built in JavaFX and released as open-source.  It is an Agile Project Portfolio Planning tool that I developed for work to help manage our large Agile rollout. Apropos is a perfect application of rich client technology, because it sits on top of the web services exposed by Rally, and provides a higher level of visibility and planning.</p>
<p>The folks at <a href="http://rallydev.com/">Rally Software</a> took notice and have been contributing back to the project to get it customer ready.  They have branded the commercial version of the tool Stratus and are now in the process of a customer beta.</p>
<p><a rel="attachment wp-att-1474" href="http://steveonjava.com/apropos-launches-into-the-stratus/viking2_launch/"><img class="alignnone size-large wp-image-1474" title="Viking2_launch" src="http://steveonjava.com/wp-content/uploads/2010/10/Viking2_launch-650x256.png" alt="" width="650" height="256" /></a></p>
<p>Some of the features that the Rally folks have added to Stratus include:</p>
<ul>
<li>Customization of fields and settings</li>
<li>Performance improvements in the web service communication</li>
<li>Styling and usability improvements throughout</li>
<li>A fully hosted environment for customers to use Stratus without any setup</li>
</ul>
<p>I had the opportunity to present with Ryan Martens, Rally CTO, at the JavaOne Keynote to demonstrate the very latest version:</p>
<p><a rel="attachment wp-att-1475" href="http://steveonjava.com/apropos-launches-into-the-stratus/javaone-keynote/"><img class="alignnone size-full wp-image-1475" title="javaone-keynote" src="http://steveonjava.com/wp-content/uploads/2010/10/javaone-keynote.jpg" alt="" width="600" height="400" /></a></p>
<p>It was a cool experience to be on the big stage.  I have heard that a lot of presenters get scripted to death in preparation for Keynotes (or at least it always looks that way), but I had a lot of freedom to ad-lib and blend in my demo with Ryan&#8217;s talk.</p>
<p>If you or your company are interested in piloting Stratus, send email to <a href="mailto:stratus@rallydev.com" target="_blank">stratus@rallydev.com</a> and Rally can engage with your program managers.</p>
<div class="plus-one-wrap"><g:plusone href="http://agile.steveonjava.com/apropos-launches-into-the-stratus/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://agile.steveonjava.com/apropos-launches-into-the-stratus/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>JavaOne Enterprise JavaFX and JFXtras Presentations</title>
		<link>http://javafx.steveonjava.com/javaone-enterprise-javafx-and-jfxtras-presentations/</link>
		<comments>http://javafx.steveonjava.com/javaone-enterprise-javafx-and-jfxtras-presentations/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 11:09:12 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Pro JavaFX]]></category>
		<category><![CDATA[Visage]]></category>
		<category><![CDATA[javafx 2.0]]></category>
		<category><![CDATA[javaone]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1446</guid>
		<description><![CDATA[Speaking at JavaOne was challenging, but fun this year. With the surprise announcements about JavaFX 2.0 there wasn&#8217;t a lot of time to respond, but I managed to refocus all my talks in a very short amount of time. Pro JavaFX Platform &#8211; Building Enterprise Applications with JavaFX My second talk on Tuesday with Jim [...]]]></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%252Fjavaone-enterprise-javafx-and-jfxtras-presentations%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F98kQTn%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaOne%20Enterprise%20JavaFX%20and%20JFXtras%20Presentations%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/javaone-enterprise-javafx-and-jfxtras-presentations/";
		var dzone_title = "JavaOne Enterprise JavaFX and JFXtras Presentations";
		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>Speaking at JavaOne was challenging, but fun this year.  With the surprise announcements about <a href="http://steveonjava.com/javafx-2-0/">JavaFX 2.0</a> there wasn&#8217;t a lot of time to respond, but I managed to refocus all my talks in a very short amount of time.</p>
<h2>Pro JavaFX Platform &#8211; Building Enterprise Applications with JavaFX</h2>
<p><strong> </strong>My second talk on Tuesday with Jim Weaver was packed to the brim with folks eager to ask questions about the new direction.  We managed to both hit our original presentation topic about enterprise JavaFX development as well as distill the new JavaFX 2.0 market pitch down to something that makes sense to developers.  As an added bonus we threw in some examples of what the new JavaFX APIs could look like from Scala code.</p>
<div id="__ss_5289322" style="width: 650px;"><object id="__sse5289322" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="650" height="523" 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=projavafx-enterprise-final-100926053735-phpapp01&amp;rel=0&amp;stripped_title=pro-javafx-enterprisefinal&amp;userName=steveonjava" /><param name="name" value="__sse5289322" /><param name="allowfullscreen" value="true" /><embed id="__sse5289322" type="application/x-shockwave-flash" width="650" height="523" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=projavafx-enterprise-final-100926053735-phpapp01&amp;rel=0&amp;stripped_title=pro-javafx-enterprisefinal&amp;userName=steveonjava" name="__sse5289322" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p class="download"><a href="http://steveonjava.com/wp-content/uploads/2010/09/ProJavaFX-Enterprise-Final.pdf">Download Pro JavaFX Platform Presentation as a PDF</a></p>
<h2>JFXtras &#8211; JavaFX Controls, Layout, Services, and More</h2>
<p>The JFXtras BOF was standing room only with a lot of very prestigious folks from the desktop community filling the chairs.  We covered the latest JFXtras 0.7 features and updated everyone on the plan for the future of JFXtras in light of the JavaFX 2.0 announcement.  At the end of the presentation we announced a new language project called Visage to fill the gap left by JavaFX Script (more on this in a future post).</p>
<div id="__ss_5289350" style="width: 650px;"><object id="__sse5289350" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="650" height="523" 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=jfxtras-javafxcontrolslayoutsservicesandmore-100926054230-phpapp02&amp;rel=0&amp;stripped_title=jfxtras-javafx-controls-layout-services-and-more&amp;userName=steveonjava" /><param name="name" value="__sse5289350" /><param name="allowfullscreen" value="true" /><embed id="__sse5289350" type="application/x-shockwave-flash" width="650" height="523" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jfxtras-javafxcontrolslayoutsservicesandmore-100926054230-phpapp02&amp;rel=0&amp;stripped_title=jfxtras-javafx-controls-layout-services-and-more&amp;userName=steveonjava" name="__sse5289350" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p class="download"><a href="http://steveonjava.com/wp-content/uploads/2010/09/JFXtras-JavaFX-Controls-Layouts-Services-and-More.pdf">Download JFXtras Presentation as a PDF</a></p>
<p>Even if you couldn&#8217;t attend, hopefully you can get a flavor for how the talks went by skimming the above presentations.</p>
<p>See you at JavaOne next year!</p>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/javaone-enterprise-javafx-and-jfxtras-presentations/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/javaone-enterprise-javafx-and-jfxtras-presentations/feed/</wfw:commentRss>
		<slash:comments>6</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>JavaOne Expert RIA Track</title>
		<link>http://javafx.steveonjava.com/expert-ria-track/</link>
		<comments>http://javafx.steveonjava.com/expert-ria-track/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 04:06:53 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JFXtras]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1352</guid>
		<description><![CDATA[This is going to be a big year for JavaFX and RIA technologies at JavaOne.  What does your JavaOne schedule look like this year?  Are you going to settle for beginner content, or are you ready for the Expert RIA Track. Here are some suggestions on sessions you won&#8217;t want to miss (I even found [...]]]></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%252Fexpert-ria-track%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fbr9dTe%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaOne%20Expert%20RIA%20Track%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/expert-ria-track/";
		var dzone_title = "JavaOne Expert RIA Track";
		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>This is going to be a big year for JavaFX and RIA technologies at JavaOne.  What does your JavaOne schedule look like this year?  Are you going to settle for beginner content, or are you ready for the Expert RIA Track.</p>
<p><a rel="attachment wp-att-1365" href="http://javafx.steveonjava.com/expert-ria-track/trackdays/"><img class="size-large wp-image-1365 alignnone" title="Expert Track" src="http://steveonjava.com/wp-content/uploads/2010/09/trackdays-650x433.jpg" alt="" width="650" height="433" /></a></p>
<p>Here are some suggestions on sessions you won&#8217;t want to miss (I even found a way to make the links work thanks to my co-presenter <a href="http://jonathangiles.net/blog/">Jonathan Giles</a>):<span id="more-1352"></span></p>
<table class="agenda_table">
<tbody>
<tr>
<td class="agenda_table_hdr" colspan="8" valign="top"><strong>Lap 1: Monday, September 21</strong></td>
</tr>
<tr id="event40067">
<td class="agendaCol1"><strong>10:00-11:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 6/7</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S319383]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2377"> JavaFX 2.0</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Richard, Nicolas, Jasper, and Jai are going to set the tone for the rest of the JavaFX talks.  There are multiple reasons you won&#8217;t want to miss this talk&#8230;  most of which I can&#8217;t blog about until afterwards.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </td>
</tr>
<tr id="event38686">
<td class="agendaCol1"><strong>11:30-12:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 8</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S314238]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2021">JavaFX: Designer Developer Workflow</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">I saw Pär and Martin give this talk at Jazoon, and it was an extremely well polished presentation. Entertaining and definitely worth checking out.</td>
</tr>
<tr id="event38671">
<td class="agendaCol1"><strong>13:00-14:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 3</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313610]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2013"> Helping Doctors and Rescue Workers in the Field, Using JavaFX</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Eric is doing some interesting work with JavaFX for humanitarian efforts, and should have some practical advice on the platform to share.</td>
</tr>
<tr id="event38670">
<td class="agendaCol1"><strong>14:30-15:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 2</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S314106]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/1895"> Visualization of Geomaps and Topic Maps with JavaFX</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Jim Weaver (who needs no introduction) and Johan Vos (RedFX author and JFXtras contributor) will be doing a presentation on more than just JavaFX.  They are going to cover advanced data visualization and topic maps, so you are sure to learn something new in attending.</td>
</tr>
<tr id="event40058">
<td class="agendaCol1"><strong>16:00-17:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 8</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S319370]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2374"> JavaFX Your Way: Building JavaFX Applications with Alternative Languages</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Jonathan and I have a few new tricks up our sleeves.  In the past couple weeks have been improving our JVM language mastery and applying it to JavaFX.  This is the future of JavaFX, so don&#8217;t miss it!</td>
</tr>
<tr>
<td class="agenda_table_hdr" colspan="8" valign="top"><strong>Lap 2: Tuesday, September 21</strong></td>
</tr>
<tr id="event38574">
<td class="agendaCol1"><strong>08:00-09:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Yosemite B</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S317802]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2247"> Using JavaFX 1.3 Controls</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Stuart is not only a member of the core JavaFX team, but also a great presenter (he did an excellent introductory talk at the <a href="http://svjugfx.org/">SvJugFx</a>).  He has teamed up with Paru and will be going over the new JavaFX controls, including some of the &#8220;preview&#8221; controls.  Expect a few surprises!</td>
</tr>
<tr id="event38545">
<td class="agendaCol1"><strong>13:00-14:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Yosemite A</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S312925]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/1805"> Pro JavaFX: Developing Enterprise Applications</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Jim and I will be showing off some JavaFX mastery with some new enterprise integration techniques and a surprise demo application.  Look forward to this one!</td>
</tr>
<tr>
<td class="agenda_table_hdr" colspan="8" valign="top"><strong>Lap 3: Wednesday, September 22</strong></td>
</tr>
<tr id="event39780">
<td class="agendaCol1"><strong>08:00-09:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Grand Ballroom AB</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[KEY]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2357">Oracle Develop Keynote</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">What, a Keynote?!  I avoided mentioning Keynotes in general (heck, you know where they are), but I will be making a surprise appearance on stage with some demo material to help out Ryan.  <img src='http://steveonjava.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </td>
</tr>
<tr id="event39145">
<td class="agendaCol1"><strong>10:00-11:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 6/7</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S314603]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/1850"> Creating a 3D UI for an Enterprise Application with JavaFX</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Jim is back on stage with the help of the very capable Christopher Wright to showcase some JavaFX 3D action.  If you haven&#8217;t seen Jim&#8217;s 3D programming at work, it is both beautiful and elegant.</td>
</tr>
<tr id="event38827">
<td class="agendaCol1"><strong>11:30-12:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 6/7</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S316846]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2228"> MLB Gets on Base with JavaFX</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">One of the biggest commercial projects written in JavaFX will show you what rich applications can really be.</td>
</tr>
<tr id="event38825">
<td class="agendaCol1"><strong>13:00-14:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 4/5</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313851]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/1929"> JavaFX Production Suite: Nonstop Evolution</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">I prefer to hear talks straight from the experts, and this what you will get here.  Petr Suchomel from Oracle will have plenty of demos, but also promises to look at some of the nuts and bolts.</td>
</tr>
<tr id="event39059">
<td class="agendaCol1"><strong>14:15-15:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Parc 55, Powell I / II</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[BOF] &#8211; [S312919]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/1804"> JFXtras: JavaFX Controls, Layouts, Services, and More</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Huh, a BOF!?  I didn&#8217;t cover all the excellent BOFs you may want to attend, but this one is special for several reasons:</p>
<ol>
<li>It is right in the middle of the day&#8230;  yes, you can enjoy a fun, spontaneous event without missing your evening parties!</li>
<li>It also happens to be at the same time as an Oracle OpenWorld Keynote.  (not that there is anything wrong with Keynotes, but if you had to pick&#8230;)</li>
<li>I have some exciting announcements to make.  Even if you haven&#8217;t cared about the JFXtras project before, this may change your mind going forward.</li>
</ol>
</td>
</tr>
<tr id="event38832">
<td class="agendaCol1"><strong>16:45-17:45</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 8</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313960]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2056"> JavaFX Graphics</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" colspan="8" valign="top"><strong>Lap 4: Thursday, September 23</strong></td>
</tr>
<tr id="event38838">
<td class="agendaCol1"><strong>11:00-12:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 4/5</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S314306]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2080"> Hardcore Cascading Style Sheets with JavaFX</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Rich and Jasper are going to cover one of the deepest features on the JavaFX platform today!  CSS is more than just a way of styling your UI, which you will quickly find out once you see the mastery they have applied to the JavaFX 1.3 Controls.</td>
</tr>
<tr id="event39067">
<td class="agendaCol1"><strong>12:30-13:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Parc 55, Divisidero</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313605]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2012"> Rich GUI Testing Made Easy</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">This is not strictly a JavaFX talk, but I highly recommend it for the following reasons:</p>
<ul>
<li>Alex Ruiz (of FEST-Swing fame) is now a core member of the JavaFX team, so he will have a huge impact on how you do rich client testing going forward</li>
<li>They are using next generation Test-Drive Development techniques on rich client UIs&#8230;  very bleeding edge</li>
</ul>
</td>
</tr>
<tr id="event38839">
<td class="agendaCol1"><strong>14:00-15:00</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Golden Gate 4/5</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313450]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2156">Visual Development of JavaFX Applications</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">The JavaFX Composer team from the Czech Republic will show you how to write JavaFX applications without writing any code!</td>
</tr>
<tr id="event38636">
<td class="agendaCol1"><strong>15:30-16:30</strong></td>
<td class="agendaCol2"></td>
<td class="agendaCol3">Hilton San Francisco, Continental Parlor 1/2/3</td>
<td class="agendaCol4">
<ul class="listingType">
<li><img class="Sun" src="http://www.eventreg.com/sb250/assets/square.gif" alt="" /></li>
</ul>
</td>
<td class="agendaCol6">[CS] &#8211; [S313995]</td>
<td class="agendaCol7"><a href="http://my.javaonedevelop.com/events/event/2105">Control JavaFX with Presentation Models</a></td>
<td class="agendaCol8"></td>
<td class="agendaCol9"></td>
</tr>
<tr>
<td class="agenda_table_hdr" style="font-size: 11px;" colspan="8" valign="top">Learn from Dierk König about how to apply the Presentation Model pattern to your UIs.</td>
</tr>
</tbody>
</table>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1248px; width: 1px; height: 1px; overflow: hidden;">http://my.javaonedevelop.com/events/event/2156</div>
<h2>Can you make it through the Expert RIA Track?  I hope to see you there at JavaOne!</h2>
<div class="plus-one-wrap"><g:plusone href="http://javafx.steveonjava.com/expert-ria-track/"></g:plusone></div><div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://javafx.steveonjava.com/expert-ria-track/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

