<?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-6383155439908628110</id><updated>2011-07-08T03:51:25.999-07:00</updated><title type='text'>Per aspera ad astra (To the stars through difficulties)</title><subtitle type='html'>Java FX from the point of view of a lawyer. Technical implications of the language. Media licenses. Java Store.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-8470993257787020186</id><published>2009-07-28T14:10:00.000-07:00</published><updated>2009-08-03T08:08:57.217-07:00</updated><title type='text'>What is a JavaFX app?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img src="http://farm4.static.flickr.com/3112/3099540845_5ab3381f99_m.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;It depends on who you ask. For the programmer is code. For the designer is media (images, video, layout, fonts). For the art director is the way you combine all things. For the user, an app is 'cool' or does not exist.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; In any case, a JavaFX app is a combination of multiple ingredients. If one ingredient of the recipe lacks, there is no app. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Tools like the &lt;a href="http://creativecommons.org/press-releases/entry/5692"&gt;Google CC media search engine&lt;/a&gt; are great because represent an easy way to locate media for our apps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Related resources:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://search.yahoo.com/cc"&gt;Yahoo CC search&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.google.com/advanced_search"&gt;Google CC search&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://search.creativecommons.org/"&gt;CC search&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-8470993257787020186?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/8470993257787020186/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/what-is-javafx-app.html#comment-form' title='39 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/8470993257787020186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/8470993257787020186'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/what-is-javafx-app.html' title='What is a JavaFX app?'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3112/3099540845_5ab3381f99_t.jpg' height='72' width='72'/><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-5129649036748522184</id><published>2009-07-28T11:42:00.000-07:00</published><updated>2009-07-28T13:03:20.243-07:00</updated><title type='text'>How to embed fonts in JavaFX</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__yxEIojpFJU/Sm9XcyqxrwI/AAAAAAAAAD0/08Kj1nqHukQ/s1600-h/swing.jpg" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;Let's supose you want to use a font not present in the system. For example you want to use a 'grunge' font:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__yxEIojpFJU/Sm9XcyqxrwI/AAAAAAAAAD0/08Kj1nqHukQ/s1600-h/swing.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/__yxEIojpFJU/Sm9XcyqxrwI/AAAAAAAAAD0/08Kj1nqHukQ/s320/swing.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5363601833370693378" style="cursor: pointer; width: 640px; height: 86px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The font used here is Viper Vera. It turns out that you can 'embed' the font with your application. How?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the &lt;a href="http://forums.sun.com/thread.jspa?threadID=53"&gt;Java FX forum &lt;/a&gt;you can read:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; "&gt;&lt;i&gt;&lt;/i&gt;&lt;blockquote&gt;&lt;i&gt;You embed the font along with your application. You load the font by name. Simply place the ttf font file in a package in your application. Then you need to include a fonts.mf file in the META-INF of the jar so that we can discover the embedded fonts at runtime. The fonts.mf file is simply a properties file that lists the name of the font and the location of the font.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;fonts.mf:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Arindam\ Neo\ Bold = /com/mycompany/fonts/arind.ttf&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;for example. Then in code you just load a font by name, using the name that you entered into your fonts.mf:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Font {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;name: "Arindam Neo Bold"&lt;/i&gt;&lt;br /&gt;&lt;i&gt;size: 27&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;/blockquote&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-5129649036748522184?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/5129649036748522184/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/how-to-embed-fonts-in-javafx.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/5129649036748522184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/5129649036748522184'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/how-to-embed-fonts-in-javafx.html' title='How to embed fonts in JavaFX'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__yxEIojpFJU/Sm9XcyqxrwI/AAAAAAAAAD0/08Kj1nqHukQ/s72-c/swing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-2298959448012341770</id><published>2009-07-26T13:55:00.000-07:00</published><updated>2009-07-26T13:58:26.147-07:00</updated><title type='text'>IDEOLOGIA</title><content type='html'>&lt;span class="Apple-style-span"  style="color: rgb(51, 51, 51);  line-height: 20px; font-size:13px;"&gt;&lt;div&gt;Imagine an authentication scheme without textual passwords. Welcome to &lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;IDEOLOGIA&lt;/span&gt;&lt;/b&gt;, a system that allows the user to log on different websites with spatial based gestures.&lt;/div&gt;&lt;div&gt;Based on the previous works &lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;KAOS &lt;/span&gt;&lt;/b&gt;and &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;ILLITERATE&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;User instructions:&lt;/div&gt;&lt;div&gt;In order to be directed to the NSA website (www.nsa.gov) the user needs to invoke the following sequence of gestures:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;      &lt;/span&gt;1. NORTH&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;      &lt;/span&gt;2. NORTH&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;      &lt;/span&gt;3. NORTHEAST&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the sequence is "typed" IDEOLOGIA will open a browser with the URL www.nsa.gov. No button or any usual user interface has to be pressed, just drag&amp;amp;drop gestures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="white-space: pre-wrap;   font-family:Arial;font-size:13px;"&gt;See a demo on youtube:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;object width="640" height="505"&gt;&lt;param name="movie" value="http://www.youtube-nocookie.com/v/UPa4Hz9vv9Q&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube-nocookie.com/v/UPa4Hz9vv9Q&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-2298959448012341770?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/2298959448012341770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/ideologia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/2298959448012341770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/2298959448012341770'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/ideologia.html' title='IDEOLOGIA'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-470545759445479434</id><published>2009-07-26T13:51:00.000-07:00</published><updated>2009-07-26T13:54:57.096-07:00</updated><title type='text'>Illiterate</title><content type='html'>&lt;span class="Apple-style-span"  style="color: rgb(51, 51, 51);  line-height: 20px; font-size:13px;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Imagine a computer environment without buttons o textboxes. Welcome to &lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;&lt;i&gt;ILLITERATE&lt;/i&gt;.&lt;/span&gt;&lt;/b&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;Based on the previous work&lt;/span&gt;&lt;/span&gt; &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;Kaos&lt;/span&gt;, &lt;/b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); font-style: italic; font-weight: bold; "&gt;ILLITERATE &lt;/span&gt;is a learning tool for disabled people.&lt;/div&gt;&lt;div&gt;Every word is presented to the user with a twist: a visual representation of the 'kaos level' of the word presented.&lt;/div&gt;&lt;div&gt;While the user advances on the typing work, the initial order is restored.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can watch a &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;&lt;i&gt;&lt;b&gt;ILLITERATE&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;demo (you tube video)&lt;a href="http://www.youtube.com/watch?v=ajan4JF2jwY" style="color: rgb(85, 136, 170); text-decoration: none; "&gt; &lt;/a&gt;here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube-nocookie.com/v/3j-XJw1RQE4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube-nocookie.com/v/3j-XJw1RQE4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-470545759445479434?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/470545759445479434/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/illiterate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/470545759445479434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/470545759445479434'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/illiterate.html' title='Illiterate'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-4385538551650213954</id><published>2009-07-26T12:36:00.000-07:00</published><updated>2009-07-26T12:47:43.829-07:00</updated><title type='text'>Kaos, the roadmap</title><content type='html'>&lt;span class="Apple-style-span"  style="color: rgb(51, 51, 51);  line-height: 20px; font-size:13px;"&gt;&lt;div&gt;&lt;b&gt;My name is Joan and I am a lawyer&lt;/b&gt; [*].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;mmm.. so, how can a lawyer write JavaFX applications?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, thats a wrong question, man. Who invented XML? A lawyer. Who was the best number theorist mathematician? Fermat, a french lawyer. Who.... well, that's enough for today.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's talk about &lt;span class="Apple-style-span"  style=" ;font-size:small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 204); "&gt;Kaos&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;, a Java FX application. Java FX is an interesting beast, a DSL with very interisting skills. One is &lt;i&gt;closures&lt;/i&gt;. If you know Smalltalk o Newspeak you know waht I mean.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;Kaos&lt;/span&gt;&lt;/b&gt; is a litte prototype or proof of concept. Also is a engine that will be used in posterior applications: &lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;&lt;i&gt;Illiterate&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;and&lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;IDEOLOGIA&lt;/span&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Playing Kaos is very easy. Your goal is to restore the initial order. In order to do so, you can drag&amp;amp;drop the scrambled pieces of the initial image.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Playing &lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); "&gt;Kaos&lt;/span&gt;&lt;/b&gt; you will feel like Sisyphus a greek king punished in Tartarus by being cursed to roll a huge boulder up a hill, only to watch it roll back down, and to repeat this throughout eternity.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="line-height: 19px;  font-family:-webkit-sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can watch a demo of a KAOS session &lt;a href="http://www.youtube.com/watch?v=luqxgBa4eHM"&gt;here&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube-nocookie.com/v/luqxgBa4eHM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube-nocookie.com/v/luqxgBa4eHM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[*] Well, a studend lawyer is more accurate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-4385538551650213954?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/4385538551650213954/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/kaos-roadmap.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/4385538551650213954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/4385538551650213954'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/kaos-roadmap.html' title='Kaos, the roadmap'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-3984349001419817698</id><published>2009-07-26T10:03:00.000-07:00</published><updated>2009-07-26T11:06:44.732-07:00</updated><title type='text'>Playing with licenses - Exercises</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now let's present some practical license exercises. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don't forget to review  prior related posts:&lt;/div&gt;&lt;div&gt;&lt;a href="http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses.html"&gt;Playing with Licenses&lt;/a&gt;  and&lt;/div&gt;&lt;div&gt;&lt;a href="http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses-ii.html"&gt;Playing with licenses -II&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Also you can execute the JavaFX app &lt;a href="http://usuarios.lycos.es/cascais/license/license_browser.jnlp"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Exercise 1.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Let's supose you have found the following image:&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;img src="http://go635254.s3.amazonaws.com/ecopreneurist/files/2009/03/chubby-eco-gel-pen.jpg" /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;This image has a CC license: &lt;b&gt;BY-SA&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Can I use the following derived work in my web blog?&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__yxEIojpFJU/SmyYAPR5JXI/AAAAAAAAADs/yaPuAt6Fw20/s1600-h/pen2.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/SmyYAPR5JXI/AAAAAAAAADs/yaPuAt6Fw20/s320/pen2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5362828386160420210" style="cursor: pointer; width: 320px; height: 315px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Response&lt;/b&gt;: Yes.  You are allowed to copy and modify the image. But don't forget to tag the derived  image with a BY-SA license.&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-3984349001419817698?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/3984349001419817698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses-exercises.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/3984349001419817698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/3984349001419817698'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses-exercises.html' title='Playing with licenses - Exercises'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__yxEIojpFJU/SmyYAPR5JXI/AAAAAAAAADs/yaPuAt6Fw20/s72-c/pen2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-6724869010575252362</id><published>2009-07-25T12:46:00.000-07:00</published><updated>2009-07-26T09:58:29.132-07:00</updated><title type='text'>How to clear the JavaFX caché</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Just go to the &lt;b&gt;Control Panel&lt;/b&gt; and click on the Java icon:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/images/general-3.gif" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Then go to the &lt;b&gt;Delete Files...&lt;/b&gt; button and voilà, that's all!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-6724869010575252362?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/6724869010575252362/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/how-to-clear-javafx-cache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/6724869010575252362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/6724869010575252362'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/how-to-clear-javafx-cache.html' title='How to clear the JavaFX caché'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-1763397954324348285</id><published>2009-07-20T14:17:00.000-07:00</published><updated>2009-07-26T07:22:56.471-07:00</updated><title type='text'>JavaFX App Store dictionary</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;30 % comission&lt;/b&gt;. Official stores collect a 30% commision from the sellers on its stores.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="http://www.android.com/market/"&gt;Android Market&lt;/a&gt;&lt;/b&gt; (Google) Available in &lt;a href="http://market.android.com/support/bin/answer.py?hl=en&amp;amp;answer=138294"&gt;some countries&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;App Store.&lt;/b&gt; Note that the term App Store is not entirely correct because some stores sell also content (ringtones, movies, music), games,... Anyway, the term has stuck and is any good as any other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://na.blackberry.com/eng/services/appworld/?"&gt;&lt;b&gt;App World &lt;/b&gt;&lt;/a&gt;(RIM Blackberry)&lt;/div&gt;&lt;div&gt;&lt;img src="http://na.blackberry.com/eng/promo_02_appworld.jpg" alt="Enter BlackBerry App World" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;Bulk applications&lt;/b&gt;. Also Known as the dirty little secret of Apple Store. iTunes has 65.000 apps on sale, but most of they are little variations of the same application written by the same publisher. Template-based apps makes you wonder how real the 65.000 number is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Ecosystem&lt;/b&gt;. Many journalist see App Stores not like an integration of some hardware, developers plus consumers. For them, an App store is just a manifestation of a complete ecosystem and a thriving developer platform. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Ericsson App Store&lt;/b&gt;. &lt;span class="Apple-style-span"   style=" color: rgb(51, 51, 51); line-height: 20px;  font-family:verdana;font-size:medium;"&gt;By August its customers will be able to personalize their phones with a range of downloadable utilities, tools, and games over multiple platforms. Dont expect to find Sony (a partner of Ericcson) here.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;iTune&lt;/b&gt;&lt;b&gt;s App Store&lt;/b&gt;. D&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 20px; font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;ubbed the last greatest capitalism experiment. Has been a terrific success. More than 500m applications, from games to interactive travel guides, have been downloaded in just a year.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  line-height: normal; font-family:Georgia;"&gt;&lt;div&gt;&lt;b&gt;Java Store&lt;/b&gt;. From Sun-Oracle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://www-cdn.sun.com/images/hp1/hp1_student_06-02-09.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href="https://emocion.movistar.es/mstore/"&gt;mStore&lt;/a&gt;&lt;/b&gt; From Movistar. Just one of  the worst user interface of the whole cyberspace.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__yxEIojpFJU/Smt04XkI3YI/AAAAAAAAADc/FEx-zZd48Sg/s1600-h/mStore.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/Smt04XkI3YI/AAAAAAAAADc/FEx-zZd48Sg/s320/mStore.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5362508293061795202" style="cursor: pointer; width: 320px; height: 150px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 20px; font-family:verdana;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Orange Application Store.&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; It is already available for selected handsets in France, official release will happen before the year is over in France first, followed by the UK.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;b&gt;&lt;a href="https://store.ovi.com/"&gt;Ovi Store&lt;/a&gt;&lt;/b&gt;. From Nokia.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;img src="https://publish.ovi.com/images/ovi/ovi_lockup.png?1244202606" alt="Ovi_lockup" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;b&gt;&lt;a href="http://oraclestore.oracle.com/"&gt;Oracle Store&lt;/a&gt;. &lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Custormers can purchase Oracle VM Support, Oracle VM media packs, and Oracle Enterprise Linux support services media packs.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/SlYQW7tTBXI/AAAAAAAAAB8/DPi0nV5ZTHA/s320/oracle.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;b&gt;&lt;a href="http://plaza.qualcomm.com/"&gt;Plaza Retail Store&lt;/a&gt;. &lt;/b&gt;This is the Qualcom store.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;img src="http://www.celularis.com/wp-content/uploads/2009/05/plaza-retail.jpg" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;color:#333333;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Race to the bottom&lt;/b&gt;.  Apps in the Stores have to compete with lower prices in order to try to boost their exposure on the rankings. Critics of this system have argued that this encorauges a "$0.99" economy which will prevent companies from investing in higher quality titles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Rogue App Store&lt;/b&gt;. Online App Store not authorized by the official store. The most famous rogue App Store is &lt;b&gt;Cydia Store&lt;/b&gt; that sells hundreds of iPhone applications not available at the Apple official store. Cydia was created by Jay Freeman (a.k.a. Saurik), a 27-year-old computer science doctoral student in Santa Barbara, California. Cydia Store users pay through Amazon Payments.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Vodafone App Store&lt;/b&gt;. Just announced.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Windows MarketPlace&lt;/b&gt;. (Microsoft)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://img.windowsmarketplace.com/img/edt/marketplace2.0/statichome/images/frame/wmp-logo.jpg" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-1763397954324348285?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/1763397954324348285/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/javafx-app-store-dictionary.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/1763397954324348285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/1763397954324348285'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/javafx-app-store-dictionary.html' title='JavaFX App Store dictionary'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__yxEIojpFJU/Smt04XkI3YI/AAAAAAAAADc/FEx-zZd48Sg/s72-c/mStore.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-5040886593587676496</id><published>2009-07-16T14:26:00.000-07:00</published><updated>2009-07-28T14:02:00.934-07:00</updated><title type='text'>Who killed Swing?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Marcus_Aurelius_Glyptothek_Munich.jpg/250px-Marcus_Aurelius_Glyptothek_Munich.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 1. Marcus Aurelius emperor&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Good question.  Who killed Swing? It seems no one knows the answer. In theory Swing was not a bad boy, and it does not deserve this slow passing away. So, what happened?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Marcus Aurelius was a Roman emperor, he ruled the western world from 161 to his death in 180 A.D. People describe him as a 'perfect emperator', except for one detail: he named succesor his son Commodus, not a balanced boy, so to speak. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; He  is also known for his book &lt;i&gt;Meditations &lt;/i&gt;writen in campaign. Meditations is still revered as a literary monument of service and duty. One fragment:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;                 &lt;b&gt;&lt;i&gt;"To be kind is invincible"&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, Swing was not kind at all. It was complex and  bloated. Writing a simple layout with Swing was difficult. The same  layout in JavaFX is a piece of cake. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How easy is to be kind with JavaFX!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Marcus Aurelius "the wise" faced many challenges. In Asia, the Parthian empire invaded Armenia and Syria.  From the north germanic tribes launched raids againts the  border. He deal successfully with the attacks. Key to their success was a prior decission:&lt;/div&gt;&lt;div&gt; Marcus accepted the emperor throne with one condition: that he and Verus (military chief) were made joint emperors. This way, Verus had little incentive to overthrow Marcus. Verus remained loyal until his dead in 169.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Today, this would be an example of 'strategic partnership'. Really it was just common sense.  Java FX has a very good foundation, but you need more than a nice language to thrive. Strategic alliances are needed to leverage the JavaFX potential. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-5040886593587676496?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/5040886593587676496/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/who-killed-swing.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/5040886593587676496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/5040886593587676496'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/who-killed-swing.html' title='Who killed Swing?'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-6552252857609846503</id><published>2009-07-15T12:23:00.000-07:00</published><updated>2009-07-16T12:19:44.769-07:00</updated><title type='text'>Playing with licenses - II</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;In the last post &lt;a href="http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses.html"&gt;Playing with licenses &lt;/a&gt;we have outlined the main points for two kind of licenses:&lt;div&gt;&lt;br /&gt;&lt;div&gt;- &lt;b&gt;All right reserved:  &lt;/b&gt;Author (the person who created the media work) has all the rights.&lt;/div&gt;&lt;div&gt;- &lt;b&gt;Creative Commons (CC) license:&lt;/b&gt;   Author leaves some rights. This license can  take six forms:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Attribution (BY)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__yxEIojpFJU/Sl4xQHAXIDI/AAAAAAAAACk/lnzOQlCRbuQ/s1600-h/by.png"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/Sl4xQHAXIDI/AAAAAAAAACk/lnzOQlCRbuQ/s320/by.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358774759445700658" style="cursor: pointer; width: 320px; height: 160px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;                                                       Figure 1. License BY&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This license lets others distribute, remix, tweak, and build upon your work, even commercially, as long as they credit you for the original creation. This is the most accommodating of licenses offered, in terms of what others can do with your works licensed under Attribution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Attribution - Share Alike (BY-SA)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__yxEIojpFJU/Sl5HDUoOlLI/AAAAAAAAACs/OVnOMB_GALs/s1600-h/by-sa.png"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/Sl5HDUoOlLI/AAAAAAAAACs/OVnOMB_GALs/s320/by-sa.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358798729020085426" style="cursor: pointer; width: 320px; height: 150px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 2. License BY-SA &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  This license lets others remix, tweak, and build upon your work even for commercial reasons, as long as they credit you and license their new creations&lt;b&gt; under the identical terms&lt;/b&gt;. This license is often compared to open source software licenses. All new works based on yours will carry the same license, so any derivatives will also allow commercial use.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Atribution - No Derivatives (BY-ND)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/Sl5Lx6cFw0I/AAAAAAAAAC0/akwJLVMaFnY/s1600-h/by-nd.png"&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/Sl5Lx6cFw0I/AAAAAAAAAC0/akwJLVMaFnY/s320/by-nd.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358803927490216770" style="cursor: pointer; width: 320px; height: 161px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 3. BY-ND license&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left;"&gt;This license allows for redistribution, commercial and non-commercial, as long as it is passed&lt;/div&gt;&lt;div style="text-align: left;"&gt;along unchanged and in whole, with credit to you.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Attribution -  Non commercial (BY-NC)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__yxEIojpFJU/Sl5M7u9FVOI/AAAAAAAAAC8/kVlfJvcKksw/s1600-h/by-nc.png"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/Sl5M7u9FVOI/AAAAAAAAAC8/kVlfJvcKksw/s320/by-nc.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358805195717694690" style="cursor: pointer; width: 320px; height: 130px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 4. Attribution - Non commercial&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"    style="font-family:Arial;font-size:100%;color:#333333;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px;font-size:13px;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:130%;color:#000000;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This license lets others remix, tweak, and build upon your work non-commercially, and although their new works must also acknowledge you and be non-commercial, they don’t have to license their derivative works on the same terms.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Attribution Non Commercial Share-Alike (BY-NC-SA)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__yxEIojpFJU/Sl5PWMvZZUI/AAAAAAAAADM/qp6jq97HzGc/s1600-h/by-nc-sa.png"&gt;&lt;img src="http://2.bp.blogspot.com/__yxEIojpFJU/Sl5PWMvZZUI/AAAAAAAAADM/qp6jq97HzGc/s320/by-nc-sa.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358807849413207362" style="cursor: pointer; width: 320px; height: 122px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 5. BY-NC-SA&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms. Others can download and redistribute your work just like the by-nc-nd license, but they can also translate, make remixes, and produce new stories based on your work. All new work based on yours will carry the same license, so any derivatives will also be non-commercial in nature.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Attribution Non commercial Non derivatives (BY-NC-ND)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__yxEIojpFJU/Sl5RBj8fr8I/AAAAAAAAADU/adm6y7jhp00/s1600-h/by-nc-nd.png"&gt;&lt;img src="http://2.bp.blogspot.com/__yxEIojpFJU/Sl5RBj8fr8I/AAAAAAAAADU/adm6y7jhp00/s320/by-nc-nd.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358809693888163778" style="cursor: pointer; width: 320px; height: 137px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 6. BY-NC-ND&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This license is the most restrictive of our six main licenses, allowing redistribution. This license is often called the “&lt;b&gt;free advertising&lt;/b&gt;” license because it allows others to download your works and share them with others as long as they mention you and link back to you, but they can’t change them in any way or use them commercially.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-6552252857609846503?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/6552252857609846503/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/6552252857609846503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/6552252857609846503'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses-ii.html' title='Playing with licenses - II'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__yxEIojpFJU/Sl4xQHAXIDI/AAAAAAAAACk/lnzOQlCRbuQ/s72-c/by.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-936700540043256490</id><published>2009-07-09T09:01:00.000-07:00</published><updated>2009-07-16T11:41:11.331-07:00</updated><title type='text'>Playing with licenses</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;img src="http://farm4.static.flickr.com/3472/3249524977_91a2c3ea6d.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Image Licenses are not necessarily a complex subject. You can even play with the concept. Let's take a very practical approach:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Consider the portal  Picasa. Picasa (&lt;a href="http://www.picasa.com/"&gt;www.picasa.com)&lt;/a&gt; is a google online portal  where photo aficionados can upload their captures. Users can take pictures and backup them online. You can easily tag, order, share and even manipulate every item of your great picture collection.&lt;/div&gt;&lt;div&gt;Picasa allows the user to decide the license of their creations, you can do it in &lt;i&gt;Settings &lt;/i&gt;-&gt; &lt;i&gt;Privacy and Permissions &lt;/i&gt;.&lt;/div&gt;&lt;div&gt;Here you can choose an appropiate license for yout photos. Here is a screenshot:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__yxEIojpFJU/SlY8FawqFVI/AAAAAAAAACM/CL3FTGya2js/s1600-h/picasa.png"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/SlY8FawqFVI/AAAAAAAAACM/CL3FTGya2js/s320/picasa.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5356534870584202578" style="cursor: pointer; width: 320px; height: 150px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure1. Choosing a license in Picasa&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In short, you have two options: All rights reserved or a CreativeCommons license:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;All right reserved&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Wiht this license you retain all rights of your creation. It is a fair decission, for one thing you are the autor of the picture!&lt;/div&gt;&lt;div&gt;In this case, you can add the legend: &lt;b&gt;©All rights reserved&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;What does that mean? If someone want to use your creation(for example, allocating your photo in their personal blog) needs to ask you for permission. &lt;/div&gt;&lt;div&gt;Every person o company that uses your  photo without your permission can be sued.&lt;/div&gt;&lt;div&gt;May be you are asking, what is the point of this? Would not it be better to allow everybody to use all images? Well, it is your entire decission. If you want to allow &lt;/div&gt;&lt;div&gt;everybody to use your creation you can use other license (we will review theses licenses later), on the other hand if you want to retain all rights on your &lt;/div&gt;&lt;div&gt;creation you can do it.  In theory (some authors disagree here )licenses provide authors with a greater incentive to create. This economic incentive fosters creation and innovation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Creative Commons licenses&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt; Leave some rights of your images. Of course, there are some rights you can not renounce,&lt;/div&gt;&lt;div&gt;for example attribution: You are the author of this great picture, and no license can change this fact. But you can renounce to some other rights, for example, you can allow everybody to use your picture without asking permission. In this case you can tag the image with this legend.  &lt;b&gt;CreativeCommons(CC)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, after this introduction let's present a JavaFX app equivalent to the Picasa license page:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__yxEIojpFJU/Slzv5E4EGaI/AAAAAAAAACU/H76GFMOqel4/s1600-h/licenses.png"&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/Slzv5E4EGaI/AAAAAAAAACU/H76GFMOqel4/s320/licenses.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358421420504521122" style="cursor: pointer; width: 320px; height: 262px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;                                                Figure 2. Click for full size&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; In order to execute the application click the&lt;a href="http://usuarios.lycos.es/cascais/license/license_browser.jnlp"&gt; following link&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More on the next blog post!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-936700540043256490?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/936700540043256490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/936700540043256490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/936700540043256490'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/playing-with-licenses.html' title='Playing with licenses'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3472/3249524977_91a2c3ea6d_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-4091238719593225754</id><published>2009-07-01T10:59:00.000-07:00</published><updated>2009-07-15T11:48:48.692-07:00</updated><title type='text'>Shop till U drop!</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://farm1.static.flickr.com/1/62433_6e7bf26399_m.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Apple iTunes App Store (dubbed the last greatest capitalism experiment) has been a terrific success. More than 500m applications, from games to interactive travel guides, have been downloaded.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;Without surprise more companies are roolling out their App Store:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Ericsson App Store&lt;/b&gt;. (Ericsson without Sony)&lt;/li&gt;&lt;/ul&gt;By August its customers will be able to personalize their phones with a range of downloadable utilities, tools, and games over multiple platforms&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Vodafone App Store&lt;/b&gt;. Just announced.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Orange Application Store&lt;/b&gt; which is already available for selected handsets in France,  official release will happen before the year is over in France first, followed by the UK.&lt;/li&gt;&lt;li&gt;&lt;a href="http://plaza.qualcomm.com/"&gt;&lt;b&gt;Plaza Retail Store &lt;/b&gt;&lt;/a&gt;(Qualcomm)&lt;/li&gt;&lt;/ul&gt;                                      &lt;div style="text-align: center;"&gt;&lt;img src="http://www.celularis.com/wp-content/uploads/2009/05/plaza-retail.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.java.com/en/store/index.jsp"&gt;&lt;b&gt;Java Store&lt;/b&gt;&lt;/a&gt; (Oracle)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www-cdn.sun.com/images/hp1/hp1_student_06-02-09.jpg" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://oraclestore.oracle.com/"&gt;Oracle Store&lt;/a&gt; (Oracle) Custormers can purchase Oracle VM Support, Oracle VM media packs, and Oracle Enterprise Linux support services media packs.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__yxEIojpFJU/SlYQW7tTBXI/AAAAAAAAAB8/DPi0nV5ZTHA/s1600-h/oracle.png"&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/SlYQW7tTBXI/AAAAAAAAAB8/DPi0nV5ZTHA/s320/oracle.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5356486792974632306" style="cursor: pointer; width: 320px; height: 52px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://store.ovi.com/"&gt;&lt;b&gt;Ovi Store&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;/b&gt;(Nokia-O2-Orange)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;                                   &lt;img src="https://publish.ovi.com/images/ovi/ovi_lockup.png?1244202606" alt="Ovi_lockup" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   At a glance: users from 152 countries around the world. Support for more than 75 Nokia devices. Integrated mobile billing with 27 operators globally. Localized in 5 different languages. Opened two weeks ago&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Windows Marketplace&lt;/b&gt; (Microsoft)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;                     &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img.windowsmarketplace.com/img/edt/marketplace2.0/statichome/images/frame/wmp-logo.jpg"&gt;&lt;img src="http://img.windowsmarketplace.com/img/edt/marketplace2.0/statichome/images/frame/wmp-logo.jpg" border="0" alt="" style="cursor: pointer; width: 341px; height: 47px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://na.blackberry.com/eng/services/appworld/?"&gt;App World&lt;/a&gt; (RIM's BlackBerry)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://na.blackberry.com/eng/promo_02_appworld.jpg" alt="Enter BlackBerry App World" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.android.com/market/"&gt;Android Market&lt;/a&gt; (Google) Available in &lt;a href="http://market.android.com/support/bin/answer.py?hl=en&amp;amp;answer=138294"&gt;some countries&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/Sl4OfhEyBCI/AAAAAAAAACc/3O7SBkz3xaM/s1600-h/android.png"&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/Sl4OfhEyBCI/AAAAAAAAACc/3O7SBkz3xaM/s320/android.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5358736541234627618" style="cursor: pointer; width: 320px; height: 54px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Only a few shops will thrive. Without doubt Java Store will be one of these. You need more than a closed platform (you know? Ericsson phone chargers are not comppatible with their &lt;b&gt;own &lt;/b&gt;previous models!) in order to be successful.&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Update 1&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;. T&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(64, 64, 64); line-height: 17px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ony Cripps, principal analyst at mobile phone consultancy Ovum, said: "&lt;i&gt;Every man and his dog wants an apps store. Apple's has been such a phenomenal success that all the other players are desperately trying to play catch-up as traditional revenues fall."&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Update 2&lt;/i&gt;&lt;/b&gt;. &lt;span class="Apple-style-span"  style="font-size:large;"&gt;"&lt;/span&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 18px; font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Two months ago Nokia launched a &lt;/span&gt;&lt;a href="http://www.wired.com/gadgetlab/2009/05/nokia-ovi-app-store/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 124, 165); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;revamped app store called Ovi&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt; that featured games, applications, podcasts and videos. But the store got off to a rocky start, as users faced problems accessing it and downloading the programs. Nokia blamed the “extraordinarily high spikes of traffic” for the performance issues. "&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 18px; font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Source: wired.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;try {&lt;br /&gt;var pageTracker = _gat._getTracker("UA-3170465-2");&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;} catch(err) {}&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-4091238719593225754?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/4091238719593225754/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/shop-until-u-drop.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/4091238719593225754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/4091238719593225754'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/07/shop-until-u-drop.html' title='Shop till U drop!'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/1/62433_6e7bf26399_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-7336166400815045243</id><published>2009-06-25T13:04:00.000-07:00</published><updated>2009-06-25T14:38:32.321-07:00</updated><title type='text'>Code: Ten minute introduction to JavaFX</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;package tutorial;&lt;br /&gt;&lt;br /&gt;import java.lang.Thread;&lt;br /&gt;import javafx.data.pull.PullParser;&lt;br /&gt;import javafx.data.xml.QName;&lt;br /&gt;import javafx.io.http.HttpRequest;&lt;br /&gt;import javafx.scene.Group;&lt;br /&gt;import javafx.scene.image.Image;&lt;br /&gt;import javafx.scene.image.ImageView;&lt;br /&gt;import javafx.scene.paint.Color;&lt;br /&gt;import javafx.scene.paint.LinearGradient;&lt;br /&gt;import javafx.scene.paint.Stop;&lt;br /&gt;import javafx.scene.Scene;&lt;br /&gt;import javafx.scene.shape.Rectangle;&lt;br /&gt;import javafx.scene.text.Font;&lt;br /&gt;import javafx.scene.text.Text;&lt;br /&gt;import javafx.stage.Stage;&lt;br /&gt;import javafx.stage.StageStyle;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def sceneWidth = 425;&lt;br /&gt;def sceneHeight = 300;&lt;br /&gt;&lt;br /&gt;var sunrise: String; // sunrise time&lt;br /&gt;var sunset: String;  // sunset time&lt;br /&gt;&lt;br /&gt;var topRectangle: Rectangle = Rectangle {&lt;br /&gt; translateX: 0&lt;br /&gt; translateY: 10&lt;br /&gt; width: sceneWidth - 2&lt;br /&gt; height: 60&lt;br /&gt; stroke: Color.DARKBLUE&lt;br /&gt; strokeWidth: 1&lt;br /&gt; arcWidth: 32&lt;br /&gt; arcHeight: 32&lt;br /&gt; fill: LinearGradient {&lt;br /&gt;     endY: 0&lt;br /&gt;     stops: [&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 0&lt;br /&gt;             color: Color.DARKBLUE&lt;br /&gt;         }&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 1&lt;br /&gt;             color: Color.LIGHTBLUE&lt;br /&gt;         }&lt;br /&gt;     ]&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var bottomRectangle: Rectangle = Rectangle {&lt;br /&gt; translateX: 2&lt;br /&gt; translateY: 160&lt;br /&gt; width: 400&lt;br /&gt; height: 60&lt;br /&gt; stroke: Color.DARKBLUE&lt;br /&gt; arcWidth: 32&lt;br /&gt; arcHeight: 32&lt;br /&gt; fill: LinearGradient {&lt;br /&gt;     endY: 0&lt;br /&gt;     stops: [&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 0&lt;br /&gt;             color: Color.DARKBLUE&lt;br /&gt;         }&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 1&lt;br /&gt;             color: Color.LIGHTBLUE&lt;br /&gt;         }&lt;br /&gt;     ]&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var result: String  =  " Sunrise:  {sunrise} \n Sunset:   {sunset}" on replace oldValue {&lt;br /&gt; println("replace");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var textResult = Text {&lt;br /&gt; wrappingWidth: 200&lt;br /&gt; translateX: 25&lt;br /&gt; translateY: 100&lt;br /&gt; content: bind result ;&lt;br /&gt; fill: Color.DARKBLUE&lt;br /&gt; font: Font { size: 18&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var rightRectangle: Rectangle = Rectangle {&lt;br /&gt; translateX: topRectangle.width - 210&lt;br /&gt; translateY: 10&lt;br /&gt; width: 210&lt;br /&gt; height: 60&lt;br /&gt; stroke: Color.DARKBLUE&lt;br /&gt; arcWidth: 32&lt;br /&gt; arcHeight: 32&lt;br /&gt; fill: LinearGradient {&lt;br /&gt;     endY: 0&lt;br /&gt;     stops: [&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 0&lt;br /&gt;             color: Color.DARKBLUE&lt;br /&gt;         }&lt;br /&gt;         Stop {&lt;br /&gt;             offset: 1&lt;br /&gt;             color: Color.LIGHTBLUE&lt;br /&gt;         }&lt;br /&gt;     ]&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var text = Text {&lt;br /&gt; x: 10&lt;br /&gt; y: 50&lt;br /&gt; font: Font { size: 20&lt;br /&gt; }&lt;br /&gt; fill: Color.WHITE&lt;br /&gt; content: " Barajas - Madrid "&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var url = "http://weather.yahooapis.com/forecastrss?p=SPXX0050&amp;amp;u=c";&lt;br /&gt;println(" url.length :  {url.length()} ");&lt;br /&gt;if (url.length() == 55 ) {&lt;br /&gt; result = " Getting data .... ";&lt;br /&gt;&lt;br /&gt; HttpRequest {&lt;br /&gt;&lt;br /&gt;     location: url&lt;br /&gt;     onDone: function() {&lt;br /&gt;         print ("done");&lt;br /&gt;         // Simulating a slow service&lt;br /&gt;         Thread.sleep(1000);&lt;br /&gt;         result = " Sunrise:  {sunrise} \n  Sunset: {sunset}" ;&lt;br /&gt;     }&lt;br /&gt;     onInput: function(input) {&lt;br /&gt;         try {&lt;br /&gt;             PullParser {&lt;br /&gt;                 input: input&lt;br /&gt;                 onEvent: function(event) {&lt;br /&gt;                     if ((event.type == PullParser.START_ELEMENT) and (event.qname.prefix == "yweather")) {&lt;br /&gt;                         if (event.qname.name == "astronomy") {&lt;br /&gt;                             sunrise = event.getAttributeValue(QName{name: "sunrise"&lt;br /&gt;                             });&lt;br /&gt;                             println("sunrise =  {sunrise}");&lt;br /&gt;                          &lt;br /&gt;                         &lt;br /&gt;                             sunset = event.getAttributeValue(QName{name: "sunset"&lt;br /&gt;                             });&lt;br /&gt;                             println("   sunset =  {sunset}");&lt;br /&gt;                          &lt;br /&gt;                         }&lt;br /&gt;                     }&lt;br /&gt;&lt;br /&gt;                 }&lt;br /&gt;&lt;br /&gt;             }.parse()&lt;br /&gt;&lt;br /&gt;         }  finally {&lt;br /&gt;             input.close();&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}.start();&lt;br /&gt;&lt;br /&gt;// Image&lt;br /&gt;var sunImage: Image = Image {&lt;br /&gt;url: "{__DIR__}media/sun.png"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var sunView: ImageView = ImageView {&lt;br /&gt; translateX: 200&lt;br /&gt; translateY: 50&lt;br /&gt; image: sunImage&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Stage {&lt;br /&gt; title: "  Sunrise and  sunset in Barajas  "&lt;br /&gt; width: sceneWidth&lt;br /&gt; height: sceneHeight&lt;br /&gt; style: StageStyle.TRANSPARENT&lt;br /&gt; scene: Scene {&lt;br /&gt;     width: sceneWidth&lt;br /&gt;     height: sceneHeight&lt;br /&gt;     content: Group {&lt;br /&gt;         content: bind [  topRectangle, text, rightRectangle, textResult, bottomRectangle, sunView ]&lt;br /&gt;&lt;br /&gt;         clip: Rectangle {&lt;br /&gt;             width: sceneWidth&lt;br /&gt;             height: sceneHeight&lt;br /&gt;             arcWidth: 32&lt;br /&gt;             arcHeight: 32&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;     fill: Color.TRANSPARENT&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Related post: &lt;a href="http://sine-sole-sileo.blogspot.com/2009/06/introduction-to-javafx.html"&gt;Ten minute introduction to JavaFX&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-7336166400815045243?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/7336166400815045243/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/06/code-ten-minute-introduction-to-javafx.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/7336166400815045243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/7336166400815045243'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/06/code-ten-minute-introduction-to-javafx.html' title='Code: Ten minute introduction to JavaFX'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6383155439908628110.post-1447045437381973198</id><published>2009-06-22T14:41:00.000-07:00</published><updated>2009-06-26T14:07:40.369-07:00</updated><title type='text'>A ten minute introduction to JavaFX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/SkKwCk6qvXI/AAAAAAAAABs/lL3e9LcPaXU/s1600-h/fig9.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 189px;" src="http://1.bp.blogspot.com/__yxEIojpFJU/SkKwCk6qvXI/AAAAAAAAABs/lL3e9LcPaXU/s320/fig9.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351032865585544562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;While &lt;b&gt;RIA &lt;/b&gt;(which stands for Rich Internet Application)&lt;b&gt; &lt;/b&gt;is not a very popular acronym&lt;b&gt; &lt;/b&gt;, everybody knows what a Flash app is. Surfing the web we find Flash animations all the time. From simulations of the driving test exam  to  the operation of the Patriot missile interceptors.&lt;br /&gt;Adobe Flash applications provide a user interface (drag and drop, sound, effects, graphics, animations) that would be very difficult to achieve using HTML and JavaScript, even using high-level libraries like Prototype. Adobe gives developers a programming environment (based on language ActionScript 3) to create Flash applications. This environment is very popular and provides tools to effectively coordinate the work of  designers (Adobe Photoshop, Illustrator, sounds) and  programmers. Flash applications are also popular among Internet users who do not hesitate to download the browser Flash plug-in.&lt;br /&gt;The popularity of Flash makes it an attractive target for Adobe competition. Thus, alternatives have emerged that aim to put a dent in the market: Microsoft has released Silverlight. Of course, Flash developers are not going to change their platform without a compelling reason. By launching Silverlight Microsoft gave developers a full-screen graphics that used the GPU (graphics accelerator card). Adobe knows that and will offer this feature in the next release of Flash.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/Sj_9JnhNVCI/AAAAAAAAAAU/vYbdnDe6t6c/s320/figure1.jpg" style="cursor:pointer; cursor:hand;width: 320px; height: 155px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5350273224008356898" /&gt;&lt;/div&gt;&lt;div&gt;Figure1. Flash applications&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;This article (written in June 2009) will show us the features offered by Java FX and how is positioned against its competitors (Adobe Flash and Microsoft Silverlight).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although the first official release 1.2 is available right now, important improvements and updates are in the way.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Go ahead to the official website of Java Fx , and download the Netbeans IDE. Once installed the environment, create a project (File&gt;&gt; New Project), we add an FX file (Empty Java FX file) and let's create a first test by dragging a rectangle from the palette 'Basic Shapes" on the editor:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/Sj_9_EjVlsI/AAAAAAAAAAc/cHf67NczUCg/s320/figure2.jpg" style="cursor:pointer; cursor:hand;width: 320px; height: 250px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5350274142334981826" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Figure 2. Netbeans IDE&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that when you release the rectangle, the environment automatically imports all necesary classes. If we execute the project (right click&gt;&gt; Debug) we get a window with no title that contains a  rectangle:&lt;/div&gt;&lt;div&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;img src="http://2.bp.blogspot.com/__yxEIojpFJU/Sj_-wWiLK9I/AAAAAAAAAAk/cG8ap3B6LWc/s320/figure3.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 222px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5350274988975533010" /&gt;&lt;/div&gt;&lt;div&gt;Figure3. Execution of a JavaFX project&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;We did our first test !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have to take into account some considerations: The language used is not Java but JavaScript FX, a new declarative language that runs onto the Java virtual machine. The reason to use a new language is to simplify the developer's life with a syntax more suitable for multimedia applications. It is a DSL (Domain Specific Language) that specializes in interactive entertainment. Here below the main features of the language.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Java FX Script language&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will now see a summary of the features of the Java FX Script language. For a broader view is recommended to consult the excellent tutorials from Sun.&lt;/div&gt;&lt;div&gt;The language incorporates the following basic types: String, Boolean, and Number. Variables are declared using the &lt;b&gt;var &lt;/b&gt;keyword. Consider the following examples:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;&lt;br /&gt;var x: Number = 0.9;&lt;br /&gt;var name: String = "David";&lt;br /&gt;var y: Integer = 0;&lt;br /&gt;var flag: Boolean = true;&lt;br /&gt;var numbers: Number = [1,2,3,4,5];&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;It is not mandatory to declare a variable type in its declaration. Thus, we can write the above lines as follows:&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;var x = 0.9;&lt;br /&gt;var name = "David";&lt;br /&gt;var y = 0;&lt;br /&gt;var flag = true;&lt;br /&gt;var numbers = [1,2,3,4,5];&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Java operators == and ! have their equivalent in JavaFX:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;&lt;br /&gt;(5 == 5 and 6 == 6)    // =&gt; returns true&lt;br /&gt;if (codebase == "" or codebase.startsWith ( "file:"))&lt;br /&gt;not (5 == 4)        // =&gt; true&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Array handling is very intuitive:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;def days = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sat", "Sun"];&lt;br /&gt;println (days [0]) // Monday&lt;br /&gt;println (days [1]) // Tuesday&lt;br /&gt;println (days [2]) // Wednesday&lt;br /&gt;println (days [3]) // Thursday&lt;br /&gt;println (days [4]) // Friday&lt;br /&gt;println (days [5]) // Saturday&lt;br /&gt;println (days [6]) // Sunday&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;x = [1,2,3];&lt;br /&gt;insert 10 as first into x ;  // =&gt; [10,1,2,3]&lt;br /&gt;insert 6 after x[. == 2];    // =&gt; [10,1,2,6,3]&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;To determine the size of the sequence use the &lt;b&gt;sizeof &lt;/b&gt;keyword:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#666666;"&gt;println ( "{sizeof days}");     // =&gt; 7&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We can reverse a sequence:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#666666;"&gt;var nums = [1 .. 5];&lt;br /&gt;reverse nums;   // =&gt; [5, 4, 3, 2, 1]&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#666666;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;Unlike Java, JavaFX supports &lt;b&gt;blocks&lt;/b&gt;. Blocks (also called closures) are very popular in scripting languages such as Smalltalk or Ruby, to perform a select on an array with a very compact syntax. Here is an example:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:-webkit-monospace;font-size:100%;color:#999999;"&gt;&lt;span class="Apple-style-span"  style=" white-space: pre;font-size:13px;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:130%;color:#000000;"&gt;&lt;span class="Apple-style-span"  style=" white-space: normal;font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;var list = [1,2,7,3,30,15,14,6,4];&lt;br /&gt;var less_than_10 = list [n | n &lt;10]&gt;&lt;br /&gt;println ( "Result: (menores_de_10)") =&gt; 1 2 7 3 6 4&lt;br /&gt;var even = list [n | n mod 2 == 0];&lt;br /&gt;println ( "Even: (even)") / / =&gt; 2 30 14 6 4&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;You can write an equivalent expression:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;br /&gt;for (i in lista){     if (i &lt;&gt; 1 2 7 3 6 4&lt;br /&gt;&lt;/pre&gt;To create a class that models a postal address (with the attributes &lt;i&gt;Street&lt;/i&gt;, &lt;i&gt;City&lt;/i&gt;, &lt;i&gt;State&lt;/i&gt;, &lt;i&gt;ZipCode&lt;/i&gt; and a method &lt;i&gt;print()&lt;/i&gt; to print a representation of the object) type:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;class postaladdress="" var="" function="" print="" println="" city=""&gt;&lt;br /&gt;&lt;/class&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Instantiating an object of class &lt;b&gt;PostalAddress &lt;/b&gt;is as simple as:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#666666;"&gt;var postalAddress = PostalAddress {&lt;br /&gt;street: "Loop street "&lt;br /&gt;city: "Los Angeles"&lt;br /&gt;state: "California"&lt;br /&gt;zipCode: "28042"&lt;br /&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Unlike Java, JavaFX functions are &lt;b&gt;first class entities&lt;/b&gt;. What does this mean? Very simple, with Java FX we can do things that were previously impossible in Java like passing a function as a parameter to another function . Here is an example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#666666;"&gt;function addN(n: Number): function(:Number): Number {&lt;br /&gt;function(x: Number): Number { x + n }&lt;br /&gt;}&lt;br /&gt;var addTen = addN(10);&lt;br /&gt;println(addTen(3)); // =&gt; 13.0&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's study the code above:  Attention to the signature of the addN () function . This function accepts a parameter of type Number and returns a function with signature&lt;/div&gt;&lt;div&gt;function (: Number).&lt;/div&gt;&lt;div&gt;In the next line, the function resulting from &lt;b&gt;addN (10)&lt;/b&gt; is assigned to the variable &lt;b&gt;addTen&lt;/b&gt;. &lt;b&gt;addTen &lt;/b&gt;variable is a function that can be invoked like any other function. Later in the sample code we'll use this feature of JavaFX.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Time to put your feet up&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the light of the main features of the language we can write an example application. We want an application that informs the user of sunrise and sunset time in our city. The final application looks like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/SkAIunrgeFI/AAAAAAAAAAs/rv8w7Vs4Sgw/s320/figure5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5350285954334619730" style="cursor: pointer; width: 320px; height: 176px; " /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Let's see step by step how to build the application. First we need the data with sunrise and sunset times.&lt;/div&gt;&lt;div&gt;To obtain these data we will use a Web Service from Yahoo: &lt;b&gt;Yahoo Weather Web Service&lt;/b&gt;. A client can launch a GET request against the service and get a XML like the following figure:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/SkAQmlw4A3I/AAAAAAAAAA0/HghxGBlfNFE/s1600-h/xml.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/SkAQmlw4A3I/AAAAAAAAAA0/HghxGBlfNFE/s320/xml.jpg" border="1" alt="" id="BLOGGER_PHOTO_ID_5350294612474332018" style="cursor: pointer; width: 420px; height: 312px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Figure 4. XML reponsse from Yahoo&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;From this response we are interested in only two figures. For the sunrise and sunset time, look for the node &lt;b&gt;&lt;(marked in bold)&lt;/b&gt;  and get the attributes of sunrise and sunset. Java FX can easily perform this task with the class &lt;b&gt;&lt;i&gt;javafx.io.http.HttpRequest&lt;/i&gt;&lt;/b&gt; , who modeled a request and a parser &lt;b&gt;&lt;i&gt;javafx.data.pull.PullParser&lt;/i&gt;&lt;/b&gt;. To be able to customize the application to where we simply adapt the GET request. This request contains two parts, a base URL:&lt;/div&gt;&lt;b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;http://weather.yahooapis.com/forecastrss?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;and two parameters:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;p = SPXX0050  &lt;/b&gt; to indicate the location (in this case Barajas) and&lt;/div&gt;&lt;div&gt;&lt;b&gt;u = c&lt;/b&gt;   where we want to show the temperature units in Celsius degrees&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In our case (Barajas), the GET request is as follows:&lt;/div&gt;&lt;div&gt;  &lt;b&gt;http://weather.yahooapis.com/forecastrss?p=SPXX0050&amp;amp;u=c &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="text-align: left;"&gt;Note&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;. To obtain the location code corresponding to the city where you live can be found on page Yahoo Weather. Here we introduce the name of our city in the search box. On the resulting page, the final part of the URL for the code we need. For example if we want the code for Sabadell city:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__yxEIojpFJU/SkE_zfQK7-I/AAAAAAAAAA8/ckBv3uDt9Pk/s1600-h/figura6.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/__yxEIojpFJU/SkE_zfQK7-I/AAAAAAAAAA8/ckBv3uDt9Pk/s320/figura6.jpg" border="1" alt="" id="BLOGGER_PHOTO_ID_5350627986088062946" style="cursor: pointer; width: 290px; height: 165px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Click the GO button and we get the following page:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Therefore, the code for this location is &lt;/span&gt;&lt;span class="Apple-style-span"&gt;p = SPXX0066&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Thus, we created a new JavaFX class  that we call Main.fx. First we declare a String :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;  var url = "http://weather.yahooapis.com/forecastrss?p=SPXX0050&amp;amp;u=c"; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;We also declare other variables we'll use later:&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;  def sceneWidth = 425;&lt;/span&gt;&lt;br /&gt;def sceneHeight = 300;&lt;br /&gt;var amanecer: String; //sunrise time&lt;br /&gt;var ocaso: String;  // sunset time&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;sceneWidht &lt;/b&gt;and &lt;b&gt;sceneHeight &lt;/b&gt;variables are defined as constants (def) . The width and height of the application depends on the number of pixels of the bitmap graphics and will not change during execution. On the other hand sunrise and sunset will be modified during the life of the application, and therefore must use var.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;We also declare an instance of HttpRequest  that models the Yahoo Web service:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;HttpRequest {&lt;br /&gt;location: url&lt;br /&gt;onDone: function() {&lt;br /&gt;print ("done");&lt;br /&gt;// Para simular un web service lento&lt;br /&gt;Thread.sleep(1000);&lt;br /&gt;resultado = " Amanecer:  {amanecer} \n  Ocaso: {ocaso}" ;&lt;br /&gt;}&lt;br /&gt;onInput: function(input) {&lt;br /&gt;try {&lt;br /&gt;PullParser {&lt;br /&gt;input: input&lt;br /&gt;onEvent: function(event) {&lt;br /&gt;if ((event.type == PullParser.START_ELEMENT) and (event.qname.prefix == "yweather")) {&lt;br /&gt;if (event.qname.name == "astronomy") {&lt;br /&gt;    amanecer = event.getAttributeValue(QName{name: "sunrise"&lt;br /&gt;    });&lt;br /&gt;    println("amanecer =  {amanecer}");&lt;br /&gt;    ocaso = event.getAttributeValue(QName{name: "sunset"&lt;br /&gt;    });&lt;br /&gt;    println("   ocaso =  {ocaso}");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}.parse()&lt;br /&gt;}  finally {&lt;br /&gt;input.close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Note that the HttpRequest class  has the callback method onInput() will be activated once the client receives a response from the web service. Since the web service returns an XML, use the class PullParser to parse this response. To parse the response, find the node "yweater" and once found retrieve attribute values sunrise and sunset. This way we obtain the values desired. It is important to note that the class PullParser, the method is a callback function onEvent When you initialize the class PullParser at callbalck onEvent we assign a function to detect events parsing (starting XML node, end node XML). The definition of the graphical elements is easy. So to set the upper rectangle wrote:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var topRectangle: Rectangle = Rectangle {&lt;br /&gt;translateX: 0&lt;br /&gt;translateY: 10&lt;br /&gt;width: sceneWidth - 2&lt;br /&gt;height: 60&lt;br /&gt;stroke: Color.DARKBLUE&lt;br /&gt;strokeWidth: 1&lt;br /&gt;arcWidth: 32&lt;br /&gt;arcHeight: 32&lt;br /&gt;fill: LinearGradient {&lt;br /&gt;endY: 0&lt;br /&gt;stops: [&lt;br /&gt;Stop {&lt;br /&gt;offset: 0&lt;br /&gt;color: Color.DARKBLUE&lt;br /&gt;}&lt;br /&gt;Stop {&lt;br /&gt;offset: 1&lt;br /&gt;color: Color.LIGHTBLUE&lt;br /&gt;}&lt;br /&gt;]&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;To get a fill with a linear gradient, we use the class &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;LinearGradient&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;. The horizontal gradient begins with a dark blue and ends in a light blue.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Finally, we models all the graphical elements  using the following code:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Stage {&lt;br /&gt;title: "  Amanecer y Ocaso en Barajas  "&lt;br /&gt;width: sceneWidth&lt;br /&gt;height: sceneHeight&lt;br /&gt;style: StageStyle.TRANSPARENT&lt;br /&gt;scene: Scene {&lt;br /&gt;width: sceneWidth&lt;br /&gt;height: sceneHeight&lt;br /&gt;content: Group {&lt;br /&gt;content: bind [  topRectangle, text, rightRectangle, textResult, bottomRectangle, solView ]&lt;br /&gt;clip: Rectangle {&lt;br /&gt;width: sceneWidth&lt;br /&gt;height: sceneHeight&lt;br /&gt;arcWidth: 32&lt;br /&gt;arcHeight: 32&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;fill: Color.TRANSPARENT&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;You can see &lt;/span&gt;&lt;a href="http://sine-sole-sileo.blogspot.com/2009/06/code-ten-minute-introduction-to-javafx.html"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;the complete code of the application&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;. You can also run the application by clicking the n&lt;/span&gt;&lt;a href="http://cdn.bitbucket.org/cascais/tutorial/downloads/tutorial3.html"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;ext link &lt;/span&gt;&lt;/a&gt;&lt;a href="http://cdn.bitbucket.org/cascais/tutorial/downloads/tutorial3.html"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;img src="http://4.bp.blogspot.com/__yxEIojpFJU/SkKwMxbkIBI/AAAAAAAAAB0/jzJl1ucSS9s/s320/launch.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351033040743440402" style="cursor: pointer; width: 301px; height: 18px; " /&gt;&lt;/span&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;  JavaFXDeployement&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Arial;font-size:12px;"&gt;&lt;div&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;All projects about data can be displayed in three ways: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;As an application (Standalone)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;- As a WebStart applet integrated within the browser (Web Start Execution)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;- As an application for a cell phone compatible data centers (Run in Mobile Emulator)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;To choose one of three deployments are going to project properties and select the Run tab, Model Execution (Execution Standart, Run or Run in Browser in Mobile emulator).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/SkFT--NmpdI/AAAAAAAAABc/0YPA8rLoH6g/s1600-h/figure8.jpg"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/SkFT--NmpdI/AAAAAAAAABc/0YPA8rLoH6g/s320/figure8.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5350650173609911762" style="cursor: pointer; width: 320px; height: 246px; " /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Figure. Deployment of a JavaFX application&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;If you choose the wireless deployment you will have to use the emulator included in the platform (the first JavaFX phoneswill be the ones  from LG and Sony-Ericsson in June 2009):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__yxEIojpFJU/SkFU-94S6QI/AAAAAAAAABk/Iwq47sHjjuE/s1600-h/fig9.jpg"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;img src="http://1.bp.blogspot.com/__yxEIojpFJU/SkFU-94S6QI/AAAAAAAAABk/Iwq47sHjjuE/s320/fig9.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5350651273032165634" style="cursor: pointer; width: 320px; height: 189px; " /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Figure. JavaFX emulator for mobile phone&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Conclusions&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Java FX Script is a declarative language, statically typed, object oriented and functional. Is designed specifically for writing graphical applications. The development kit provides a comprehensive multimedia library. The war to attract advanced users of ActionScript 3 (Adobe Flash) has begun, but this time Sun has a good arsenal.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Resources&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JavaFX samples gallery&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JavaFX 1.2 documentation&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/b&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;try {&lt;br /&gt;var pageTracker = _gat._getTracker("UA-9519793-1");&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;} catch(err) {}&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6383155439908628110-1447045437381973198?l=sine-sole-sileo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sine-sole-sileo.blogspot.com/feeds/1447045437381973198/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/06/introduction-to-javafx.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/1447045437381973198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6383155439908628110/posts/default/1447045437381973198'/><link rel='alternate' type='text/html' href='http://sine-sole-sileo.blogspot.com/2009/06/introduction-to-javafx.html' title='A ten minute introduction to JavaFX'/><author><name>Joan</name><uri>http://www.blogger.com/profile/16697899715912653180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__yxEIojpFJU/SkKwCk6qvXI/AAAAAAAAABs/lL3e9LcPaXU/s72-c/fig9.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
