<?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</title>
	<atom:link href="http://steveonjava.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://steveonjava.com</link>
	<description>Hacking JavaFX and Java with Agility</description>
	<lastBuildDate>Thu, 11 Mar 2010 19:40:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Live Video Streaming Guide – Part 2 : Hardware</title>
		<link>http://steveonjava.com/2010/03/06/live-video-streaming-guide-%e2%80%93-part-2-hardware/</link>
		<comments>http://steveonjava.com/2010/03/06/live-video-streaming-guide-%e2%80%93-part-2-hardware/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 07:49:05 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=900</guid>
		<description><![CDATA[

		
		
		
		This is the second installation of my Live Streaming Guide, which will go over all the hardware you need to get setup.  While you can spend tens of thousands of dollars on professional gear, it is possible to put together a high quality setup for a fraction of that cost.  You may also be able [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/03/06/live-video-streaming-guide-%e2%80%93-part-2-hardware/";
		var dzone_title = "Live Video Streaming Guide – Part 2 : Hardware";
		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 the second installation of my <a href="http://steveonjava.com/2010/02/23/live-video-streaming-guide-part-1-introduction/">Live Streaming Guide</a>, which will go over all the hardware you need to get setup.  While you can spend tens of thousands of dollars on professional gear, it is possible to put together a high quality setup for a fraction of that cost.  You may also be able to reuse some of your existing hardware, further reducing the cost.</p>
<p>This setup is targeted at streaming a live presentation over the internet that includes a speaker and possibly some slides or a demo.  Not all of this hardware is required to get started, so I will present it in order of how critical it is to the quality of the presentation.</p>
<p>If you are just interested in knowing what I recommend and how much it will run you, skip to the <a href="#buyingguide">Buying Guide</a>.</p>
<h2>Choosing a Camcorder</h2>
<p>The first thing you will need is a camcorder to stream the video.  The reason to go with a camcorder rather than a webcam is that you will have more options for lenses and zooming, and will be able to get a much higher resolution (as high as 1920&#215;1080 for HD).  HD camcorders are pretty common and fairly inexpensive; a good one can be bought new for around $600.  Also, chances are that you or someone you know already has one that you can take advantage of.</p>
<p>One important consideration for camcorders is the computer interface.  If the camcorder supports Firewire (IEEE 1394), you are in pretty good shape.  This means it will probably support DV or HDV streaming to a laptop that has Firewire, and video streaming software will automatically pick it up as an input device.  A popular model for doing video streaming is the <a href="http://www.amazon.com/gp/product/B001OI2Z4Q?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001OI2Z4Q">Canon Vixia HV40</a> which can be purchased for around $650 new:</p>
<div id="attachment_905" class="wp-caption alignnone" style="width: 310px"><a href="http://www.amazon.com/gp/product/B001OI2Z4Q?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001OI2Z4Q"><img class="size-full wp-image-905" title="Canon Vixia HV40 Top" src="http://steveonjava.com/wp-content/uploads/2010/03/canon.hv40.accessoryshoe.jpg" alt="" width="300" height="211" /></a><p class="wp-caption-text">Canon Vixia HV40</p></div>
<h3><span id="more-900"></span>What if I Have an AVCHD Camcorder? <span style="color: #888888;">(skip this section if you are buying new)</span></h3>
<p>A lot of the more recent camcorder models, particularly any that support Advanced Video Coding High Definition (AVCHD), do not have Firewire support.  The advantage of these new AVCHD cameras is that they are lighter, and can capture video to a memory stick for easy transfer.  However, they lack the DV circuitry needed to stream over Firewire.  This is the case with the Canon Vixia HF20 camcorder I have been using.</p>
<p>Fortunately, you have some options with AVCHD cameras.  Many of them support HDMI out, which is actually higher quality than HDV as long as you have a capture card you can use to record it.  The card I have been using is the <a href="http://www.amazon.com/gp/product/B001CN9GEA?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001CN9GEA">BlackMagic Intensity Pro</a>, which works on both Mac and PC systems and is relatively inexpensive (about $185):</p>
<div id="attachment_915" class="wp-caption alignnone" style="width: 340px"><a href="http://www.amazon.com/gp/product/B001CN9GEA?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001CN9GEA"><img class="size-full wp-image-915 " title="Blackmagic Intensity Pro" src="http://steveonjava.com/wp-content/uploads/2010/03/Blackmagic-Intensity-Pro.jpg" alt="" width="330" height="180" /></a><p class="wp-caption-text">Blackmagic Intensity Pro</p></div>
<p>The big disadvantage of this is that it is a PCI Express card, so you need a computer with an expansion slot available.  This makes a truly portable setup impossible since no laptops come with PCI slots.</p>
<p>Another option that is more attractive for a portable setup is to use a <a href="http://www.dvcreators.net/matrox-mxo-2/">Matrox MX02 Mini</a> breakout box.  This supports both PCI and ExpressCard (EC) adapters, the latter of which can be found standard on many laptops.  I actually bought a Matrox MX02 from the folks at <a href="http://www.dvcreators.net/dvestore/">DVEStore</a> and tested it out, but it wouldn&#8217;t work for my setup.  The problem is that I have a PC laptop with an EC slot, but the Matrox PC drivers don&#8217;t have full DirectShow support and only support capture to a limited set of applications such as Adobe Premiere.  On the other hand, their Mac drivers are much better, allowing capture to any application that supports QuickTime video capture.  The showstopper here was that Apple recently stopped shipping EC slots on all models smaller than 17&#8243;, so my 15&#8243; Mac was useless (and I couldn&#8217;t justify buying a new laptop just for this purpose).</p>
<p>The upshot is that if you have a Mac with an ExpressCard Slot the <a href="http://www.dvcreators.net/matrox-mxo-2/">MX02 Mini</a> is a great, portable option to go with your AVCHD camcorder:</p>
<div id="attachment_920" class="wp-caption alignnone" style="width: 360px"><a href="http://www.dvcreators.net/matrox-mxo-2/"><img class="size-full wp-image-920 " title="Matrox MX02 Mini" src="http://steveonjava.com/wp-content/uploads/2010/03/mxo2_mini_tif.jpg" alt="" width="350" height="208" /></a><p class="wp-caption-text">Matrox MX02 Mini</p></div>
<h2>Capturing Presenter Audio</h2>
<p>Now that you have high definition video, you need crystal clear audio to match.  The problem is that most camcorder microphones will pick up ambient sound, so they are useless for recording the speaker at an event.</p>
<p>The best option is to pick up a lavalier mic that will capture the presenter audio directly.  A good option that Aleksandar Gargenta (Sasa) uses for his <a href="http://www.sfjava.org/">San Francisco JUG</a> meetups is the <a href="http://www.amazon.com/gp/product/B00006I523?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00006I523">Audio Technica Pro 88W</a>.  It is relatively inexpensive and has excellent audio quality for the price.  The disadvantages are that it operates over VHF frequencies, so it is subject to more interference and less range than UHF, and it has no battery meter so you are left guessing when to switch them out so you don&#8217;t lose power in the middle of a presentation.</p>
<div id="attachment_912" class="wp-caption alignnone" style="width: 150px"><a href="http://www.amazon.com/gp/product/B00006I523?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00006I523"><img class="size-full wp-image-912" title="Audio Technica Pro 88W" src="http://steveonjava.com/wp-content/uploads/2010/03/31VN6HkxFKL._SL160_.jpg" alt="" width="140" height="160" /></a><p class="wp-caption-text">Audio Technica Pro 88W</p></div>
<p>Sennheiser makes some much higher end models that will give you better audio, longer range, and an array of features like battery life monitoring and configurable channels.  If you can afford the price (roughly $600), it is well worth it to invest in something like the <a href="http://www.dvcreators.net/sennheiser-mics/">Sennheiser EW112P G3</a>:</p>
<div id="attachment_919" class="wp-caption alignnone" style="width: 206px"><a href="http://www.dvcreators.net/sennheiser-mics/"><img class="size-full wp-image-919  " title="Sennheiser Evolution G3 Wireless Lavalier System" src="http://steveonjava.com/wp-content/uploads/2010/03/ew112pg3.jpg" alt="" width="196" height="149" /></a><p class="wp-caption-text">Sennheiser EW112P G3</p></div>
<p>In addition to a lapel mic, you may also want to consider getting a shotgun mic.  This will not give you as clear audio as you will get from the presenter, but can be useful to pick up questions from the audience.  The way a shotgun mic works is that it is directional, so wherever you point the camera is where it will record the sound from.  The audio pick-up is roughly canonical in shape, so the farther you are away from the speaker the more background noise you are likely to pick up.  An excellent choice for a shotgun mic is the <a href="http://www.dvcreators.net/rode-videomic/">Rode VideoMic 2</a> which has professional sound quality, but only costs $150 (remember to check for accessory shoe compatibility with your camcorder&#8230;  you may need an adapter):</p>
<div id="attachment_918" class="wp-caption alignnone" style="width: 163px"><a href="http://www.dvcreators.net/rode-videomic/"><img class="size-full wp-image-918" title="Rode VideoMic 2" src="http://steveonjava.com/wp-content/uploads/2010/03/videomic_side_sml.jpg" alt="" width="153" height="130" /></a><p class="wp-caption-text">Rode VideoMic 2</p></div>
<h2>Picking a Tripod</h2>
<p>The last bit of essential equipment is getting a good tripod for your setup.  If you have a standard camera tripod you can make due, but getting a specialized video tripod is ideal.  Even though a tripod will be the largest item in your rig, it doesn&#8217;t have to be the most expensive item, especially if you shop around.  Some things you should consider when looking for a tripod are:</p>
<ul>
<li>Weight &#8211; If you will be recording on the run, choose a tripod that is lightweight and easy to setup.</li>
<li>Control &#8211; You want to be able to easily pan and tilt the camera independently to follow the presenter, so get one with a good fluid drag mechanism.</li>
<li>Quality &#8211; Your tripod stands to take a fair amount of abuse as you move your setup around, so make sure it is of sturdy construction.</li>
</ul>
<p>I ended up going with the<a href="http://www.amazon.com/gp/product/B00139XOCI?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00139XOCI"> Ravelli AVT Video Tripod</a> and have been pretty impressed with what you get for $77.  It has a fluid balance for leveling the camera, switchable plates for quickly changing the mounted camcorder, and comes with two solid metal arms for controlling the camera angle.  The only downside is that it is a little heavy (9 pounds), but the  construction of the entire tripod is extremely rugged.</p>
<div id="attachment_911" class="wp-caption alignnone" style="width: 170px"><a href="http://www.amazon.com/gp/product/B00139XOCI?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00139XOCI"><img class="size-full wp-image-911" title="Ravelli AVT Video Camera" src="http://steveonjava.com/wp-content/uploads/2010/03/41Ok8NL9CFL._SL160_.jpg" alt="" width="160" height="160" /></a><p class="wp-caption-text">Ravelli AVT Video Tripod</p></div>
<h2>Screen Recording</h2>
<p>If you have the rest of the setup mentioned above, you are doing pretty good.  However, for typical technical presentations with a slide deck or demos you will have trouble getting a good shot of both the presenter and the presentation.  A much better option is to separately record and stream the presenter&#8217;s laptop so you can superimpose the presenter&#8217;s picture on top of the slides.</p>
<p>There are a variety of software options you can use to do this, but I am not going to even bother covering these for the simple reason that they are impractical.  In most cases your presenter will use their own laptop, so it is not an option to setup the recording in advance.  Even if it was, you still run the risk of having screen recording issues that would require interrupting the presenter to diagnose (this happened to me during my talk at the SD Forum and was extremely embarrassing even though we figured it out on the fly).</p>
<p>A much better option is to record the presenter&#8217;s laptop by intercepting and capturing the VGA signal.  There are several VGA to USB converters on the market, but the most reasonable ones are sold by a company called Epiphan based out of Canada.  Their entry level <a href="http://sewelldirect.com/VGA-to-USB-Video-Grabber.asp">VGA2USB</a> model is only $300, will allow capture of VGA signals at up to 2048×1536 resolution, and is about the size of a pack of cigarettes.</p>
<div id="attachment_925" class="wp-caption alignnone" style="width: 210px"><a href="http://sewelldirect.com/VGA-to-USB-Video-Grabber.asp"><img class="size-full wp-image-925" title="Epiphan VGA2USB" src="http://steveonjava.com/wp-content/uploads/2010/03/SW-7563_lg.jpg" alt="" width="200" height="154" /></a><p class="wp-caption-text">Epiphan VGA2USB</p></div>
<p>The downside of the entry level model is that the frame rate drops off steeply as the resolution goes up, and it is interlaced, which means your attendees will see tearing in the picture.  They also sell much more expensive models that can handle everything from Dual-head DVI to direct internet streaming, but the best option is probably the <a href="http://sewelldirect.com/Epiphan-VGA2USB-LR-VGA-to-USB-Converter.asp">VGA2USB LR</a>, which captures at much higher frame rates with zero interlacing for $800:</p>
<div id="attachment_926" class="wp-caption alignnone" style="width: 210px"><a href="http://sewelldirect.com/Epiphan-VGA2USB-LR-VGA-to-USB-Converter.asp"><img class="size-full wp-image-926" title="Epiphan VGA2USB LR" src="http://steveonjava.com/wp-content/uploads/2010/03/SW-8715_lg.jpg" alt="" width="200" height="154" /></a><p class="wp-caption-text">Epiphan VGA2USB LR</p></div>
<p>In addition to the VGA to USB converter, you will also need a VGA splitter.  It comes with a passive one, but if you want to maintain a high quality signal over a relatively long VGA cable (ours is 50&#8242;) you should probably invest in an active splitter.  Radio Shack sells a very convenient <a href="http://www.radioshack.com/product/index.jsp?productId=3521446&amp;CAWELAID=325278351">VGA Splitter</a> that will power itself off the computer&#8217;s USB slot, which is worth it for saving the hassle of carting yet another power supply:</p>
<div id="attachment_927" class="wp-caption alignnone" style="width: 355px"><a href="http://www.radioshack.com/product/index.jsp?productId=3521446&amp;CAWELAID=325278351"><img class="size-full wp-image-927" title="Gigaware USB-Powered VGA Splitter" src="http://steveonjava.com/wp-content/uploads/2010/03/pRS1-5806847w345.jpg" alt="" width="345" height="235" /></a><p class="wp-caption-text">Gigaware USB-Powered VGA Splitter</p></div>
<h2><a name="buyingguide">Buying Guide</a></h2>
<p>After all that detail on the products and options, it is easy to lose track of the essentials.  This section will give you just the line items and cost for my recommended setup.</p>
<p><strong>
<table id="wp-table-reloaded-id-4-no-1" class="wp-table-reloaded wp-table-reloaded-id-4">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Category</th><th class="column-2">Hardware</th><th class="column-3">Cost</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Camcorder</td><td class="column-2"><a href="http://www.amazon.com/gp/product/B001OI2Z4Q?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001OI2Z4Q">Canon Vixia HV40</a></td><td class="column-3"><a href="http://www.amazon.com/gp/product/B001OI2Z4Q?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001OI2Z4Q">$650</a></td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Microphone</td><td class="column-2"><a href="http://www.amazon.com/gp/product/B00006I523?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00006I523">Audio Technica Pro 88W</a></td><td class="column-3"><a href="http://www.amazon.com/gp/product/B00006I523?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00006I523">$124</a></td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Tripod</td><td class="column-2"><a href="http://www.amazon.com/gp/product/B00139XOCI?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00139XOCI">Ravelli AVT Video Tripod</a></td><td class="column-3"><a href="http://www.amazon.com/gp/product/B00139XOCI?ie=UTF8&amp;tag=wi0ef-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00139XOCI">$77</a></td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">VGA Converter</td><td class="column-2"><a href="http://sewelldirect.com/VGA-to-USB-Video-Grabber.asp">Epiphan VGA2USB</a></td><td class="column-3"><a href="http://sewelldirect.com/VGA-to-USB-Video-Grabber.asp">$300</a></td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">VGA Splitter</td><td class="column-2"><a href="http://www.radioshack.com/product/index.jsp?productId=3521446&amp;CAWELAID=325278351">Gigaware USB-Powered VGA Splitter</a></td><td class="column-3"><a href="http://www.radioshack.com/product/index.jsp?productId=3521446&amp;CAWELAID=325278351">$33</a></td>
	</tr>
</tbody>
</table>
</strong></p>
<p class="important">Important: Remember to buy a Firewire cable to hook this up to your computer, and a long (50&#8242;) VGA cable for the VGA2USB dongle.</p>
<p>I hope this hardware guide has been helpful.  I have no vested interested in any of the companies or products mentioned, and welcome suggestions about good alternatives in the comments section.</p>
<p>Make sure to <a href="http://twitter.com/steveonjava">follow my blog</a> so you catch the next installment of this series where I will go into detail on how to use this hardware to stream live from your event!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/03/06/live-video-streaming-guide-%e2%80%93-part-2-hardware/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Launching Hyperlinks from JavaFX (including Mobile)</title>
		<link>http://steveonjava.com/2010/03/04/launching-hyperlinks-from-javafx-including-mobile/</link>
		<comments>http://steveonjava.com/2010/03/04/launching-hyperlinks-from-javafx-including-mobile/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 19:52:27 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaFX Mobile]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[hyperlinks]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=814</guid>
		<description><![CDATA[

		
		
		
		Creating hyperlinks in JavaFX should be in the category of things that are trivially easy, but is complicated by various factors, such as deployment mode and Java version.  First I will go into detail on all the different permutations of how you can launch links in a browser and under what circumstances each will [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/03/04/launching-hyperlinks-from-javafx-including-mobile/";
		var dzone_title = "Launching Hyperlinks from JavaFX (including Mobile)";
		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://steveonjava.com/wp-content/uploads/2010/02/image_gallery.jpg"><img class="size-full wp-image-831 alignright" title="link" src="http://steveonjava.com/wp-content/uploads/2010/02/image_gallery.jpg" alt="" width="260" height="215" /></a>Creating hyperlinks in JavaFX should be in the category of things that are trivially easy, but is complicated by various factors, such as deployment mode and Java version.  First I will go into detail on all the different permutations of how you can launch links in a browser and under what circumstances each will work. Next I will give you a nice packaged solution that you can use as a library (if you are impatient, just skip to <a href="#out">The Easy Way Out</a> now).  Finally, I will show how you can do the same thing for <a href="#mobile">JavaFX Mobile applications</a>.</p>
<h2>A Tale of 3 APIs</h2>
<p>There are 3 different ways that you can launch hyperlinks in Java/JavaFX.  Unfortunately, none of them work in all circumstances, so you need to know when to call each.  Here is a quick reference table:</p>

<table id="wp-table-reloaded-id-3-no-1" class="wp-table-reloaded wp-table-reloaded-id-3">
<thead>
	<tr class="row-1 odd">
		<th class="column-1"></th><th class="column-2">AppletStageExtension</th><th class="column-3">Web Start BasicService</th><th class="column-4">Desktop.browse</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Works in Applet</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Works in Web Start</td><td class="column-2">No</td><td class="column-3">Yes</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Works in Application</td><td class="column-2">No</td><td class="column-3">No</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Works on Java 1.5</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">No</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">Can Set Target</td><td class="column-2">Yes</td><td class="column-3">No</td><td class="column-4">No</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">Default Target</td><td class="column-2">_self</td><td class="column-3">_blank</td><td class="column-4">_self</td>
	</tr>
</tbody>
</table>

<h3>AppletStageExtension</h3>
<p>The first option is to use the JavaFX AppletStageExtension.  This is only available if you are running as an Applet, but also gives you the most control over how the hyperlink is launched.  In addition to a URL you can also specify a target, which can be any of the standard HTML targets including the following (excerpted from the <a href="http://java.sun.com/javafx/1.2/docs/api/javafx.stage/javafx.stage.AppletStageExtension.html">AppletStageExtension javadocs</a>):</p>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Target Argument</th><th class="column-2">Description</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">"_self"</td><td class="column-2">Show in the window and frame that contain the applet.</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">"_parent"</td><td class="column-2">Show in the applet’s parent frame. If the applet’s frame has no parent frame, acts the same as “_self”.</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">"_top"</td><td class="column-2">Show in the top-level frame of the applet’s window. If the applet’s frame is the top-level frame, acts the same as “_self”.</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">"_blank"</td><td class="column-2">Show in a new, unnamed top-level window.</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">name</td><td class="column-2">Show in the frame or window named name. If a target named name  does not already exist, a new top-level window with the specified name is created, and the document is shown there.</td>
	</tr>
</tbody>
</table>

<h3>Web Start BasicService</h3>
<p>The second option is to use the Web Start BasicService.  This works from both JavaFX Applets and Web Start applications, but does not let you specify the HTML target.  It is effectively the same as using the AppletStageExtension with a target of &#8220;_blank&#8221;.</p>
<p>Here is a small code excerpt showing how you would call the Web Start BasicService from your JavaFX code:</p>
<pre class="brush: javafx;">
def basicService = ServiceManager.lookup(&quot;javax.jnlp.BasicService&quot;) as BasicService;
basicService.showDocument(new URL(url));
</pre>
<h3>Desktop.browse</h3>
<p>The third option is to use the new Desktop class introduced in Java 1.6.  This works from Applet, Web Start applications, and Standard Execution (within a desktop Frame).  Unfortunately, it did not exist in Java 1.5, so it won&#8217;t work from JavaFX without a little hacking.</p>
<p>The quick and dirty hack is to modify your JavaFX distribution to include the rt.jar from Java 1.6 as explained in this <a href="http://steveonjava.com/2009/01/02/hacking-javafx-10-to-use-java-16-features/">earlier post</a>.  The only problem with this is you also have to get all the other developers on your project to do the same (and redo this on every upgrade).</p>
<p>The friendlier approach is to use reflection to check and see if the Desktop class is available, and then invoke the methods dynamically.  There is quite a bit more boilerplate code, but it will allow you to compile with a plain vanilla JavaFX installation, and also handle the odd case where someone is trying to run JavaFX under 1.5.  (Which is unsupported on Windows/Unix, but happens to be the only option for the poor lost souls with 32 bit chips who have been abandoned by Apple).</p>
<p>Since the code is easier to follow without reflection, I will show that first:</p>
<pre class="brush: javafx;">
Desktop.getDesktop().browse(new URI(url));
</pre>
<p>And here is the munged version with reflection:</p>
<pre class="brush: javafx;">
try {
    def desktopClazz = Class.forName(&quot;java.awt.Desktop&quot;);
    def desktop = desktopClazz.getMethod(&quot;getDesktop&quot;).invoke(null);
    def browseMethod = desktopClazz.getMethod(&quot;browse&quot;, [URI.class] as java.lang.Class[]);
    browseMethod.invoke(desktop, new URI(url));
} catch (e) {
    println(&quot;Upgrade to Java 6 or later to launch hyperlinks: {url}&quot;);
}
</pre>
<h2><a name="out">The Easy Way Out</a></h2>
<p>When things are easy to do, they will get done right.  To make sure that JavaFX applications do not fall prey to broken and inconsistent linking, I put together a library for <a href="http://jfxtras.org/">JFXtras</a> that takes care of all the plumbing for you.</p>
<p>There is a new JFXtras class called BrowserUtil that has a very simple API:</p>
<pre class="brush: javafx;">
BrowserUtil.browse(url);
</pre>
<p>or</p>
<pre class="brush: javafx;">
BrowserUtil.browse(url, target);
</pre>
<p>It is that simple&#8230;  Conversion of string URLs to URL or URI objects, selection of the correct API based on your deployment mode, and failover modes based on the Java version are all included.</p>
<p>In addition, I created an extended Hyperlink called the XHyperlink.  This behaves identically to the built-in control, with the addition of simple configuration of URL navigation (this is what hyperlinks are designed for, right?)  The usage of the XHyperlink class is as follows:</p>
<pre class="brush: javafx;">
XHyperlink {
    text: &quot;Oracle's Homepage&quot;, url: &quot;http://oracle.com/&quot;}
}
</pre>
<p>All of this functionality will be included in the JFXtras 0.6 release.  If you need it now, you can build off the head of our <a href="http://code.google.com/p/jfxtras/source/browse/">repo</a>.  Otherwise we are working on a release, which I will announce on this blog shortly which you can <a href="http://twitter.com/steveonjava">follow</a>.</p>
<h2><a name="mobile">What about JavaFX mobile?</a></h2>
<p>None of these desktop techniques actually work on a mobile device, so this is not a 100% solution yet.</p>
<p>Fortunately, there is also a solution for JavaFX Mobile if you are willing to delve in to the Java ME APIs.  To do this you first need to get a handle to the MIDlet like this:</p>
<pre class="brush: javafx;">
def midlet = com.sun.javafx.runtime.adapter.MIDletAdapter.getMidlet();
</pre>
<p>And then you can call platformRequest to launch a browser on the mobile device:</p>
<pre class="brush: javafx;">
midlet.platformRequest(url);
</pre>
<p class="note">Note: This requires use of private APIs, so this may not work in future JavaFX releases.</p>
<p>It is not possible to merge this in with the desktop solution, because the JavaFX Mobile libraries do not exist on the desktop platform (and vice versa), but it is relatively easy to use this technique yourself by copying and pasting the above code sample into a helper function in your application.</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/03/04/launching-hyperlinks-from-javafx-including-mobile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Live Video Streaming Guide &#8211; Part 1 : Introduction</title>
		<link>http://steveonjava.com/2010/02/23/live-video-streaming-guide-part-1-introduction/</link>
		<comments>http://steveonjava.com/2010/02/23/live-video-streaming-guide-part-1-introduction/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 00:47:00 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=817</guid>
		<description><![CDATA[

		
		
		
		Recently I have been doing a lot of research, experimentation, and processing of videos for the Silicon Valley JavaFX User Group.  We decided from day 1 that we wanted to take things up a notch by providing high quality web streaming of our events.  It makes particular sense for us, because the JavaFX community is spread all [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/02/23/live-video-streaming-guide-part-1-introduction/";
		var dzone_title = "Live Video Streaming Guide &#8211; Part 1 : Introduction";
		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>Recently I have been doing a lot of research, experimentation, and processing of videos for the <a href="http://svjugfx.org/">Silicon Valley JavaFX User Group</a>.  We decided from day 1 that we wanted to take things up a notch by providing high quality web streaming of our events.  It makes particular sense for us, because the JavaFX community is spread all around the world, and we want to be able to reach as wide of an audience as possible.  However, once you have everything setup the overhead is minimal, so it is worthwhile to do for any user group or event.</p>
<div id="attachment_825" class="wp-caption alignnone" style="width: 486px"><a href="http://steveonjava.com/wp-content/uploads/2010/02/video-setup.jpg"><img class="size-full wp-image-825   " title="video-setup" src="http://steveonjava.com/wp-content/uploads/2010/02/video-setup.jpg" alt="" width="476" height="268" /></a><p class="wp-caption-text">Video setup for the first SvJugFx meeting with myself (left) and Keith Combs (right) running the rig.</p></div>
<p>Because this is a fairly in depth subject, I am going to cover it in a 4 part blog series.  Here are the topics (links will be added as each entry is published):</p>
<ul>
<li>Part 1 : <a href="http://steveonjava.com/2010/02/18/live-video-streaming-guide-part-1-introduction">Introduction</a> &#8211; You are reading it!</li>
<li>Part 2 : <a href="http://steveonjava.com/2010/03/06/live-video-streaming-guide-%E2%80%93-part-2-hardware/">Hardware</a> &#8211; This will give you an idea what hardware you need (including how to reuse what you have available).</li>
<li>Part 3 : Broadcasting &#8211; A step-by-step guide on how to stream video live from your event and tools to let your remote audience interact.</li>
<li>Part 4 : Post-processing &#8211; How to take the video assets you have and process them for upload complete with slides.</li>
</ul>
<p>By the end of this series you will be able to walk in to almost any venue and do live streaming on the spot.  You will also be able to post-process professional videos like <a href="http://steveonjava.com/2010/02/19/hinkmonds-javafx-mobile-dojo/">Hinkmond&#8217;s February JavaFX Mobile talk</a>.</p>
<p>Please drop feedback or comments below on anything specific you are interested on hearing me cover beyond what I have already mentioned!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/02/23/live-video-streaming-guide-part-1-introduction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hinkmond&#8217;s JavaFX Mobile Dojo</title>
		<link>http://steveonjava.com/2010/02/19/hinkmonds-javafx-mobile-dojo/</link>
		<comments>http://steveonjava.com/2010/02/19/hinkmonds-javafx-mobile-dojo/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:19:19 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[hinkmond wong]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=819</guid>
		<description><![CDATA[

		
		
		
		In case you missed the big event last week, I have finished post-processing and uploading the video.  We took the quality up a notch by getting a direct screen capture from the presenter laptop.  This means that you will not only get crystal clear slides, but also full-screen demos and a nice tight head-shot of [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/02/19/hinkmonds-javafx-mobile-dojo/";
		var dzone_title = "Hinkmond&#8217;s JavaFX Mobile Dojo";
		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>In case you missed the big event last week, I have finished post-processing and uploading the video.  We took the quality up a notch by getting a direct screen capture from the presenter laptop.  This means that you will not only get crystal clear slides, but also full-screen demos and a nice tight head-shot of the presenter.  This moves our video setup firmly up from a Level 4 to a premium Level 1 operation as detailed in <a href="http://blog.parleys.com/?p=211">Stephan Janssen&#8217;s blog</a>.</p>
<p>Without further ado, here is the Parleys version of Hinkmond&#8217;s JavaFX Mobile Dojo talk:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="381" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="pageId" value="1870" /><param name="src" value="http://www.parleys.com/share/parleysshare2.swf?pageId=1870" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="381" src="http://www.parleys.com/share/parleysshare2.swf?pageId=1870" pageid="1870" allowfullscreen="true"></embed></object></p>
<p>I got a lot of requests for just the slides last time, so I am also making them available here:</p>
<div id="__ss_3227800" style="text-align: left; width: 425px;"><object style="margin: 0px;" 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=svjfugjavafxmobilev10-100219135855-phpapp01&amp;stripped_title=hinkmonds-javafx-mobile-dojo" /><param name="allowfullscreen" value="true" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=svjfugjavafxmobilev10-100219135855-phpapp01&amp;stripped_title=hinkmonds-javafx-mobile-dojo" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Finally, a quick plug for our next SvJugFx event.  We will be doing a double feature with folks from the Java Store and JFrog Artifactory presenting back-to-back.  Even if you plan to attend online, make sure to sign-up here:<br />
<a href="http://www.svjugfx.org/calendar/12559455/">http://www.svjugfx.org/calendar/12559455/</a></p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/02/19/hinkmonds-javafx-mobile-dojo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaFX Layout Secrets with Amy Fowler</title>
		<link>http://steveonjava.com/2010/01/19/javafx-layout-secrets-with-amy-fowler/</link>
		<comments>http://steveonjava.com/2010/01/19/javafx-layout-secrets-with-amy-fowler/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 18:13:18 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=803</guid>
		<description><![CDATA[

		
		
		
		I finished post-processing and publishing our January talk with Amy Fowler on Parleys.com.
Here is a direct link: JavaFX Layout Secrets with Amy Fowler

I did my best to clean up the audio at the beginning to remove the static that our streaming listeners had to put up with. After the first 10 minutes we swapped mics, [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/01/19/javafx-layout-secrets-with-amy-fowler/";
		var dzone_title = "JavaFX Layout Secrets with Amy Fowler";
		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 finished post-processing and publishing our January talk with Amy Fowler on Parleys.com.</p>
<p>Here is a direct link: <a href="http://www.parleys.com/parleysserver/indexing/presentation.form?id=1837" target="_blank">JavaFX Layout Secrets with Amy Fowler</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="381" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="pageId" value="1837" /><param name="src" value="http://www.parleys.com/share/parleysshare2.swf?pageId=1837" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="381" src="http://www.parleys.com/share/parleysshare2.swf?pageId=1837" pageid="1837" allowfullscreen="true"></embed></object></p>
<p>I did my best to clean up the audio at the beginning to remove the static that our streaming listeners had to put up with. After the first 10 minutes we swapped mics, which made a huge difference!</p>
<p>Our plan for next month is to upgrade our streaming/recording setup once again so we can directly capture the presenter&#8217;s VGA signal for a dual-cast. This should allow us to capture the demos in full resolution and give a much better streaming experience. If you or your company is interested in helping sponsor some of our hardware needs, we can definitely use the help (<a href="http://steveonjava.com/contact">contact me</a>).</p>
<p>See you next month for Hinkmond&#8217;s JavaFX Mobile talk: <a href="http://www.svjugfx.org/calendar/12334837/" target="_blank">Hinkmond&#8217;s JavaFX Mobile Dojo</a></p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/01/19/javafx-layout-secrets-with-amy-fowler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SvJugFx Stream Page</title>
		<link>http://steveonjava.com/2010/01/13/svjugfx-stream-page/</link>
		<comments>http://steveonjava.com/2010/01/13/svjugfx-stream-page/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 22:54:21 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=795</guid>
		<description><![CDATA[

		
		
		
		Just a quick note.  I have added a new page for the Silicon Valley JavaFX User Group live stream in the toolbar above.  It contains an embedded movie player, chat window, and link to Google Moderator.  The direct url is: http://steveonjava.com/svjugfx/
I don&#8217;t know if I mentioned this before, but the live stream [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/01/13/svjugfx-stream-page/";
		var dzone_title = "SvJugFx Stream Page";
		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 a quick note.  I have added a new page for the Silicon Valley JavaFX User Group live stream in the toolbar above.  It contains an embedded movie player, chat window, and link to Google Moderator.  The direct url is: <a href="http://steveonjava.com/svjugfx/">http://steveonjava.com/svjugfx/</a></p>
<p>I don&#8217;t know if I mentioned this before, but the live stream is definitely worth the effort to watch.  It is the only place you will get to hear the interesting commentary by JavaFX experts such as Jim Weaver, Dean Iverson, Jonathan Giles, and others.</p>
<p>Please also use this post to respond with comments and suggestions about the stream so we can improve it in future meetings.</p>
<p>We will be broadcasting <strong>tonight at 7PM PST</strong>, so please join us for a great presentation from Amy Fowler!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/01/13/svjugfx-stream-page/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>2010 Blog &#8211; Revisited</title>
		<link>http://steveonjava.com/2010/01/02/2010-blog-revisited/</link>
		<comments>http://steveonjava.com/2010/01/02/2010-blog-revisited/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 08:05:56 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[redesign]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=763</guid>
		<description><![CDATA[

		
		
		
		To bring in the New Year, I did a complete revamp of my blog.  Wordpress.com served me well initially, but the limitations started to cramp my style.  Now I am off the corporate cloud and running on a 100% Open Source platform.
Here are some of the benefits of the new blogging platform:

Inline JavaFX and Java [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2010/01/02/2010-blog-revisited/";
		var dzone_title = "2010 Blog &#8211; Revisited";
		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>To bring in the New Year, I did a complete revamp of my blog.  Wordpress.com served me well initially, but the limitations started to cramp my style.  Now I am off the corporate cloud and running on a 100% Open Source platform.</p>
<p>Here are some of the benefits of the new blogging platform:</p>
<ul>
<li>Inline JavaFX and Java applets &#8211; No need to click a link or launch a web start application to see my latest creations.</li>
<li>Embedded videos &#8211; I can now embed videos from all 3rd party sites, including developer favorites like Parleys.com.</li>
<li>Unencumbered styling &#8211; No limitations on what I can do with styles and themes for the site (although I promise to keep it tame!)</li>
</ul>
<p>I also spent some doing a minor site redesign.  Some of the new features include:</p>
<ul>
<li>Updated site theme &#8211; Uses the latest <a href="http://www.jide.fr/english/downloads/freshy2">Freshy 2</a> release from Jidé (I guess I am partial to French designers)</li>
<li>DZone and Twitter post links &#8211; Feel free to vote up (or down) anything you see or retweet it to your followers</li>
<li>Contact form &#8211; Good way to directly poke me in case I am asleep at the wheel (sometimes I need a reminder)</li>
</ul>
<p>I will be taking advantage of all these and other features of the new platform throughout the rest of 2010.</p>
<p>And finally, some local fireworks from the celebration over San Francisco to enjoy:</p>
<p><a href="http://www.flickr.com/photos/18203311@N08/4235825109/"><img class="size-full wp-image-764 alignnone" title="2010 Fireworks" src="http://steveonjava.com/wp-content/uploads/2010/01/fireworks.jpg" alt="" width="375" height="500" /></a></p>
<h1>Happy New Year!</h1>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2010/01/02/2010-blog-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX Layout Secrets</title>
		<link>http://steveonjava.com/2009/12/18/javafx-layout-secrets/</link>
		<comments>http://steveonjava.com/2009/12/18/javafx-layout-secrets/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 20:09:06 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[jug]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=745</guid>
		<description><![CDATA[

		
		
		
		I am very pleased to have Amy Fowler (Aim) presenting on JavaFX Layouts at our January Silicon Valley JavaFX Users Group (SvJugFx).  For those of you who don&#8217;t know Aim, she was a founding member of the Swing team, has done some Rock Star presentations at JavaOne, and is a core member of the JavaFX [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2009/12/18/javafx-layout-secrets/";
		var dzone_title = "JavaFX Layout Secrets";
		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://steveonjava.files.wordpress.com/2009/12/aim.jpg"><img class="alignright size-full wp-image-748" title="Amy Fowler" src="http://steveonjava.files.wordpress.com/2009/12/aim.jpg" alt="" width="126" height="126" /></a>I am very pleased to have Amy Fowler (Aim) presenting on JavaFX Layouts at our January Silicon Valley JavaFX Users Group (SvJugFx).  For those of you who don&#8217;t know Aim, she was a founding member of the Swing team, has done some Rock Star presentations at JavaOne, and is a core member of the JavaFX team focused on all things layout.</p>
<p>If you are doing any JavaFX development at all, this is an event you won&#8217;t want to miss.  The presentation is on January 13th and you can sign-up on the SvJugFx website here:</p>
<p><a href="http://www.svjugfx.org/calendar/12104615/">Click to Sign-Up</a></p>
<p>We will also be streaming the event live from Santa Clara, so if you don&#8217;t live nearby make sure to join us online for the event.  I actually think the folks watching it online are at an advantage, because they get all the inside information in the chat window from JavaFX luminaries like Jim Weaver, Dean Iverson, and Jonathan Giles.</p>
<p>For those of you who missed our December event, we just finished posting Richard Bair&#8217;s December talk on JavaFX entitled &#8220;Intro to JavaFX &#8211; A Rich Client Platform for All Screens.&#8221;  You can view it on Parleys.com complete with synchronized slides by clicking on the image or link below:</p>
<div id="attachment_746" class="wp-caption aligncenter" style="width: 510px"><a href="http://beta.parleys.com/#id=1760&amp;st=5&amp;sl=1"><img class="size-full wp-image-746 " title="Richard Bair on Parleys.com" src="http://steveonjava.files.wordpress.com/2009/12/bairparleys.png" alt="" width="500" height="324" /></a><p class="wp-caption-text">Richard Bair Presenting on JavaFX at the SvJugFx</p></div>
<p style="text-align: center;"><a href="http://beta.parleys.com/#id=1760&amp;st=5&amp;sl=1">Click to View Presentation</a></p>
<p>I hope to see you at our next event!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2009/12/18/javafx-layout-secrets/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SvJugFx Streamed Live with Richard Bair</title>
		<link>http://steveonjava.com/2009/12/08/svjugfx-live-stream-with-richard-bair/</link>
		<comments>http://steveonjava.com/2009/12/08/svjugfx-live-stream-with-richard-bair/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 10:48:26 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[richard bair]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=736</guid>
		<description><![CDATA[

		
		
		
		For those of you who don&#8217;t know, SvJugFx stands for the Silicon Valley JavaFX Users Group.  We will be holding our very first meeting this coming Wednesday with a live, streamed presentation from the world renowned Richard Bair (who is now infamous for divulging JavaFX secrets at Devoxx).
Yes, I said streamed live&#8230;  for those of [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2009/12/08/svjugfx-live-stream-with-richard-bair/";
		var dzone_title = "SvJugFx Streamed Live with Richard Bair";
		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>For those of you who don&#8217;t know, SvJugFx stands for the Silicon Valley JavaFX Users Group.  We will be holding our very first meeting this coming Wednesday with a <strong>live</strong>, <strong>streamed </strong>presentation from the world renowned Richard Bair (who is now infamous for divulging <a href="http://learnjavafx.typepad.com/weblog/2009/12/javafx-13-leakage-at-devoxx-and-%C3%B8redev.html">JavaFX secrets at Devoxx</a>).</p>
<div id="attachment_740" class="wp-caption alignnone" style="width: 260px"><a href="http://steveonjava.files.wordpress.com/2009/12/bair.png"><img class="size-full wp-image-740" title="bair" src="http://steveonjava.files.wordpress.com/2009/12/bair.png" alt="" width="250" height="208" /></a><p class="wp-caption-text">Richard Bair Presenting at Devoxx 2009</p></div>
<p>Yes, I said <strong>streamed live</strong>&#8230;  for those of you who are not fortunate enough to live in Silicon Valley, you can still participate in realtime by doing the following:</p>
<ol>
<li>Sign-up for the SvJugFx meetup group.  This is the primary communication vehicle we will use to announce last-minute changes:<br />
<a href="http://www.svjugfx.org/">http://www.svjugfx.org/</a><br />
(Note: Everyone can sign up for the group, but please only RSVP for the event if you are physically attending)</li>
<li>For the video feed, please go to the following ustream channel:<a href="http://www.ustream.tv/channel/silicon-valley-javafx-user-group">
<p>http://www.ustream.tv/channel/silicon-valley-javafx-user-group</a></li>
<li>And to participate, please log on to Google Moderator at the following URL:<a href="http://moderator.appspot.com/#16/e=d528e">
<p>http://moderator.appspot.com/#16/e=d528e</a></li>
</ol>
<p>The in-person meeting will start on: <strong>Wednesday at 6PM PST</strong><br />
The online streaming will start at latest by: <strong>7PM PST </strong>(possibly earlier)</p>
<p>Please leave enough time to login on both sites and test your internet and video playback capabilities.  You will be able to watch the live video stream on ustream and respond with your own questions (as well as vote other participant&#8217;s questions up and down) via Google Moderator, which we will be monitoring during the presentation.</p>
<p>This is the first time we are trying this format, so we apologize in advance for technical glitches or issues that we are sure will arise.</p>
<blockquote><p>&#8220;Success is the ability to go from failure to failure without losing your enthusiasm.&#8221;</p>
<p style="text-align:right;">&#8211;Winston Churchill</p>
</blockquote>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2009/12/08/svjugfx-live-stream-with-richard-bair/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2009 Devoxx Posts + NetBeans JavaFX Designer Preview</title>
		<link>http://steveonjava.com/2009/12/06/2009-devoxx-posts-netbeans-javafx-designer-preview/</link>
		<comments>http://steveonjava.com/2009/12/06/2009-devoxx-posts-netbeans-javafx-designer-preview/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 22:43:16 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=729</guid>
		<description><![CDATA[

		
		
		
		The two talks I gave at Devoxx 2009 are now available on the Parleys.com website for online viewing.
I would recommend you start with the University Talk, which is the most in-depth tutorial on the JavaFX Language and Platform available today.  This talk also features a guest appearance by Tor Norbye who demonstrated the new NetBeans [...]]]></description>
			<content:encoded><![CDATA[
<!--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://steveonjava.com/2009/12/06/2009-devoxx-posts-netbeans-javafx-designer-preview/";
		var dzone_title = "2009 Devoxx Posts + NetBeans JavaFX Designer Preview";
		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 two talks I gave at Devoxx 2009 are now available on the <a href="http://devoxx.parleys.com/">Parleys.com</a> website for online viewing.</p>
<p>I would recommend you start with the University Talk, which is the most in-depth tutorial on the JavaFX Language and Platform available today.  This talk also features a guest appearance by Tor Norbye who demonstrated the new NetBeans JavaFX Designer Tool (which is distinct from the Authoring Tool):</p>
<div id="attachment_733" class="wp-caption alignnone" style="width: 310px"><a href="http://steveonjava.files.wordpress.com/2009/12/netbeans.png"><img class="size-medium wp-image-733 " title="netbeans" src="http://steveonjava.files.wordpress.com/2009/12/netbeans.png?w=300" alt="" width="300" height="224" /></a><p class="wp-caption-text">Netbeans JavaFX Designer Demo</p></div>
<p><a href="http://devoxx.parleys.com/#st=5&amp;id=1636">http://devoxx.parleys.com/#st=5&amp;id=1636</a></p>
<p>The second is the JavaFX Enterprise Developer talk, which showcased many of the new JFXtras components that we are about to release in the 0.6 JFXtras release (a preview of which is available <a href="http://code.google.com/p/jfxtras/downloads/list">today</a>).  It also goes into detail on JavaFX unit testing with <a href="http://fest.easytesting.org/wiki/pmwiki.php">FEST-JavaFX</a>, which is a tool any enterprise developer should use regularly:</p>
<div id="attachment_730" class="wp-caption alignnone" style="width: 310px"><a href="http://devoxx.parleys.com/#st=5&amp;id=1593"><img class="size-full wp-image-730 " title="devoxx-enterprise" src="http://steveonjava.files.wordpress.com/2009/12/devoxx-enterprise.png" alt="" width="300" height="225" /></a><p class="wp-caption-text">Pro JavaFX - Developing Enterprise Applications</p></div>
<p><a href="http://devoxx.parleys.com/#st=5&amp;id=1636">http://devoxx.parleys.com/#st=5&amp;id=1593</a></p>
<p>Both talks are available now for a small fee to register, which is well worth it for all the great content at the conference.  There was a lot of preparation work that went into these talks, so I hope you enjoy them!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/2009/12/06/2009-devoxx-posts-netbeans-javafx-designer-preview/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
