<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12306579</id><updated>2011-11-27T18:17:12.561-05:00</updated><category term='JPA'/><category term='iPhone'/><category term='Java JavaFX Swing Apollo Adobe Flash Silverlight javaONE'/><category term='JAXB'/><category term='Objective-C'/><category term='gimp'/><category term='annotations'/><category term='Java 7'/><category term='JAX-WS'/><category term='POJO'/><category term='inkscape'/><category term='Java'/><category term='euicommunity'/><category term='Illustrator'/><category term='JavaFX'/><category term='android j2me java mobile FX iPhone'/><title type='text'>Lucas Jordan's Blog</title><subtitle type='html'>UI, Java, etc</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12306579.post-1198452785599799110</id><published>2010-02-10T13:40:00.006-05:00</published><updated>2010-02-11T12:02:21.108-05:00</updated><title type='text'>JavaFX Presentation</title><content type='html'>Last night I presented JavaFX to the Rochester Java Users Group (&lt;a href="http://rjug.org/"&gt;RJUG.org&lt;/a&gt;). It was a very receptive bunch of people, no experience with JavaFX but a lot of interest. That makes a great combination!&lt;br /&gt;&lt;br /&gt;I put the presentation together with Google Docs, so here is the presentation without sound...&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://docs.google.com/present/embed?id=ddgj6s5c_10d8wv2p7s" frameborder="0" height="342" width="410"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Here is a list of resource to help people get going with JavaFX:&lt;br /&gt;&lt;br /&gt;The main &lt;a href="http://javafx.com/"&gt;JavaFX&lt;/a&gt; site.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jfxtras.org/"&gt;JFXtras&lt;/a&gt; is a collection of open source libraries for JavaFX and an excellent mailing list.&lt;br /&gt;&lt;br /&gt;Until I get my source code uploaded to JFXtras, the source from the presentation and my book can be found here: &lt;a href="http://www.apress.com/book/view/1430226234"&gt;&lt;span style="font-style: italic;"&gt;JavaFX Special Effects: Taking Java™ RIA to the Extreme with Animation, Multimedia, and Game Elements.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last, &lt;a href="http://learnjavafx.typepad.com/weblog/"&gt;Jim Weaver's blog&lt;/a&gt; is a good source for JavaFX news.&lt;br /&gt;&lt;br /&gt;Looks like I will be presenting again in April on GWT and Google App Engine. Fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-1198452785599799110?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/1198452785599799110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=1198452785599799110' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/1198452785599799110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/1198452785599799110'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2010/02/javafx-presentation.html' title='JavaFX Presentation'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-9035151172589841492</id><published>2009-12-07T13:32:00.003-05:00</published><updated>2010-01-27T23:43:27.874-05:00</updated><title type='text'>JavaONE 2010 call for papers?</title><content type='html'>I was hoping to submit some work from my &lt;a href="http://www.amazon.com/dp/1430226234?tag=quaduc-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1430226234&amp;amp;adid=1GH0FYVV9JS53FMGVCWC&amp;amp;"&gt;new book&lt;/a&gt; as a talk at JavaONE 2010. Then I realized that the call for papers last was around this time last year. A quick google search makes it look like the call for papers when out on Dec 4th of last year.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8Nqq_95X4G4/Sx1LlaYf-CI/AAAAAAAAAHE/VS74jqTMumM/s1600-h/call_for_papers.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 103px;" src="http://4.bp.blogspot.com/_8Nqq_95X4G4/Sx1LlaYf-CI/AAAAAAAAAHE/VS74jqTMumM/s320/call_for_papers.png" alt="" id="BLOGGER_PHOTO_ID_5412565433278527522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It being Dec 7th today and there is no word yet that JavaONE 2010 will even be happening. Well, lets hope we hear about it soon, I would really like to go to another JavaONE... Though the last DEVOXX looked like it was the cats meow. Maybe I should make that my annual conference?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Update&lt;/span&gt;&lt;br /&gt;It looks like JavaONE 2010 will be held  Sept 19-23. The call papers should be announced any day now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-9035151172589841492?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/9035151172589841492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=9035151172589841492' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/9035151172589841492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/9035151172589841492'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/12/javaone-2010-call-for-papers.html' title='JavaONE 2010 call for papers?'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8Nqq_95X4G4/Sx1LlaYf-CI/AAAAAAAAAHE/VS74jqTMumM/s72-c/call_for_papers.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-3585479463610410721</id><published>2009-11-06T12:02:00.004-05:00</published><updated>2009-11-06T13:29:13.997-05:00</updated><title type='text'>JavaFX Production Suite - More Suggestions</title><content type='html'>&lt;span style="font-size:180%;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was recently working with the JavaFX Production Suite and have another suggestion for making it better. The first thing I want to talk about is the coordinates assigned to Nodes when they exported. Or lack of coordinates to be precise. The second issue is the inability to clone items within fxz content.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Coordinate Issue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets take a look at the example illustrator project in the following picture.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8Nqq_95X4G4/SvRY3wwi0KI/AAAAAAAAAG8/gesHG_SObTw/s1600-h/Example1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 293px; height: 320px;" src="http://4.bp.blogspot.com/_8Nqq_95X4G4/SvRY3wwi0KI/AAAAAAAAAG8/gesHG_SObTw/s320/Example1.png" alt="" id="BLOGGER_PHOTO_ID_5401039568128626850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We see a red rectangle and a blue circle, both items are positioned at some location from Illustrators origin. When this is exported to JavaFX, the upper left corner becomes the origin for all of the generated nodes. So, in our example the upper left corner of the rectangle is the origin. This sort of makes sense, since positioning each node from some other arbitrary position would lead to other difficulties. But what concerns me is how the nodes are position, lets take a look at what this looks like in JavaFX.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Group {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    content: [&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        SVGPath {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            fill: Color.rgb(0x0,0xae,0xef)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            stroke: null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            content: "M143.90,110.81 C143.90,133.63 125.40,152.13 102.59,152.13 C79.77,152.13 61.27,133.63 61.27,110.81 C61.27,87.99 79.77,69.49 102.59,69.49 C125.40,69.49 143.90,87.99 143.90,110.81 Z "&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        },&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        Rectangle {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            fill: Color.rgb(0xbf,0x1e,0x2d)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            stroke: null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            x: 0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            y: 0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            width: 171.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            height: 57.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        },    ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As we can see the Rectangle is at point (0,0), but what coordinate is the circle at? The Circle is drawn as a series of strokes relative to the origin. This works great for static content, but for things that move in the scene, this is sort of a pain. It means that some nodes in the scene are offset from their origin and other nodes added to the scene might not be. This means you can't query the position of all nodes in the same way.&lt;br /&gt;&lt;br /&gt;This problem is in part do to the incoherent way JavaFX deals with coordinates. But Ill get into that in another post. What I want to show you here is away to get a reference to a node within a node tree created from fxz content. The following code snippet does just this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;public function offsetFromZero(node:Node):Group{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    var xOffset = node.boundsInParent.minX + node.boundsInParent.width/2.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    var yOffset = node.boundsInParent.minY + node.boundsInParent.height/2.0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    var parent = node.parent as Group;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    var index = Sequences.indexOf(parent.content, node);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    removeFromParent(node);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    node.translateX = -xOffset;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    node.translateY = -yOffset;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    var group = Group{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        translateX: xOffset;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        translateY: yOffset;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        content: node;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    insert group before parent.content[index];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    return group;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The node passed in is located in some node tree, it's location from its parent is recorded based on its bounds. Its index in the content of its parent is recorded as well. The node is then removed from its parent and translated to the origin of its parent. The node is than wrapped in a new Group. The Group is than translated by the original offset of the node. Lastly the group is inserted back into the parent's content at the index that the original node held.&lt;br /&gt;&lt;br /&gt;In this way the visual location of the node is not changed, but you now have a node which reports its translateX and translateY relative to the origin of the entire fxz node. This allows the application to use a single API for working with the location of nodes. The disadvantage is that it adds another node to the scene, which might contribute to a performance problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Cloning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It seems to me that the work flow from Illustrator to Netbeans is good, but could be better. Besides the naming issues I pointed out &lt;a href="http://lucasjordan.blogspot.com/2009/09/wish-list-for-converting-adobe.html"&gt;here&lt;/a&gt;, there are some other particulars that need addressing. There are basically two choices when it comes to organizing your Illustrator files, the first is to just create a single file with all of your assets in it, then rely on your JavaFX to position and hide nodes that are not used at a particular time. The other option is to break out all of your content into separate files and let your application do the work of positioning everything. There are disadvantages and advantages to both strategies.&lt;br /&gt;&lt;br /&gt;When putting all of your assets into one file it makes it simple to use Illustrator to do your layout. This is really important, since it is much faster to lay out stuff in illustrator, the end result looks and works better. But it makes things difficult for dynamic content, say you are creating a game with power-ups in it. If the number of power-ups on the screen at a given time is dynamic, there is no easy way of creating new ones, as the content in the fxz file contains s0me fixed number of power-up nodes, usually one. The only way to create more is to create entire new fxz object and pull out the power-up, probably throwing away the rest of the objects. This is inefficient, and creates weird patterns in your code.&lt;br /&gt;&lt;br /&gt;When using multiple files you loose the ability to do a lot of the layout in illustrator and is also harder to maintain. But this strategy makes it very simple to create multiple instances of nodes, you simply create a new fxz node and add it your scene.&lt;br /&gt;&lt;br /&gt;I think a partial solution to this would be if JavaFX support an easy way to clone a node. This would allow you to create a single Illustrator file and the application could just clone items as needed. Being able to clone nodes would be handy even without the Illustrator to JavaFX work flow. I think this is a missing feature and would love to see it included.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-3585479463610410721?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/3585479463610410721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=3585479463610410721' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/3585479463610410721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/3585479463610410721'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/11/javafx-production-suite-more.html' title='JavaFX Production Suite - More Suggestions'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8Nqq_95X4G4/SvRY3wwi0KI/AAAAAAAAAG8/gesHG_SObTw/s72-c/Example1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-8358185379619806948</id><published>2009-09-18T10:49:00.004-04:00</published><updated>2009-09-18T13:13:55.891-04:00</updated><title type='text'>Wish list for converting Adobe Illustrator Files to JavaFX</title><content type='html'>When developing JavaFX applications, much of the graphics work can be done in Adobe Illustrator and exported to a format friendly to JavaFX. This is done by using the &lt;a href="http://www.javafx.com/downloads"&gt;JavaFX 1.2 Production Suite&lt;/a&gt;. Recently a friend at Sun pointed me to a link which shows &lt;a href="http://blogs.sun.com/javafx/entry/production_suite_supported_features_for"&gt;which features in Adobe's tools are supported&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It is nice to have some clarification about which features are supported and which are not, until I looked at this document I was pretty frustrated with the guess work involved in getting content to export in a reasonable way. But now I can just look up what works, excellent.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Naming Nodes&lt;/span&gt;&lt;br /&gt;This brings me to another struggle I have with the production suite, which involves how nodes are named. Currently you can name a node, say "jfx:ball" and when you export your file for JavaFX, one of the nodes that gets exported has its Id set to "ball", this allows you to pull out particular nodes in the scene. This works great for a lot of use cases, it allows your application set up code to find nodes and perform operations on them, like animate them or make them a button.&lt;br /&gt;&lt;br /&gt;The trouble comes when you start to use Illustrator or Photoshop to create more complex scenes, with more complex interactions between the nodes. For example, lets say you are implementing a game like Super Mario Brothers. It makes a lot of sense to use illustrator to put each level together, it allows rapid placement of content and lots of fine tuning. The trouble, is how to identify which layers in the adobe file should be bricks, or coin bricks, or even goombas.&lt;br /&gt;&lt;br /&gt;Right now you could go through and name each brick, but you have to give them all unique names, you have to say "jfx:brick1", "jfx:brick2", etc. This is error prone and a lot of work. Ideally you would want to be able to just create a brick layer, and then just copy it and place it without thinking about it.&lt;br /&gt;&lt;br /&gt;So if we consider a developer/designer work flow, I the developer, would create a file containing one of each &lt;span style="font-style: italic;"&gt;actor&lt;/span&gt; in the scene. An actor is something my code has to know about. The designer can then create a new scene by copying the basic building blocks I provided. They can also add other content, which are not actors, this would be backgrounds and other decorations. Interested designer could also look at my example content and create their own. Maybe on level 6 the coin bricks have a different look, they would be able to adapt the naming system to create the actors they require.&lt;br /&gt;&lt;br /&gt;In this way, there is a streamlined designer/developer work flow. This is really important to creating excellent applications, because the less time spent making it &lt;span style="font-style: italic;"&gt;just work&lt;/span&gt; and the more time spent on making it cool, hence cooler applications :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Extensi0n To Naming System&lt;/span&gt;&lt;br /&gt;To enable this work flow I suggest changing how the name system works for the production suite. We should be able to specify a class for a given node. I think it could work like this, first start with how it works now:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jfx:NODE_ID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This just simply says, set this nodes id to NODE_ID. This is perfect for singletons in the scene. But, now if you want to specify a node to be a particular class you would say:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jfx:[com.mygame.Brick]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where Brick is a mixin class defined someplace else in your project. The production tool would then create a new class, which would look something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class Group_Brick extends Group, Brick{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//no additional implementation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then each time the export tool finds a layer which should be node of type brick, it uses the class Group_Brick instead of Group to represent that node. If the node which is to be a brick would normally be of a type type other then Group, say SVGPath, then another class like the following could be created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class SVGPath_Brick extends SVGPath, Brick{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//no additional implementation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this case, maybe some Bricks are SVGPaths and some are Groups. But your code might not care, since bot SVGPath and Group are nodes.&lt;br /&gt;&lt;br /&gt;If you wanted a node to be of two classes, you would name the layer:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jfx:[com.mygame.Brick,com.mygame.HasCoin]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this would cause the production suite to produce a class like the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;class Group_Brick_HasCoin extends Group, Brick, HasCoin {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//no additional implementation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this way the node can be two things. Lastly, suppose you wanted a node to have its id set and be of a particular class, you would then name the node like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jfx:startspot[com.mygame.Brick]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would create a node which was whatever type the layer should be (Group, SVGPath, Circle, etc) and also of type Brick, and have the id property set to 'startspot'.&lt;br /&gt;&lt;br /&gt;Of course some tools on the javafx side must be created, it would be nice to say 'give me all nodes in this tree which are of a particular type', something like the following.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;function getAll(clazz:Class, group:Group):Node[];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am sure the above method can be implemented with little trouble.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Drawback&lt;/span&gt;&lt;br /&gt;One drawback to this approach is that the exported fxz files would not be self sufficient, they could not be rendered unless the classes like Brick and HasCoin are present. But, this is an extension to the current system, so people would not be required to use it. The preview tool in illustrator could also just provide empty implementations for all unknown classes, which would allow it to at least draw the content in a static way.&lt;br /&gt;Another drawback is that there might be some complexity when creating nodes with multiple classes, naming conflicts and that sort of thing. But even if only one class could be specified, inheritance would take care of most of the use cases. In the above example, Brick and HasCoin are separate classes. It might be possible to simply create the class Brick and the class CoinBrick, and have CoinBrick extend Brick. That being said, I think it best to allow nodes to have many, many classes, as it cuts down on the complexity of the inheritance model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Conclusion&lt;/span&gt;&lt;br /&gt;In short, this modification would allow us to specify that a layer in an adobe file is of a particular type as well as have a name. This would turn illustrator and photoshop into very powerful tools for creating complex content in a JavaFX application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-8358185379619806948?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/8358185379619806948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=8358185379619806948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/8358185379619806948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/8358185379619806948'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/09/wish-list-for-converting-adobe.html' title='Wish list for converting Adobe Illustrator Files to JavaFX'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-342578439312001565</id><published>2009-08-17T14:31:00.006-04:00</published><updated>2009-08-17T15:44:41.469-04:00</updated><title type='text'>Java Store Affiliate Program - Sales As A Service</title><content type='html'>I always wanted to write and sell my own software. Even though I have a successful career as a Java developer I am sick of making money for other people. Over the last 4 or 5 years the cost of running a one or two man software company has plummeted. This has a lot to do with the increase in productivity modern developer tools provide as well as the large number of internet services which solve real business problems. For example, by using &lt;a href="http://www.google.com/apps/"&gt;Google Apps&lt;/a&gt; the cost of email, basic web site hosting and a calendar is the cost of registering your domain, 11 bucks, or whatever it is.&lt;br /&gt;&lt;br /&gt;Another service provided at very low cost is distributing and charging as can be seen with iTunes and hopefully the &lt;a href="http://www.java.com/en/store/"&gt;Java Store&lt;/a&gt;. However this model is not perfect, as many high quality apps never make any real money for their developers. This is because many developers simply lack the money or the "know how" to promote their application. I, for example, lack both the money and the "know how". As you can see from my two, part time attempts to create an internet business, &lt;a href="http://www.quackduck.com/"&gt;QuackDuck&lt;/a&gt; and &lt;a href="http://www.claywaregames.com/"&gt;ClayWare Games&lt;/a&gt;, you have never heard of them, and this is because they have never been promoted properly. But I think I know a solution to this.&lt;br /&gt;&lt;br /&gt;I recently started messing with the Amazon affiliate program, this is a program which rewards people for driving sales on &lt;a href="https://affiliate-program.amazon.com/"&gt;Amazon.com&lt;/a&gt;. For each sell, you earn between 4-15% of the sale. Not bad if you can get people to the store for a reasonable amount of money. I found I did not have the time or the money to figure how to do this well, but it made me realize that Amazon is using a sales services in much the same way as I use Google for an email services. Much to my surprise, I was the one providing the service to Amazon.&lt;br /&gt;&lt;br /&gt;So what I am suggesting is an affiliate program for the Java Store, but not just an affiliate program like the one for Amazon. I want an affiliate program were the developers can set terms for potential affiliates, receive feed back and generally provide &lt;span style="font-style: italic;"&gt;sales as a service&lt;/span&gt;. Here are the features I would like to see:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Negotiate Percentage: &lt;/span&gt;The developers should have the power to set the percentage that the sales people receive. This should be more complex than just selecting a percentage number, this should include sliding scales for volume as well as a place where sales folks can make offers, even make guarantees on the number of units sold. Maybe some rates could be auctioned off.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Feedback from Sales: &lt;/span&gt;The sales people are going to know what customers want out of the next release or the next app. This should also include a bug report system, no software is perfect. There should be away for this information to get back the developers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Media Files:&lt;/span&gt; Developers should provide media files, images, sounds, fonts, etc, that are used in the app so sales people can create ads or web pages with them. This could be as simple as a zip file to download.&lt;br /&gt;&lt;br /&gt;Basically I want to see a store where professional sales people can find products that they think are worth something and sell those products. I want a store where I can post a good application and know there are people looking for good apps, not just for themselves, but because they want to help sell them. It seems to me that sales is the only thing missing for me to be successful as a independent developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-342578439312001565?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/342578439312001565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=342578439312001565' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/342578439312001565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/342578439312001565'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/08/java-store-affiliate-program-sales-as.html' title='Java Store Affiliate Program - Sales As A Service'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-2807200901189461259</id><published>2009-06-16T11:10:00.010-04:00</published><updated>2009-06-17T10:59:23.704-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='euicommunity'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='inkscape'/><title type='text'>Inkscape and JavaFX - Almost there</title><content type='html'>I was recently on a panel at JavaONE and a developer ask about support for open source tools and JavaFX. He was interested in exporting JavaFX content from &lt;a href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt; and possibly &lt;a href="http://www.gimp.org/"&gt;GIMP&lt;/a&gt;.  Of course this is a perfectly reasonable idea. At the time, no one on the panel had a good answer for him. I did a little looking after the conference and found that Inkscape allows content to be saved in a format that JavaFX can work with, but with a number of limitations. Here are the details:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Requirements&lt;/span&gt;&lt;br /&gt;I am on a Mac, so the instructions are Mac specific, but the basics steps should help anyone interested.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;1) Install Macports&lt;/span&gt;&lt;br /&gt;While Inkscape has an OS X installer, we require the devel version of inkscape and macports makes it easy to install the devel version. Here is a link for &lt;a href="http://www.macports.org/"&gt;macports&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;2) Install Inkspace&lt;/span&gt;&lt;br /&gt;Open up a terminal and install Inkscape with macports.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo /opt/local/bin/port install inkscape-devel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(My installation of macports is at &lt;span style="font-family:courier new;"&gt;/opt/local/bin&lt;/span&gt;, yours might be different)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;3) Launch Inkscape&lt;/span&gt;&lt;br /&gt;On my machine Inkscape can be launched from the terminal by typing:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/opt/local/bin/inkscape&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;4) Install Netbeans&lt;/span&gt;&lt;br /&gt;In case you are not set up for JavaFX develoment you can download and install Netbeans with the JavaFX pluging &lt;a href="http://javafx.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Creating Content&lt;/span&gt;&lt;br /&gt;Once Inkscape is open draw some basics shapes. The following screen shot shows some sample content which uses a few different types of objects and gradients.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8Nqq_95X4G4/Sje81N1ZIpI/AAAAAAAAACE/SssEPCFNxkw/s1600-h/content_in_inkscape.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 264px; height: 320px;" src="http://3.bp.blogspot.com/_8Nqq_95X4G4/Sje81N1ZIpI/AAAAAAAAACE/SssEPCFNxkw/s320/content_in_inkscape.png" alt="" id="BLOGGER_PHOTO_ID_5347950704958448274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Go ahead and save the content in Inkscape's flavor of SVG. Inkscape crashed a few times on me, so it is a good idea to save your work in format Inkscape is going to be happy with. Also save a copy of your content as a *.fx file. This file contains a javafx class which can be used in your JavaFX application. Here is a screen shot of my content.fx file open in Netbeans.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8Nqq_95X4G4/Sje949fjW6I/AAAAAAAAACM/vXHgwwj7CkI/s1600-h/content_in_netbeans_1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_8Nqq_95X4G4/Sje949fjW6I/AAAAAAAAACM/vXHgwwj7CkI/s320/content_in_netbeans_1.png" alt="" id="BLOGGER_PHOTO_ID_5347951868802980770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Look at all the errors!&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Update:&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Check the comments for an update on the status of the exported JavaFX code]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It seems that Inkscape is exporting a version of JavaFX which is no longer supported. It looks like some pre 1.0 version to me. Anyway, here are some basic tips to get the class to compile against JavaFX 1.2:&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove all bad import statements.&lt;/li&gt;&lt;li&gt;Add the import statement '&lt;span style="font-family:courier new;"&gt;import javafx.scene.shape.*;&lt;/span&gt;'&lt;/li&gt;&lt;li&gt;Rename your class to start with a capital letter and make sure it is in the package you want it in.&lt;/li&gt;&lt;li&gt;Remove the keyword '&lt;span style="font-family:courier new;"&gt;private&lt;/span&gt;' from any method that uses it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;change &lt;span style="font-family:courier new;"&gt;CurveTo&lt;/span&gt; to &lt;span style="font-family:courier new;"&gt;CubicCurveTo.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Remove the &lt;span style="font-family:courier new;"&gt;Frame&lt;/span&gt; at the end of the file.&lt;/li&gt;&lt;li&gt;Add the keyword '&lt;span style="font-family:courier new;"&gt;override&lt;/span&gt;' to the function &lt;span style="font-family:courier new;"&gt;create().&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Change the property '&lt;span style="font-family:courier new;"&gt;transform&lt;/span&gt;' to '&lt;span style="font-family:courier new;"&gt;transforms&lt;/span&gt;' for the class &lt;span style="font-family:courier new;"&gt;Group&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Once the class compiles create a script to display the content, mine looks like this:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Stage {&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;title: "Application title"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;width: 640&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;height: 480&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    scene: Scene{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;        content: [Content{}]&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;And here is a screen shot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8Nqq_95X4G4/SjfBLbWifuI/AAAAAAAAACU/fYVtxrQ5aUQ/s1600-h/content_in_javafx.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 286px;" src="http://1.bp.blogspot.com/_8Nqq_95X4G4/SjfBLbWifuI/AAAAAAAAACU/fYVtxrQ5aUQ/s320/content_in_javafx.png" alt="" id="BLOGGER_PHOTO_ID_5347955484590767842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;That's not even close!&lt;br /&gt;&lt;br /&gt;Looks like a number of features are yet to be implemented, the stroke paint was not honored, the radial gradient is missing and the stokeWidth did not get set.&lt;br /&gt;&lt;br /&gt;But in all honesty, this is a really good start, and it is excellent to see JavaFX included in Inkscape at all. If there are any developers who are familiar with JavaFX and the Inkscape code base, this would be a really nice feature have improved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-2807200901189461259?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/2807200901189461259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=2807200901189461259' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/2807200901189461259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/2807200901189461259'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/06/inkscape-and-javafx-almost-there.html' title='Inkscape and JavaFX - Almost there'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8Nqq_95X4G4/Sje81N1ZIpI/AAAAAAAAACE/SssEPCFNxkw/s72-c/content_in_inkscape.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-8981489917693408460</id><published>2009-05-19T14:23:00.005-04:00</published><updated>2009-05-19T14:47:08.817-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Project Vector</title><content type='html'>A Java App Store is simply music to my ears. Being an iPhone user and developer, the advantages of Apple's app store is crystal clear to me. Having a single vector to get apps onto my phone is pretty nice, having a service where I can publish apps and get them to millions of users is amazing.&lt;br /&gt;&lt;br /&gt;It seems to me there are 3 primary costs involved in getting software or any content to market. The first being the cost of creating the application, paying developers and designers. The second is the cost advertisement and the third is the cost of deployment. By deployment I mean the cost of actually getting an app on to peoples computers, this used to include boxing up the software and getting stores to carry it. Now only the first two are issues.&lt;br /&gt;&lt;br /&gt;Anyway, having a store that serves the entire desktop market is a huge market. I am more then happy to pay Sun to distribute my application. I only hope they allow anyone to put an app on their store, not just a select audience. From &lt;a href="http://blogs.sun.com/jonathan/"&gt;Jonathan Schwartz's blog&lt;/a&gt;, it does sound like Sun will be asking customers to pay for the privilege of appearing in their store. I sure hope this is limited to 'front page' apps.&lt;br /&gt;&lt;br /&gt;I guess it is time to port my iPhone applications to JavaFX, got to be ready for the grand opening!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-8981489917693408460?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/8981489917693408460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=8981489917693408460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/8981489917693408460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/8981489917693408460'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2009/05/project-vector.html' title='Project Vector'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-4909230847714971495</id><published>2008-12-18T16:13:00.002-05:00</published><updated>2008-12-18T16:24:25.242-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='euicommunity'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='android j2me java mobile FX iPhone'/><title type='text'>Space Attack!!</title><content type='html'>I have released my first iPhone game recently, called &lt;a href="http://lucasjordan.com/spaceattack"&gt;Space Attack!!&lt;/a&gt; Please check it out.&lt;br /&gt;&lt;br /&gt;Developing this game in my spare time took me about two months longer then I expected. Between &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt;, Objective-C, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;OpenGL&lt;/span&gt; I had a lot to learn and there is almost no example code online. That is starting to change now as more and more iPhone developers are free to talk about their work. This is pretty exciting, working with Apple's development tools is painful, but you get the feeling there are some really powerful  tools that you are missing.&lt;br /&gt;&lt;br /&gt;Core Animation is one of those tools I missed on the first game. I have started working on a second (and third, fourth...) game and have decided to use Core Animation for it. It is for a lot more then just animation, it should be thought of as a scene graph &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt;, where you assemble a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;hierarchy&lt;/span&gt; of objects and then Core Animation renders them to the screen. By adding &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CAAnimations&lt;/span&gt; to objects, the scene is animated. This is excellent.&lt;br /&gt;&lt;br /&gt;After my 3 frantic weeks working on a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;JavaFX&lt;/span&gt; project for the release, I starting thinking in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;JavaFX&lt;/span&gt; way, and I think is has spoiled me. Things are so easy in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JX&lt;/span&gt; and are so hard in other &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;languages&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;APIs&lt;/span&gt;. Core Animation is part of the way there, thankfully, but I really wish I could bind things. that would be excellent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-4909230847714971495?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/4909230847714971495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=4909230847714971495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/4909230847714971495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/4909230847714971495'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2008/12/space-attack.html' title='Space Attack!!'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-1539732638229457216</id><published>2008-09-08T19:09:00.002-04:00</published><updated>2008-09-08T19:19:17.181-04:00</updated><title type='text'>SSD Thumper</title><content type='html'>I had a thought today... what could one do with a &lt;a href="http://www.sun.com/servers/x64/x4500/"&gt;Thumper&lt;/a&gt; packed with solid state drives? With 48 of the 160Gb version of &lt;a href="http://www.intel.com/design/flash/nand/mainstream/index.htm"&gt;intel's SSD drives&lt;/a&gt;,  there would be 7680 Gb of storage at an incredible read rate.&lt;br /&gt;&lt;br /&gt;Render farms come to mind, as well as video servers or any large data set. I have to see if Sun can configure me one :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-1539732638229457216?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/1539732638229457216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=1539732638229457216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/1539732638229457216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/1539732638229457216'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2008/09/ssd-thumper.html' title='SSD Thumper'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-6392735459025736956</id><published>2008-08-15T14:16:00.017-04:00</published><updated>2008-09-24T19:22:31.047-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='euicommunity'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='Illustrator'/><title type='text'>JavaFX and Adobe Illustrator</title><content type='html'>JavaFX is Sun's attempt at capturing the Rich Internet Application market. Currently the king of the RIA domain is Adobe with it's Flex and AIR products. Adobe is king not because their flash run-time is excellent or because Flex is such an excellent language to work with. It is king because it integrates its creative tools, such as illustrator, into the development process. This integration has made Adobe's products the go-to option for the vast majority of web content developers. Sure there are a few &lt;a href="http://www.babynamewizard.com/voyager"&gt;great applets&lt;/a&gt; out there, so great, people often assume they are flash applications.&lt;br /&gt;&lt;br /&gt;Sun has recently released a preview &lt;a href="http://javafx.com/"&gt;SDK of JavaFX&lt;/a&gt; which includes plugins for a hand full of creative products, including Adobe's Illustrator. The following is a review and critique of how these new tools address the development process.&lt;br /&gt;&lt;br /&gt;The required downloads are Netbeans 6.1 with JavaFX and Project Nile. Project Nile is a collection of plugins so designers can export content from their favorite design applications as long as they are either Illustrator or Photoshop.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXNEg95ZqI/AAAAAAAAABI/eoJpUAPBTaQ/s1600-h/export_as_fx.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXNEg95ZqI/AAAAAAAAABI/eoJpUAPBTaQ/s320/export_as_fx.png" alt="" id="BLOGGER_PHOTO_ID_5234815619340789410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The installation of both of these components is simple enough and a quick inspection of Illustrator shows that, yes indeed, JafaFX files can be exported.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8Nqq_95X4G4/SKXPCSKduGI/AAAAAAAAABQ/VQn4anELDTU/s1600-h/new_fx_project.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_8Nqq_95X4G4/SKXPCSKduGI/AAAAAAAAABQ/VQn4anELDTU/s320/new_fx_project.png" alt="" id="BLOGGER_PHOTO_ID_5234817780030486626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There seems to be no real guide as to how to set up a JavaFX project for development. Creating a new project in Netbeans sounds like a good place to start, create a project of type JavaFX.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8Nqq_95X4G4/SKXQoZGUEYI/AAAAAAAAABY/KiXnsSq2EIU/s1600-h/fresh_fx_project.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_8Nqq_95X4G4/SKXQoZGUEYI/AAAAAAAAABY/KiXnsSq2EIU/s320/fresh_fx_project.png" alt="" id="BLOGGER_PHOTO_ID_5234819534238781826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once a project is created it is worth spending some time to checkout what Netbeans provides. There seems to be a Main class created automatically, there is also the JavaFX Library, please note in the image that the JavaFX SDK is actually running on Java 6, not 1.5, there was some configuration issues leading to this typo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXSaq-JLwI/AAAAAAAAABg/7lhIik3cueU/s1600-h/content.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXSaq-JLwI/AAAAAAAAABg/7lhIik3cueU/s320/content.png" alt="" id="BLOGGER_PHOTO_ID_5234821497541439234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now in Illustrator, create some content. It should be simple to have it displayed in a Java application.&lt;br /&gt;&lt;br /&gt;Export the file and save in the same folder as the Main.fx file from the Netbeans project created earlier. Be sure to use Java class capitalization for the file name, as the name of the file you select will be the name of class that is created.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8Nqq_95X4G4/SKXXsttnZEI/AAAAAAAAABo/VYuUZ3izhb8/s1600-h/after_export.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_8Nqq_95X4G4/SKXXsttnZEI/AAAAAAAAABo/VYuUZ3izhb8/s320/after_export.png" alt="" id="BLOGGER_PHOTO_ID_5234827305073206338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As can be seen a class with the same name is the exported file. The Font used in the content is also exported, which is very handy. The next step is to actually display this content, this is done by editing the Main.fx file to display an instance of this exported class.&lt;br /&gt;&lt;br /&gt;Here is the code to actually display the content in a JFrame:&lt;br /&gt;&lt;br /&gt;package fxtest;&lt;br /&gt;&lt;br /&gt;import javafx.application.*;&lt;br /&gt;import javafx.scene.*;&lt;br /&gt;import javafx.scene.paint.*;&lt;br /&gt;&lt;br /&gt;var content:Content;&lt;br /&gt;&lt;br /&gt;Frame {&lt;br /&gt;var stageRef:Stage;&lt;br /&gt;visible: true&lt;br /&gt;stage:&lt;br /&gt;   stageRef = Stage {&lt;br /&gt;       fill: Color.WHITE&lt;br /&gt;       content: [&lt;br /&gt;           content = new Content()&lt;br /&gt;       ]&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;First is the output from Java and the second is a close up of what is displayed in Illustrator.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXavAhD2BI/AAAAAAAAABw/cJ64gWMU_WY/s1600-h/jframe.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXavAhD2BI/AAAAAAAAABw/cJ64gWMU_WY/s320/jframe.png" alt="" id="BLOGGER_PHOTO_ID_5234830643015440402" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8Nqq_95X4G4/SKXbaLJAlII/AAAAAAAAAB4/VLTlBovMpgY/s1600-h/closeup.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_8Nqq_95X4G4/SKXbaLJAlII/AAAAAAAAAB4/VLTlBovMpgY/s320/closeup.png" alt="" id="BLOGGER_PHOTO_ID_5234831384601728130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are some obvious fidelity issues, the blacks are not exactly the same, and worse yet, the text layout is messed up in the Java version.&lt;br /&gt;&lt;br /&gt;There are also some issue where not all content in Illustrator is exported, try using the "symbol spray" tool to add some tasteful blue birds and export it again. Rerun the Java application and notice there are no birds displayed. Also, notice that the export dialog did not remember which directory you last exported in, this is super annoying.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pros&lt;br /&gt;It is excellent to be able to produce content in Illustrator, it would simply take forever to create even the simplest content if this has to be done by witting code.&lt;br /&gt;&lt;br /&gt;Netbeans is an excellent IDE and a pleasure to work with.&lt;br /&gt;&lt;br /&gt;Cons&lt;br /&gt;The development cycle is not well thought out. With Flex, the designers and the coders work from the same source code. This makes things like version control a snap. Flex also allows coders and designer to work with the same tool, enabled by eclipse. It is not clear how an iterative development process will deal with the current system.&lt;br /&gt;&lt;br /&gt;The fidelity of the export, coupled with some content not being exported at all, is worrisome. It will be difficult for the designers to produce good content when they can not trust the WYSIWYG tool they are using.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;A good start, this is a preview release after all. The cons listed above simply have to be addressed, especially if one accepts the premise that Adobe's RIA technologies are the leaders because of their tool support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-6392735459025736956?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/6392735459025736956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=6392735459025736956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6392735459025736956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6392735459025736956'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2008/08/javafx-and-adobe-illustrator.html' title='JavaFX and Adobe Illustrator'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8Nqq_95X4G4/SKXNEg95ZqI/AAAAAAAAABI/eoJpUAPBTaQ/s72-c/export_as_fx.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-6003195301977137986</id><published>2007-11-14T12:55:00.000-05:00</published><updated>2007-11-14T13:55:45.390-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android j2me java mobile FX iPhone'/><title type='text'>Java Mobile Where We Stand Tomorrow</title><content type='html'>Currently Java on mobile devices is sort of a mess, while J2ME is available on a huge number of devices it lacks the feature set Java developers expect from J2SE. Given any particular mobile phone a developer will find a sub set of features available, not to mention questionable quality and user experience.&lt;br /&gt;&lt;br /&gt;For example, I own a Cingular 8125, a Windows Mobile 5 Device. It contains a very capable processor, however in traditional MS style, Java is a second class citizen at best. Each Java application I install is only accessible by first launching an application manager. In contrast, if I install a native application it is available under the  programs folder, next to the pre-installed applications. This reminds users they are using a non-native application and smears mud on the face of Java.&lt;br /&gt;&lt;br /&gt;The real advantage of using Java over other languages and platforms is the JVM. A fully compliant JVM provides an incredible number of features to a Java developer. This list of features is even larger if you consider the huge number of open source libraries that target the JVM. Making these features available to the mobile developer will prower the coming  mobile renaissance. &lt;br /&gt;&lt;br /&gt;Those looking at Google's &lt;a href="http://code.google.com/android/"&gt;Android&lt;/a&gt;  might be disappointed to find that the VM provided is not a J2SE compliant VM. Android as it stands now looks more like a mobile phone OS which can be extended easily and openly. The framework provided directly addresses the issue I have with my phone, applications written for Android have the same level of access as every other application and they are presented in exactly the same way. It is almost irrelevant that Java is used at all since code written to Android will not be terrible useful on other devices. This is due to the fact that the VM on Android is a subset of J2SE and is not a subset that maps to J2ME. Additionally Android contains mobile specific APIs found on no other device. It is a new J2ME at this point with an unknown audience. Is it cool that there is a new open source phone OS which is easy to develop for? Absolutely, but it does follow the old "write once, run everywhere" philosophy.&lt;br /&gt;&lt;br /&gt;Enter Sun's &lt;a href="http://www.sun.com/software/javafx/mobile/"&gt;Java FX Mobile&lt;/a&gt; which is approximately a J2SE stack targeting the next generation of mobile devices. I say approximately because we don't exactly which libraries will be available in Java FX Mobile. Will CORBA be included, let's hope so. Lets hope it is a full J2SE+J2ME implementation. With any luck the growing &lt;a href="https://jdk6.dev.java.net/6uNea.html"&gt;modular JVM movement&lt;/a&gt; will influence Java FX Mobile, allowing features to be added as required. I guess there is no reason why a large number of  standard packages could not be broken out as jars...want swing? use javax.swing.jar.&lt;br /&gt;&lt;br /&gt;We have not seen any devices running either of these two Java implementations. It is unclear how wide spread these two technologies will become. Of course there is the iPhone and &lt;a href="http://blogs.sun.com/hinkmond/entry/java_me_tech_on_the"&gt;some believe&lt;/a&gt; Java will be available there as well. You can bet your shorts that it will not inter operate with either of the above technologies. Of course a huge number of &lt;a href="http://www.linuxdevices.com/"&gt;embedded devices exits that can run Linux&lt;/a&gt; and at least some &lt;a href="http://gcc.gnu.org/java/"&gt;flavor of Java&lt;/a&gt;, like the new &lt;a href="http://www.linuxdevices.com/news/NS3871478989.html"&gt;Bug Lab's Lego&lt;/a&gt; embedded system.&lt;br /&gt;&lt;br /&gt;Even though Java is fragmenting (or is fragmented) in the mobile space, at least as a Java developer I can use the language and tools I am most familiar with to develop applications on an ever growing number of devices. And thats cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-6003195301977137986?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/6003195301977137986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=6003195301977137986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6003195301977137986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6003195301977137986'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2007/11/java-mobile-where-we-stand-tomorrow.html' title='Java Mobile Where We Stand Tomorrow'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-2030476092764776917</id><published>2007-05-09T09:38:00.000-04:00</published><updated>2007-05-09T11:29:19.630-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java JavaFX Swing Apollo Adobe Flash Silverlight javaONE'/><title type='text'>JavaFX or SwingFX</title><content type='html'>Those &lt;a href="https://openjfx.dev.java.net/"&gt;JavaFX&lt;/a&gt; demos at JavaONE look great. I have been working with Swing for 10 years (9? time flies), I know what Swing can do if you put the time in. It is very tricky to make swing applications look excellent, and anything to make that simpler is awesome. It looks like JavaFX is just that, an improved way to create an interface in a Java application. But JavaFX is being talked about as competition to &lt;a href="http://www.microsoft.com/silverlight/default01.aspx"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;Apollo&lt;/a&gt;, and Flash and I am not sure about all that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First lets think about Flash...&lt;/span&gt;&lt;br /&gt;Why does Flash exists, what problems does it solve? Why is Flash better then an Applet? Why does Flash need to be replaced? Perhaps answering these questions will shed some light on this JavaFX thing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why does Flash exists, what problems does it solve?&lt;/span&gt;&lt;br /&gt;Flash exists because DHTML/AJAX/etc is extremely limited in terms of precise layout, animation and media. Both Flash and applets improve upon this serious set of limitations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why is Flash better then an Applet?&lt;br /&gt;&lt;/span&gt;Flash has a quicker startup time and might be on a few more browsers. Java however has a bijillion open source projects available, has a much better security model, higher graphics fidelity and once loaded is much faster then Flash. Java to me looks like the bester answer for a rich web experience, yet many many more web sites use Flash then Java. Why?&lt;br /&gt;Tools. Flash has better tools then Java for creating rich interfaces. I think this is the only reason why Flash is everywhere and Applets are not. The tools available for Flash allow an amateur to create amazing web pages. Flash programming may be the tonka truck of programming languages, but it is very accessible. If JavaFX is going to compete it must create the best tools on the market.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why does Flash need to be replaced?&lt;/span&gt;&lt;br /&gt;If Flash has great tools and is easy to program why does it need to be replaced at all? Some of the advantaged of Java over Flash that I listed above are all good reasons to replace Flash. Maybe Ill just download the source code to Flash and make some improvements, improve the speed of Flash so it is on par with Java....oh right, I can't. Java is the first rich web technology available with an open licenses, this is big. Java already has a slew of open source projects written with it, that is work that has been done for you. Need a bar code reader in your application, I bet you can find five open source libraries for that, try that with Flash. As Java moves back into the rich interface space, a ton of projects will pop-up to make your application easier to write AND look better.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Silverlight and Apollo&lt;/span&gt;&lt;br /&gt;When I heard about these projects, I thought to myself, "Lucas, why would you ever use these platforms when you can use Java?" and then I thought about it some more. Adobe is trying to expand the usefulness of the Flash programmers in the world and leverage their existing tools. This makes perfect sense and is a really good move, reusing the resources they have for a new market.  Silverlight, looks like JavaLite to me, the last time I tried to use a MS tool for creating software I was struck by how buggy and feature poor everything was. I was trying to get a C# mobile application to unzip a file and wow, I was of the track and in the weeds, this was nearly unexplored territory in the world of .NET. Seriously, go download Visual Studio and the Mobile add on, you will swear your the first person to every actually use it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;To compete with Adobe in both the browser and desktop space Sun must make tools for creating rich applications on par with Adobe's. If we also get a tool for creating mobile and embedded applications at the same time that would be slam dunk for Sun. Until then, content creators will not choose Java regardless of how handy/fast/ubiquitous Java is. Silverlight is irrelevant, a billion people will be forced to use it in classic Microsoft style, it will be buggy and expensive. Sun could make the best platform in the world and they would still be stuck competing with Microsoft.&lt;br /&gt;Until I see the tools to compete Adobe, JavaFX as a clever way of creating Swing components, with all the same limitations that come with Swing Applications and Applets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-2030476092764776917?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/2030476092764776917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=2030476092764776917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/2030476092764776917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/2030476092764776917'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2007/05/javafx-or-swingfx.html' title='JavaFX or SwingFX'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-6310775251872903816</id><published>2007-04-16T10:53:00.000-04:00</published><updated>2007-04-16T12:34:14.602-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JAXB'/><category scheme='http://www.blogger.com/atom/ns#' term='JAX-WS'/><category scheme='http://www.blogger.com/atom/ns#' term='POJO'/><category scheme='http://www.blogger.com/atom/ns#' term='Java 7'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><category scheme='http://www.blogger.com/atom/ns#' term='annotations'/><title type='text'>Feature Request: External Annotations for Java 7</title><content type='html'>Annotations in Java allow developers to provide meta-data about a class. This meta-data is used by tools such as JPA, JAXB, JDBC and many others to perform their various functions. However, a developer may only annotate the classes they are writing. They cannot annotate existing classes, such as those provided by J2SE, a third party jar, or those classes generated by  tool such as JAXB or wsimport.&lt;br /&gt;&lt;br /&gt;When j2EE 5 was new, there was much talk about simplicity, tools no longer required XML descriptor files, since the classes themselves contained the required meta data. The trouble is that only one set of annotations can apply to a class, those annotations that were applied at development time.&lt;br /&gt;&lt;br /&gt;Let me give an example of how it would be useful to annotate an existing class. Suppose you are developing an application that works with an existing web-service and you want to store some of the returned objects in a database. The first thing you do is point wsimport at the wsdl file and it generates a bunch of classes. Then you hand edit each class with the appropriate javax.persistence annotations. Ok, this sounds like it will work, but what happens when that wsdl changes slightly (say during development), you have to regenerate all the classes and reapply the persistence annotations, an error prone process to say the least, a unit test could save you some errors, but what could be worse then writing unit test that check annotations:)&lt;br /&gt;&lt;br /&gt;It would be much simpler if you could apply those annotations in an external file. Imagine a XML file for annotating a ContactInfo Class that looked something like this:&lt;br /&gt;&lt;br /&gt;&amp;lt;annotations&amp;gt;&lt;br /&gt;&amp;lt;class&amp;gt;&lt;br /&gt;&amp;lt;annotation name='javax.persistence.Entity'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='name' valuetype='string'&amp;gt;ContactInformation&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/annotation&amp;gt;&lt;br /&gt;&amp;lt;/class&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;field name='Addresses'&amp;gt;&lt;br /&gt;&amp;lt;annotation name='javax.persistence.OneToMany'&amp;gt;&lt;br /&gt;       &amp;lt;parameter name='cascade' valuetype='constant'&amp;gt;javax.persistence.CascadeType.ALL&amp;lt;/parameter&amp;gt;&lt;br /&gt;    &amp;lt;parameter name='fetch' valuetype='constant'&amp;gt;javax.persistence.FetchType.EAGER&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/annotation&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;method name='sendMail' parameters='String,String'&amp;gt;&lt;br /&gt;   &amp;lt;annotation name='Deprecated'&amp;gt;&lt;br /&gt;&amp;lt;/annotation&amp;gt;&lt;br /&gt;&amp;lt;/method&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/annotations&amp;gt;&lt;br /&gt;&lt;br /&gt;Maybe or more Java like format would make sense, we could borrow from the interface format, something like:&lt;br /&gt;&lt;br /&gt;package org.someone.else's.packages;&lt;br /&gt;&lt;br /&gt;@Entity(name='"ContactInformation")&lt;br /&gt;public annotation ContactInfo {&lt;br /&gt;&lt;br /&gt;@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)&lt;br /&gt;protected List&amp;lt;Address&amp;gt; addresses;&lt;br /&gt;&lt;br /&gt;@Deprecated public int sendMail(String from, String mode);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I image that these annotation files could exists in your Java source. You would place them in a package just as you would a class, so if you wanted to add an annotation to java.awt.Color, you would create the file [srcbase]/java/awt/Color.annotation&lt;br /&gt;&lt;br /&gt;This allow javac to check that you are using the new annotations correctly and that you are annotating existing fields and methods. This file (or a 'compiled' version) would also be included in any Jar file you create, so the annotations can be appended at runtime.&lt;br /&gt;&lt;br /&gt;you might ask, "Doesn't this just add back the XML configuration files we got rid of?" i would say no, because they are optional, you can always simply annotate a class you are writing in the standard way. Plus, the annotations are all in a standard format and you gain compile time checking.&lt;br /&gt;&lt;br /&gt;Also, say you want to distribute a jar that contains your basic data types, but you don't want to include the nasty details of how it maps to your database, then you could simply omit the *.annotation files.&lt;br /&gt;&lt;br /&gt;If Properties do find their way into Java and they turn out to be annotation based, then this could provide  way of applying annotations to legacy code, since no changes would be required to the source code, simply annotate the existing classes anyway you want.&lt;br /&gt;&lt;br /&gt;I would love some feedback on this!&lt;br /&gt;-Lucas&lt;br /&gt;&lt;br /&gt;&lt;address&gt;&lt;br /&gt;&lt;br /&gt;&lt;/address&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-6310775251872903816?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/6310775251872903816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=6310775251872903816' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6310775251872903816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/6310775251872903816'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2007/04/external-annotations-for-java-7.html' title='Feature Request: External Annotations for Java 7'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-114246579171573626</id><published>2006-03-15T18:36:00.000-05:00</published><updated>2007-04-16T12:39:28.562-04:00</updated><title type='text'>Java Widgets....SWT??</title><content type='html'>I have started investigating SWT as a platform for a Java based widget library. A quick test on my Fedora machine showed everything I require is possible, plus support for non rectangular windows, err Shells. I will continue my testing on Windows and OS X and see if all of these features work on all platforms. I have my doubts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EDIT:&lt;/span&gt; After a year of not messing with this idea, looks like I can just use the work done by &lt;a href="http://weblogs.java.net/blog/joshy/archive/2007/03/ab5k_widgets_in.html"&gt;Joshua Marinacci.&lt;/a&gt; Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-114246579171573626?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/114246579171573626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=114246579171573626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/114246579171573626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/114246579171573626'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2006/03/java-widgetsswt.html' title='Java Widgets....SWT??'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-114217180696454674</id><published>2006-03-12T08:53:00.000-05:00</published><updated>2006-03-12T12:09:57.196-05:00</updated><title type='text'>J2SE and Widgets</title><content type='html'>I am working on creating a JWidget class and am looking for the correct base class. I want my widget to be always on top, not appear in the windows task bar, have no decorations and accept both mouse and keyboard input. I have investigated JFrame, JWindow and JDialog on J2SE 1.4.2 and J2SE 5. here are the results:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2" cellspacing="1"&gt;&lt;caption&gt;J2SE 1.4.2&lt;/caption&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;JFrame&lt;/th&gt;&lt;th&gt;JWindow&lt;/th&gt;&lt;th&gt;JDialog&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Invisible on task bar&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;can be always on top&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;No Decorations&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Accepts mouse input&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Accepts keyboard input&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2" cellspacing="1"&gt;&lt;caption&gt;J2SE 5&lt;/caption&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;JFrame&lt;/th&gt;&lt;th&gt;JWindow&lt;/th&gt;&lt;th&gt;JDialog&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Invisible on task bar&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;can be always on top&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES*&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;No Decorations&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Accepts mouse input&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Accepts keyboard input&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;th&gt;NO&lt;/th&gt;&lt;th&gt;YES&lt;/th&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; (*) must always be on top.&lt;br /&gt;&lt;br /&gt;Unfortunately there are some considerable differences between 1.4.2 and 5. I might want to limit my JWidget class to 1.4.2 functionality to support OS X. more on that later. Provided J2SE is an option, it looks like JDialog is the way to go, though JFrame is perfectly acceptable if being invisible on the task bar is not a concern. I admit I was surprised that JDialog would meet all my requirements, I am going to do some more investigating to make sure that JDialog does not perform oddly on the different platforms.&lt;br /&gt;&lt;br /&gt;Also, since these different pieces of functionality are provided by different classes. It looks as though making sensible methods like setVisibleOnTaskBar() will be impossible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-114217180696454674?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/114217180696454674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=114217180696454674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/114217180696454674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/114217180696454674'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2006/03/j2se-and-widgets.html' title='J2SE and Widgets'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-111593638741060885</id><published>2005-05-12T17:42:00.000-04:00</published><updated>2005-05-12T18:20:25.016-04:00</updated><title type='text'>When an upgrade is a downgrade</title><content type='html'>It was the case that when I plugged my Cannon PowerShot S500 into my Fedora Core 1 machine it simply mounted the camera as a USB drive on my desktop. I just tested this on another FC1 machine and it did not “just mount”, so I must have monkeyed with it. Anyway, currently when I plug my camera into my FC3 machine an Import Photos application automatically starts asking if I would like to copy the images to my home directory. Not bad, but I prefer the old way. Google suggests I play with my /etc/fstab file, but that will not disable the “Import Application”, what ever that is.  The 'gconf' application does not seem to have an entry about this import application either. I will try and answer the “How do I switch the behavior of my system in the best FC3/GNOME way”  in a future post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-111593638741060885?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/111593638741060885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=111593638741060885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/111593638741060885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/111593638741060885'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2005/05/when-upgrade-is-downgrade.html' title='When an upgrade is a downgrade'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12306579.post-111556001316153502</id><published>2005-05-08T09:46:00.000-04:00</published><updated>2005-05-08T09:46:53.166-04:00</updated><title type='text'>java.lang.Thread's sleep method is static</title><content type='html'>I have noticed that Java programmers often use Thread's sleep method like this:&lt;br /&gt;Thread.currentThread().sleep(DateUtils.MILLIS_IN_SECOND);&lt;br /&gt;however, Thread.sleep is static, thus the following is equivalent:&lt;br /&gt;Thread.sleep(DateUtils.MILLIS_IN_SECOND);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12306579-111556001316153502?l=lucasjordan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lucasjordan.blogspot.com/feeds/111556001316153502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12306579&amp;postID=111556001316153502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/111556001316153502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12306579/posts/default/111556001316153502'/><link rel='alternate' type='text/html' href='http://lucasjordan.blogspot.com/2005/05/javalangthreads-sleep-method-is-static_08.html' title='java.lang.Thread&apos;s sleep method is static'/><author><name>Lucas Jordan</name><uri>http://www.blogger.com/profile/12292773878160885691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_8Nqq_95X4G4/Sjj_-URNvQI/AAAAAAAAAFc/YzW03aEst9E/S220/Photo+1.jpg'/></author><thr:total>0</thr:total></entry></feed>
