<?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>sellmic.com &#187; Technology</title>
	<atom:link href="http://sellmic.com/blog/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://sellmic.com/blog</link>
	<description>Augusto's corner of art, code and fun</description>
	<lastBuildDate>Sun, 24 Jul 2011 06:25:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>7 new cool features in Java 7</title>
		<link>http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/</link>
		<comments>http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 21:53:17 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[java 7]]></category>
		<category><![CDATA[jdk 7]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=515</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/' addthis:title='7 new cool features in Java 7' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>The evolution of the Java language and VM continues! Mark Reinhold (Chief Architect of the Java Platform Group) announced yesterday that the first release candidate for Java 7 is available for download, he confirms that the final released date is planned for July 28. For a good overview of the new features and what&#8217;s coming [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/' addthis:title='7 new cool features in Java 7 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/' addthis:title='7 new cool features in Java 7' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><p><a href="http://sellmic.com/blog/wp-content/uploads/2007/01/duke_evolution.png"><img class="aligncenter size-full wp-image-24" title="Evolving to Java 7" src="http://sellmic.com/blog/wp-content/uploads/2007/01/duke_evolution.png" alt="" width="450" height="209" /></a></p>
<p>The evolution of the Java language and VM continues! Mark Reinhold (Chief Architect of the Java Platform Group) <a href="http://mreinhold.org/blog/jdk7-rc"> announced yesterday</a> that the first release candidate for Java 7 is <a href="http://jdk7.java.net/download.html"> available for download</a>, he <a href="https://twitter.com/#!/mreinhold/status/89049145041625088">confirms</a> that the final released date is planned for July 28.</p>
<p>For a good overview of the new features and what&#8217;s coming next in Java 8, <a href="http://medianetwork.oracle.com/media/show/16796">I recommend this video on the Oracle Media Network</a>, which features Adam Messinger, Mark Reinhold, John Rose and Joe Darcy. I think Mark sums up Java 7 very well when describing it as an evolutionary release, with good number &#8220;smaller&#8221; changes that make for a great update to the language and platform.</p>
<p>I had a chance to play a bit with the release candidate (made easier by the Netbeans 7  JDK 7 support!), and decided to list 7 features (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html">full list is here</a>) I&#8217;m particularly excited about. Here they are;</p>
<p><strong>1. Strings in switch Statements (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html">doc</a>)</strong></p>
<p>Did you know previous to Java 7 you could only do a switch on <em>char</em>, <em>byte</em>, <em>short</em>, <em>int</em>, <em>Character</em>, <em>Byte</em>, <em>Short</em>, <em>Integer</em>, or an <em>enum </em>type (<a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html">spec</a>)? Java 7 adds Strings making the switch instruction much friendlier to String inputs. The alternative before was to do with with if/else if/else statements paired with a bunch of String.equals() calls. The result is much cleaner and compact code.</p>
<pre class="java" name="code">    public void testStringSwitch(String direction) {
        switch (direction) {
             case "up":
                 y--;
             break;

             case "down":
                 y++;
             break;

             case "left":
                 x--;
             break;

             case "right":
                 x++;
             break;

            default:
                System.out.println("Invalid direction!");
            break;
        }
    }</pre>
<p><strong>2. Type Inference for Generic Instance Creation (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html">doc</a>)</strong></p>
<p>Previously when using generics you had to specify the type twice, in the declaration and the constructor;</p>
<pre class="java" name="code">List&lt;String&gt; strings = new ArrayList&lt;String&gt;();</pre>
<p>In Java 7, you just use the diamond operator without the type;</p>
<pre class="java" name="code">List&lt;String&gt; strings = new ArrayList&lt;&gt;();</pre>
<p>If the compiler can infer the type arguments from the context, it does all the work for you. Note that you have always been able do a &#8220;<em>new ArrayList()</em>&#8221; without the type, but this results in an unchecked conversion warning.</p>
<p>Type inference becomes even more useful for more complex cases;</p>
<pre class="java" name="code">// Pre-Java 7
// Map&lt;String,Map&lt;String,int&gt;&gt;m=new HashMap&lt;String, Map&lt;String,int&gt;&gt;();

// Java 7
Map&lt;String, Map&lt;String, int&gt;&gt; m = new HashMap&lt;&gt;();</pre>
<p><strong>3. Multiple Exception Handling Syntax (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html">doc</a>)</strong></p>
<p><a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html"></a>Tired of repetitive error handling code in &#8220;exception happy&#8221; APIs like <em>java.io</em> and <em>java.lang.reflect</em>?</p>
<pre class="java" name="code">try {
    Class a = Class.forName("wrongClassName");
    Object instance = a.newInstance();
} catch (ClassNotFoundException ex) {
    System.out.println("Failed to create instance");
} catch (IllegalAccessException ex) {
    System.out.println("Failed to create instance");
} catch (InstantiationException ex) {
   System.out.println("Failed to create instance");
}</pre>
<p>When the exception handling is basically the same, the improved catch operator now supports multiple exceptions in a single statement separated by &#8220;|&#8221;.</p>
<pre class="java" name="code">try {
    Class a = Class.forName("wrongClassName");
    Object instance = a.newInstance();
} catch (ClassNotFoundException | IllegalAccessException |
   InstantiationException ex) {
   System.out.println("Failed to create instance");
}</pre>
<p>Sometimes developers use a &#8220;<em>catch (Exception ex)</em> to achieve a similar result, but that&#8217;s a dangerous idea because it makes code catch exceptions it can&#8217;t handle and instead should bubble up (IllegalArgumentException, OutOfMemoryError, etc.).<br />
<span id="more-515"></span><br />
<strong>4. The try-with-resources Statement (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html">doc</a>)</strong></p>
<p>The new try statement allows opening up a &#8220;resource&#8221; in a try block and automatically closing the resource when the block is done.</p>
<p>For example, in this piece of code we open a file and print line by line to stdout, but pay close attention to the finally block;</p>
<pre name="code" class="java">
        try {
            in = new BufferedReader(new FileReader("test.txt"));

            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (in != null) in.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
</pre>
<p>When using a resource that has to be closed, a finally block is needed to make sure the clean up code is executed even if there are exceptions thrown back (in this example we catch IOException but if we didn&#8217;t, finally would still be executed). The new try-with-resources statement allows us to automatically close these resources in a more compact set of code;</p>
<pre name="code" class="java">
       try (BufferedReader in=new BufferedReader(new FileReader("test.txt")))
       {
            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
</pre>
<p>So &#8220;in&#8221; will be closed automatically at the end of the try block because it implements an interface called <a href="http://download.java.net/jdk7/docs/api/java/lang/AutoCloseable.html">java.lang.AutoCloseable</a>. An additional benefit is we don&#8217;t have to call the awkward IOException on close(), and what this statement does is &#8220;suppress&#8221; the exception for us (although there is a mechanism to get that exception if needed, <a href="http://download.java.net/jdk7/docs/api/java/lang/Throwable.html#getSuppressed()">Throwable.getSuppressed()</a>).</p>
<p><strong>5. Improved File IO API (docs <a href="http://download.oracle.com/javase/7/docs/technotes/guides/io/enhancements.html#7">1</a>, <a href="http://download.oracle.com/javase/tutorial/essential/io/notification.html">2</a>)</strong></p>
<p>There are quite a bit of changes in the java.nio package. Many are geared towards performance improvements, but long awaited enhancements over java.io (specially java.io.File) have finally materialized in a new package called <a href="http://download.java.net/jdk7/docs/api/java/nio/file/package-summary.html#package_description">java.nio.file</a>.</p>
<p>For example, to read a small file and print all the lines (see example above);</p>
<pre name="code" class="java">
       List&lt;String&gt; lines =  Files.readAllLines(
       FileSystems.getDefault().getPath("test.txt"), StandardCharsets.UTF_8);

       for (String line : lines) System.out.println(line);
</pre>
<p><em>java.nio.file.Path</em> is an interface that pretty much serves as a replacement for <em>java.io.File</em>, we need a <em>java.nio.file.FileSystem </em>to get paths, which you can get by using the <em>java.nio.file.FileSystems</em> factory (getDefault() gives you the default file system).</p>
<p>java.nio.file.Files then provides static methods for file related operations. In this example we can read a whole file much more easily by using readAllLines(). This class also has methods to create symbolic links, which was impossible to do pre-Java 7. Another feature long overdue is the ability to set file permissions for POSIX compliant file systems via the Files.setPosixFilePermissions method. These are all long over due file related operations, impossible without JNI methods or System.exec() hacks.</p>
<p>I didn&#8217;t have time to play with it but this package also contains a very interesting capability via the WatchService API which allows notification of file changes. You can for example, register directories you want to watch and get notified when a file is added, removed or updated. Before, this required manually polling the directories, which is not fun code to write.</p>
<p>For more on monitoring changes <a href="http://download.oracle.com/javase/tutorial/essential/io/notification.html">read this tutorial from Oracle</a>.</p>
<p><strong>6. Support for Non-Java Languages: invokedynamic (<a href="http://download.oracle.com/javase/7/docs/technotes/guides/vm/multiple-language-support.html">doc</a>)</strong></p>
<p>The first new instruction since Java 1.0 was released and introduced in this version is called invokedynamic. Most developers will never interact or be aware of this new bytecode. The exciting part of this feature is that it improves support for compiling programs that use dynamic typing. Java is statically typed (which means you know the type of a variable at compile time) and dynamically typed languages (like Ruby, bash scripts, etc.) need this instruction to support these type of variables.</p>
<p>The JVM already supports many types of non-Java languages, but this instruction makes the JVM more language independent, which is good news for people who would like to implement components in different languages and/or want to inter-operate between those languages and standard Java programs.</p>
<p><strong>7. JLayerPane (<a href="http://download.oracle.com/javase/tutorial/uiswing/misc/jlayer.html">doc</a>)</strong></p>
<p>Finally, since I&#8217;m a UI guy, I want to mention JLayerPane. This component is similar to the one provided in the JXLayer project. I&#8217;ve used JXLayer many times in the past in order to add effects on top of Swing components. Similarly, JLayerPane allows you to decorate a Swing component by drawing on top of it and respond to events without modifying the original component.</p>
<p>This example from the JLayerPane tutorial shows a component using this functionality, providing a &#8220;spotlight&#8221; effect on a panel.</p>
<p><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/jlayer-spotlight.png"><img src="http://sellmic.com/blog/wp-content/uploads/2011/07/jlayer-spotlight.png" alt="" title="jlayer-spotlight" width="300" height="200" class="aligncenter size-full wp-image-603" /></a></p>
<p>You could also blur the entire window, draw animations on top of components, or create transition effects.</p>
<p>And that&#8217;s just a subset of the features, Java 7 is a long overdue update to the platform and language which offers a nice set of new functionality. The hope is the time from Java 7 to 8 is a lot shorter than from 6 to 7!</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/' addthis:title='7 new cool features in Java 7 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2011/07/08/7-new-cool-features-in-java-7/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Facebook Friend Lists suck when compared to Google+ Circles</title>
		<link>http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/</link>
		<comments>http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 04:57:22 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=478</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/' addthis:title='Facebook Friend Lists suck when compared to Google+ Circles' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>Early reviews of Google+ are in and they&#8217;re generally positive. Obviously, not everybody love Google&#8217;s latest social network experiment, but I&#8217;d like to debunk one piece of criticism that keeps being repeated over and over. And that is, that the Google+ Circles feature is basically the same thing as Facebook&#8217;s Friend Lists. Facebook Friend Lists [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/' addthis:title='Facebook Friend Lists suck when compared to Google+ Circles ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/' addthis:title='Facebook Friend Lists suck when compared to Google+ Circles' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><p style="text-align: center;"><a href="http://sellmic.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=8060"><img class="aligncenter size-full wp-image-481" title="Google+ Circle Magic" src="http://sellmic.com/blog/wp-content/uploads/2011/07/google-circles-medl.jpg" alt="" width="589" height="429" /></a></p>
<p>Early <a href="http://www.engadget.com/2011/06/28/google-invite-received-we-go-hands-on/">reviews</a> of Google+ are in and<a href="http://www.wired.com/wiredscience/2011/06/my-first-impressions-of-google/"> they&#8217;re</a> <a href="http://news.cnet.com/8301-1023_3-20075555-93/a-hands-on-look-at-google-using-google/">generally</a> <a href="http://www.cnn.com/2011/TECH/mobile/07/01/google.plus.review.gahran/">positive</a>. Obviously, <a href="http://www.businessinsider.com/google-plus-launch-embarrassing-2011-6">not everybody love Google&#8217;s latest social network experiment</a>, but I&#8217;d like to debunk one piece of criticism that keeps being repeated over and over. And that is, that the Google+ Circles feature is basically the same thing as Facebook&#8217;s Friend Lists.</p>
<p><a href="http://www.facebook.com/help/?page=768">Facebook Friend Lists</a> lets users group friends under different lists; family, co-workers, etc., so that you can share things with subsets of your overall Facebook friends. As in real life, you don&#8217;t share everything with all the people you know, and with the Friend Lists feature you can emulate that. Sounds very similar to Circles right?</p>
<p>The problem with Friend Lists is the poor usability of this feature. Unlike Circles, you get the feeling that this feature was tacked on, and that it&#8217;s not a central component of the service. Creating and assigning people to Circles in Google+ is a lot easier and friendlier than managing Friend Lists, just look at this <a href="http://www.youtube.com/watch?v=ocPeAdpe_A8&amp;feature=relmfu">video from Google</a> which gives you a good overview of how the Google interface handles this.</p>
<p>The main problem with Friend Lists is that once setup they&#8217;re a pain to use, which is probably why a lot of Facebook users either don&#8217;t know about this feature or don&#8217;t bother to use it.</p>
<p>Let&#8217;s try to share a message only intended for our family;</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-01.jpg"><img class="size-full wp-image-486 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="Facebook padlock" src="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-01.jpg" alt="" width="400" height="134" /></a></p>
<p style="text-align: left;">First non-obvious thing you have to do is click on the padlock icon. This icon gives you 4 choices; &#8220;<em>Everyone</em>&#8220;, &#8220;<em>Friends of Friends</em>&#8220;, &#8220;<em>Friends Only</em>&#8221; and &#8220;<em>Customize</em>&#8220;. Unlike Circles, it doesn&#8217;t list your Circles of friends or in this case your Friend Lists. What you have to do here is select the &#8220;Customize&#8221; option which opens up the &#8220;<em>Custom Privacy</em>&#8221; dialog.</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-02.jpg"><img class="size-full wp-image-488 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="Specific People..." src="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-02.jpg" alt="" width="400" height="187" /></a></p>
<p style="text-align: left;">The &#8220;Custom Privacy&#8221; dialog now gives us another 4 choices; &#8220;<em>Friends of Friends</em>&#8220;, &#8220;<em>Friends Only</em>&#8220;, &#8220;<em>Specific People&#8230;</em>&#8220;, &#8220;<em>Only Me</em>&#8220;. Again, Facebook decides not to show you your Friend Lists, and to select one you have to chose the &#8220;Specific People&#8230;&#8221; option. Now, in the previous screen, we already told the interface we don&#8217;t want to send a message to &#8220;Friends Only&#8221; or &#8220;Friends of Friends&#8221;, why is it showing us these options again? Bad UI design.</p>
<p style="text-align: left;">There&#8217;s also the strange option to only share an item with yourself (&#8220;<em>Only Me</em>&#8220;), I guess that&#8217;s usefull to save things and share them later. But instead of listing this, I&#8217;d rather see my family Friend List.</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-03.jpg"><img class="size-full wp-image-492 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="Finding the family Friend List" src="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-03.jpg" alt="" width="589" height="166" /></a></p>
<p style="text-align: left;">To find our desired list, again we select <em>&#8220;Specific People&#8230;</em>&#8220;<strong> (1)</strong>, which shows an empty text entry field. As we start typing &#8220;f&#8221; for family<strong> (2)</strong>, Facebook is nice enough to show us friends with first or last names that contain the letter &#8220;f&#8221;. Note that I have so many friends with that letter that in none of the choices my family Friend List shows up. After typing a bit more, &#8220;fa&#8221;<strong> (3)</strong>, we still see other friends but at the bottom of the choices we finally see our family Friend List. Finally we select it <strong>(4)</strong> and our family list is added to the field.</p>
<p style="text-align: left;">Another bad design choice is how Friend Lists are mixed in with regular (singular) friends, at the very least it would be nice to get a visual hint that something is a Friend List vs a singular specific friend.</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-04.jpg"><img class="size-full wp-image-499 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="&quot;Custom edit&quot;" src="http://sellmic.com/blog/wp-content/uploads/2011/07/facebook-friend-lists-04.jpg" alt="" width="400" height="126" /></a></p>
<p style="text-align: left;">We then click <em>&#8220;Save Setting</em>&#8221; at the bottom right of the dialog and go back to our Facebook wall. Obviously, the last step is to press the &#8220;share&#8221; button, <em>unfortunately Facebook doesn&#8217;t make it clear what Friend List or group of friends I&#8217;m sharing with</em>. To see that, you need to click again on the padlock icon which instead of indicating what Friend List is selected, it shows a cryptic &#8220;<em>Custom edit</em>&#8221; selected item on the padlock popup menu. Not clearly showing who we&#8217;re sharing with makes it easy to share the wrong thing with the wrong group of people by accident. Again, bad UI design.</p>
<p style="text-align: left;">And that&#8217;s how Friend Lists are used in Facebook. The feature is hidden via the padlock icon, the option is not clear (&#8220;<em>Customize</em>&#8220;), selection is cumbersome, and Facebook does its best to hide away Friend Lists from the user. It&#8217;s almost as if the UI is designed on purpose to discourage the use of this feature.</p>
<p style="text-align: left;">In contrast, in the Google+ interface, you simply type the text you want to share (or image, video, etc.) and then click on the &#8220;Share&#8221; button;</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/google-plus-circle-021.jpg"><img class="size-full wp-image-504 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="Google+ sharing" src="http://sellmic.com/blog/wp-content/uploads/2011/07/google-plus-circle-021.jpg" alt="" width="400" height="358" /></a></p>
<p style="text-align: left;">From right there you can select with Circle of friends you want to share with. The Circle can be typed in or selected from the list, if it&#8217;s not shown in the list simply clicking &#8220;<em>more &#8230;</em>&#8221; will show the rest of the Circles. Unlike Facebook, Circles are not hidden but featured front and center. In this case 2 clicks allow me to quickly select who I want to share with.</p>
<p style="text-align: center;"><a href="http://sellmic.com/blog/wp-content/uploads/2011/07/google-plus-circle-03.jpg"><img class="size-full wp-image-505 aligncenter" style="margin-top: 0px; margin-bottom: 0px; border: 1px solid gray;" title="Sharing with the &quot;family&quot; Circle" src="http://sellmic.com/blog/wp-content/uploads/2011/07/google-plus-circle-03.jpg" alt="" width="400" height="357" /></a></p>
<p style="text-align: left;">Another key usability item to note, once a Circle is selected, Google+ makes it very clear who you are sharing with. In this example we can see the family Circle highlighted in blue and with a Circle icon to denote it represents a group of people. Singular friends added to the group, will also be shown highlighted in blue but without the Circle icon to differentiate them with Circles.This is much better than clicking on a padlock and trying to figure out who &#8220;<em>Custom edit</em>&#8221; is.</p>
<p style="text-align: left;">Simply put, when contrasting both approaches we note that;</p>
<ol>
<li>Google has spent a lot more effort on usability in their User Interface design; minimizing clicks, removing the need for additional dialogs, preventing users from sharing information with an unintended Circle, etc.</li>
<li>Circles is a key and central feature of Google+, whereas Friend Lists seems more like a feature added as an afterthought, rather than a fundamental aspect of how people share information with different groups of friends.</li>
</ol>
<p>It is clear that Google+ Circles are friendlier and easier to use than Facebook Lists. On this one central aspect of sharing, it seems Google has done their homework while Facebook really needs to evaluate and reinvent their approach to usability.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/' addthis:title='Facebook Friend Lists suck when compared to Google+ Circles ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2011/07/01/facebook-friend-lists-suck-when-compared-to-googleplus-circles/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>James Gosling explains why he quit Oracle</title>
		<link>http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/</link>
		<comments>http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 11:50:40 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=424</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/' addthis:title='James Gosling explains why he quit Oracle' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>Uh oh &#8230; &#8220;Why I Quit Oracle&#8221; eWEEK got quite the scoop interviewing Java creator James Gosling, where he finally spills the beans on why he quit Oracle earlier this year. If you are a tech geek, or more likely a Java geek, you probably know who Gosling is. I first saw him presenting at [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/' addthis:title='James Gosling explains why he quit Oracle ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/' addthis:title='James Gosling explains why he quit Oracle' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><div id="attachment_425" class="wp-caption alignnone" style="width: 599px"><img class="size-full wp-image-425" title="James Gosling &amp; me at JavaOne 2006" src="http://sellmic.com/blog/wp-content/uploads/2010/09/james_gosling.jpg" alt="james_gosling" width="589" height="323" /><p class="wp-caption-text">A photo I took with James Gosling, during happier times (for Sun)</p></div>
<p>Uh oh &#8230; <a href="http://www.eweek.com/c/a/Application-Development/Java-Creator-James-Gosling-Why-I-Quit-Oracle-813517/">&#8220;Why I Quit Oracle&#8221;</a></p>
<p>eWEEK got quite the scoop interviewing Java creator <a href="http://en.wikipedia.org/wiki/James_Gosling">James Gosling</a>, where he finally spills the beans on why <a href="http://nighthacks.com/roller/jag/entry/time_to_move_on">he quit Oracle</a> earlier this year.</p>
<p>If you are a tech geek, or more likely a Java geek, you probably know who Gosling is. I first saw him presenting at my first JavaOne, and in JavaOne 2006 was fortunate enough to talk to him about how we were using Java for one of our projects and take a picture with him.</p>
<p>It&#8217;s hard to image a JavaOne without Gosling&#8217;s on stage and infectious enthusiasm. His tradition of <a href="http://www.youtube.com/watch?v=PC5HrW2DY4o&amp;feature=related">catapulting T-shirts into the audience</a> will be missed (maybe somebody at Oracle will give it a try? Let me know).</p>
<p>In the interview he mentions several things that contributed to his discontent; his salary, a modified job title, and perhaps more importantly a feeling that he had lost quite a bit of control and influence over the important decisions dealing with Java.</p>
<p>Gosling is a bit uncharacteristically harsh when he describers his previous boss,&#8221;<em>He’s [Ellison] the kind of person that just gives me the creeps</em>,”.</p>
<p><em><strong>Ouch.</strong></em></p>
<p>I have mixed feeling about this article. At first glance, and considering the timing (week of Oracle&#8217;s first JavaOne), it sounds like sour grapes. That was my first reaction. To be fair to Oracle, I don&#8217;t think it&#8217;s horribly unreasonable that if they acquired a company that wasn&#8217;t able to sutain itself, a lot of things were going to change, and they all include a lot of what James mentions (who makes decisions, job titles, how you are compensated).</p>
<p>A good example is this:</p>
<blockquote><p>However, at Sun, any executive that was a vice president or above was given what amounted to a bump or bonus based on the performance of the company. “In a mediocre year you did OK, but in a good year you did great” in terms of this compensation, he said.</p></blockquote>
<p>Perhaps this was part of the problem? Maybe Sun executives shouldn&#8217;t have been getting bonuses at all in a &#8220;mediocre year&#8221;. I&#8217;m not sure Oracle is being entirely unreasonable here.</p>
<p>On the other hand, based on Gosling&#8217;s description, it sounds like things could have been handled much better. He mentions that he felt he and his peers felt that their ability to decide anything was gone, and it&#8217;s completely understandable that this would be extremely frustrating. Specially when he&#8217;s the creator of the language, and is a well known and respected &#8220;tech celebrity&#8221; (do people in the real world know there&#8217;s such a thing?).</p>
<p>At the end of the day, Gosling has every right to complain, just like Oracle has every right to make internal decisions about how to run their business.</p>
<p>I hope James Gosling can still find ways to contribute to the project he gave birth to, just like people like <a href="http://gafter.blogspot.com/">Gafter </a>and <a href="http://www.javapuzzlers.com/bios.html">Bloch </a>continue to be involved even though they work at different companies now (I mean Gafter is at Microsoft of all places!!!).</p>
<p>You can follow what James Gosling is up to at <a href="http://nighthacks.com/roller/jag/">his blog</a>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/' addthis:title='James Gosling explains why he quit Oracle ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2010/09/23/james-gosling-explains-why-he-quit-oracle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Goodbye JavaFX Script, hello JavaFX 2.0</title>
		<link>http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/</link>
		<comments>http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 06:19:01 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[javafx]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=415</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/' addthis:title='Goodbye JavaFX Script, hello JavaFX 2.0' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>JavaFX Script is officially dead. Oracle has decided to continue investing in JavaFX as the UI platform for Java client applications, but at the same time they&#8217;ve realized that the JavaFX Script language was probably a limiting factor in the general adoption of their RIA technology. History On November 8, 2006, Sun engineer Chris Oliver [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/' addthis:title='Goodbye JavaFX Script, hello JavaFX 2.0 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/' addthis:title='Goodbye JavaFX Script, hello JavaFX 2.0' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><p><img class="alignnone size-full wp-image-417" title="Goodbye JavaFX Script, we hardly knew ye" src="http://sellmic.com/blog/wp-content/uploads/2010/09/goodbye_javafx_script1.jpg" alt="Goodbye JavaFX Script, we hardly knew ye" width="589" height="340" /></p>
<p><a href="http://en.wikipedia.org/wiki/JavaFX_Script">JavaFX Script</a> is <a href="http://www.dzone.com/links/r/oracle_to_discontinue_javafx_script_will_use_java.html">officially dead</a>.</p>
<p>Oracle has decided to continue investing in JavaFX as the UI platform for Java client applications, but at the same time they&#8217;ve realized that the JavaFX Script language was probably a limiting factor in the general adoption of their RIA technology.</p>
<p><strong>History</strong></p>
<p>On November 8, 2006, Sun engineer Chris Oliver published an <a href="http://blogs.sun.com/chrisoliver/entry/f3">entry in his blog</a> introducing a project he had been working on called &#8220;F3&#8243;. His <a href="http://blogs.sun.com/chrisoliver/entry/f3">blog entry</a> explained the general concepts behind the project;</p>
<blockquote><p>My name is Chris Oliver. I came to Sun through their acquisition of Seebeyond in September 2005. I&#8217;d like to present something about my current work – it’s not public yet but it should be open-sourced on java.net shortly.</p>
<p>My project is called F3 which stands for “Form follows function”, and its purpose was to explore making GUI programming easier in general.</p>
<p>F3 is actually a declarative Java scripting language with static typing for good IDE support and compile-time error reporting (unlike JavaScript&#8230;), type-inference, declarative syntax, and automatic data-binding with full support for 2d graphics and standard Swing components as well as declarative animation. You can also import java classes, create new Java objects, call their methods, and implement Java interfaces.</p></blockquote>
<p>Chris&#8217; first blog post on F3 introduced code snippets showing off the main features of the language, and a <a href="http://blogs.sun.com/chrisoliver/entry/more_f3_demos">follow up post had a set of very impressive demos</a> meant to show off the language and how it could compete with other RIA technologies like Flash.</p>
<p>At <a href="http://sellmic.com/blog/2007/05/08/javafx/">JavaOne 2007 F3 was rebranded as JavaFX Script</a>, and we were shown some cool demos, like this <a href="http://sellmic.com/blog/2007/05/11/javafx-pdf-viewer-demo/">JavaFX PDF Reader</a> which unfortunately was never released.</p>
<p><a href="http://sellmic.com/blog/2008/12/04/javafx-is-here/"> JavaFX 1.0 was released on December, 2008</a>.</p>
<p>At JavaOne 2009,<a href="http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/"> Sun showed off a much needed JavaFX designer tool</a>. The demo showed how the tool would allow for visual design of JavaFX applications on different &#8220;screens&#8221; (desktop, mobile, TV, etc.). This tool hasn&#8217;t been released to the public, instead there&#8217;s a more developer oriented Netbeans plugin with Matisse like UI design capabilities that was released a while ago.</p>
<p><strong>But it&#8217;s not Java</strong></p>
<p>The complaint I would often hear from developers when talking about JavaFX is that it was not Java. Unlike Java, F3 was designed from the beginning with UIs in mind. Chris Oliver wanted the flexibility of a declarative language, and decided that XML was not the best fit for this, thus the need for the F3 language.</p>
<p>The problem was that the new language was very different from Java. <a href="http://sellmic.com/blog/2008/05/18/my-javafx-presentation-at-panamajug-2007-javafx-en-espanol/">I remember doing a JavaFX Script presentation for a JUG in Panama</a>, and even after having written a few programs in it, the context switch between it and Java was quite big for me.</p>
<p>At the last JavaOne I attended, I could overhear a lot of people rejecting the idea of learning yet another new language just to do a Java based UI. Not only a new language, but one that was so different from what they were used to. People often forget that one of the reasons Java dominates the development landscape today is because it was so similar to it&#8217;s predecessors; C and C++. While the benefits of a new UI focused language are many (the binding features alone in JavaFX Script are a good example), one thing that I&#8217;ve noticed is that modern UIs are being done in less exotic ways; just take a look at the UI framework in Android which is Java language based and on iPhone which uses Objective C.</p>
<p><strong>JavaFX technology in Java, and other languages</strong></p>
<p>Oracle has published the proposed <a href="http://javafx.com/roadmap/">roadmap for JavaFX 2.0</a>. The key standout feature listed there is <em>&#8220;Port JavaFX Script APIs to Java&#8221;</em>, which will make JavaFX not only easily available to Java developers but to those who use other dynamic languages like Scale, JRuby, Groovy, Javascript, etc. The roadmap also mentions<a href="http://openjdk.java.net/projects/lambda/"> support for lambda expressions (closures)</a>, which I can already see being very useful for UI programming.</p>
<p>There are other notable features listed there, like additional UI controls, web views and integration with HTML5, HD playback, etc. The roadmap mentions the binding API, I&#8217;m curious to see how it would be integrated in the core Java language.</p>
<p>I think Oracle has made the right move here, the JavaFX stack is already pretty advanced and shows a lot of promise. It should be used more, but was being hindered by the lack of adoption of JavaFX Script. Porting these APIs to Java, and supporting other dynamic languages should allow a lot more developers to leverage the power of JavaFX.</p>
<p>Sorry for the long post, but I wanted to include a bit of history at the beginning about F3. I wonder how Chris Oliver and the other engineers that worked so hard on the core JavaFX Script language feel about this development. Hopefully they feel pretty proud about their work, because even though the language is being dropped, it seems the core of JavaFX is pretty strong. Adoption should grow now that there is no &#8220;new language&#8221; excuse.</p>
<p>At least that&#8217;s what I&#8217;m hoping for.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/' addthis:title='Goodbye JavaFX Script, hello JavaFX 2.0 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2010/09/21/goodbye-javafx-script-hello-javafx-2-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;Terror Messages&#8221; (cute error messages that scare you based on context)</title>
		<link>http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/</link>
		<comments>http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 01:06:14 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[delta]]></category>
		<category><![CDATA[error message]]></category>
		<category><![CDATA[flight]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wi-fi]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=397</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/' addthis:title='&#8220;Terror Messages&#8221; (cute error messages that scare you based on context)' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>So Delta has a cute &#8220;We&#8217;re Experiencing Some Turbulence&#8221; error message when they have an internal error on their website. I&#8217;ve seen this error many times before, I think the first time I chuckled a bit. The other day I was enjoying the new Wi-Fi Delta offers in some of their flights. I checked my [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/' addthis:title='&#8220;Terror Messages&#8221; (cute error messages that scare you based on context) ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/' addthis:title='&#8220;Terror Messages&#8221; (cute error messages that scare you based on context)' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><p><img class="aligncenter size-full wp-image-398" title="Delta website error message" src="http://sellmic.com/blog/wp-content/uploads/2009/08/delta_turbulence_error_mess.jpg" alt="Delta website error message" width="589" height="356" /></p>
<p>So Delta has a cute &#8220;<strong>We&#8217;re Experiencing Some Turbulence</strong>&#8221; error message when they have an internal error on their website. I&#8217;ve seen this error many times before, I think the first time I chuckled a bit.</p>
<p>The other day I was enjoying the new <a href="http://www.delta.com/traveling_checkin/inflight_services/products/wi-fi.jsp">Wi-Fi Delta offers</a> in some of their flights. I checked my email, my facebook account, everything worked great. Then it occured to me to check my delta account. I was wondering if they credit your miles after take off or later when you land (yeah I was bored). Suddenly, I get the familiar error message; &#8220;<strong>We&#8217;re Experiencing Some Turbulence</strong>&#8220;. I go, &#8220;<em>oh crap</em>&#8221; what&#8217;s going on? For a couple of seconds I forgot I was getting an error message for a website, and thought I was reading a message about my flight, a problem serious enough that they bothered to notify me via the new Wi-Fi connection.</p>
<p>Now I did say it was a couple of seconds, of course I quickly realized this had nothing to do with my flight. But for a couple of seconds I did get a bit freaked out by the message, specially seeing it on my browser. It got me thinking; how did my brain go into alert mode that quick when I know better?</p>
<p>It was all about <em><strong>context</strong></em>.</p>
<p>The context in this situation is this; traveling on Delta flight, on the official Delta website, checking my account and current flight information and then getting a message mentioning a very specific phrase about air travel. Obviously, if I get this message at my home, the train or the airport there&#8217;s no problem. Everything changes once I&#8217;m on a situation that is directly related to the term used in the error message.</p>
<p>So it&#8217;s probably not a good idea to keep these cute error messages, when you think that there&#8217;s a new context for use of this site. Before it wasn&#8217;t possible to read this from a plane but now it is. It just highlights how sometimes when you consider usability, you have to think about all the possible scenarios that your users will be in while interacting your application.</p>
<p>BTW, I&#8217;d love to hear from other people on potential error messages that might be scary in other contexts.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/' addthis:title='&#8220;Terror Messages&#8221; (cute error messages that scare you based on context) ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2009/08/13/terror-messages-cute-error-messages-that-scare-you-based-on-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX Authoring tool demo at JavaOne 2009 (with video) &#8211; updated</title>
		<link>http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/</link>
		<comments>http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 20:14:50 +0000</pubDate>
		<dc:creator>Augusto</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[authoring tool]]></category>
		<category><![CDATA[design tool]]></category>

		<guid isPermaLink="false">http://sellmic.com/blog/?p=257</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/' addthis:title='JavaFX Authoring tool demo at JavaOne 2009 (with video) &#8211; updated' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div>During this morning&#8217;s JavaOne general session, the &#8220;James Gosling&#8217;s Toy Show&#8221;, Tor Norbye gave another preview of the &#8220;JavaFX Authoring Tool&#8221; (TODO: Needs a cool codename!!!). In 2007 when I blogged about the original JavaFX announcement at that year&#8217;s JavaOne, one of my first questions was about the tooling. At first we basically just had [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/' addthis:title='JavaFX Authoring tool demo at JavaOne 2009 (with video) &#8211; updated ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/' addthis:title='JavaFX Authoring tool demo at JavaOne 2009 (with video) &#8211; updated' ><a class="addthis_button_facebook_like"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone"></a><a class="addthis_button_compact"></a></div><p style="text-align: center;"><img class="aligncenter size-full wp-image-272" title="javafx_authoring_tool" src="http://sellmic.com/blog/wp-content/uploads/2009/06/javafx_authoring_tool.jpg" alt="javafx_authoring_tool" width="450" height="259" /></p>
<p>During this morning&#8217;s JavaOne general session, the &#8220;James Gosling&#8217;s Toy Show&#8221;, Tor Norbye gave another preview of the &#8220;JavaFX Authoring Tool&#8221; (TODO: Needs a cool codename!!!).</p>
<p>In 2007 when I blogged about <a href="http://sellmic.com/blog/2007/05/08/javafx/">the original JavaFX announcement at that year&#8217;s JavaOne</a>, one of my first questions was about the tooling. At first we basically just had JFXPad to play around, then came more integration with Netbeans. However, these are not designer tools, and a RIA application needs more access points of people who are not software developers. This was partially answered with the JavaFX plugins for tools like Adobe Photoshop and Illustrator, but what was really missing was a visual place to bring content together interactively and created animated content.</p>
<p><span id="more-257"></span></p>
<p><img class="aligncenter size-full wp-image-268" title="timeline" src="http://sellmic.com/blog/wp-content/uploads/2009/06/timeline.jpg" alt="timeline" width="450" height="134" /></p>
<p>So now we see glimpses of the JavaFX authoring environment that Sun plans to release. The tool seems to be in the early stages of development and it is unclear when it will be released. However, some of the features look very compeling and familiar. Like any of the versions of the Adobe Flash tools, it features a timeline with the ability to edit key frames and create animated transitions. It also allows you to drag and drop media and JFX components (including the new 1.2 controls) to compose your app.</p>
<p>The coolest feature is that the tool aims to deliver on the &#8220;multiple screens&#8221; theme of JFX, you can easily output your project for a JFX desktop application, mobile and the plan is to have output for TV applications.</p>
<p>The following videos demonstrate the basics of the tools &#8230;</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/FUHgnUDP6XA&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FUHgnUDP6XA&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>And this next video features the visual binding feature that allows you to graphically bind properties between target and source objects, with inline display of the properties.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/5NGDdXdQgU0&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5NGDdXdQgU0&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>The tool looks nice, but it&#8217;s too early to compare it to any of the equivalent Adobe or Microsoft tools. To me this type of tool is key to adoption, so I wish the team the best of luck and that they hopefully find an effective way to get feedback via previews just do sanity checks on the tool (hint, hint, I wouldn&#8217;t mind preview access <img src='http://sellmic.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>One final note, I think there&#8217;s a need for a JFXMattise like tool. I don&#8217;t know if this tool is it, I don&#8217;t think so. Basically, maybe a subset of this tool, embedded in Netbeans that allows developer type people to visually compose their JFX applications, with an emphasis on visual UI control and layout composition. As it stands, I think there&#8217;s a big gap there even if this tool is released.</p>
<p><strong>Update 1: </strong>I added another video showing how you can edit &#8220;multiple screens&#8221;. That is, tweak your JFX application in other devices with different resolutions out of a main project. In this case, you can have this full resolution application with several smaller windows targeted for mobile devices. The cool thing is that you can tweak one of the target devices to say have less buttons so it can still be tailored for other platforms.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/8a988IyTHVU&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/8a988IyTHVU&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>Also Tor has <a href="http://blogs.sun.com/tor/entry/finally_over">posted a blog entry</a> about the tool (which is the current project he&#8217;s working on).</p>
<p><strong>Update 2:</strong> <a href="http://sellmic.com/blog/2009/06/13/new-screenshots-of-the-javafx-design-tool/">New screenshots of the JavaFX Design Tool</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/' addthis:title='JavaFX Authoring tool demo at JavaOne 2009 (with video) &#8211; updated ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

