<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FaceitWeb.com &#187; java</title>
	<atom:link href="http://www.faceitweb.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.faceitweb.com</link>
	<description>Recensioni e articoli sul mondo della programmazione</description>
	<lastBuildDate>Tue, 20 Jul 2010 12:34:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Tomcat 7.0 beta</title>
		<link>http://www.faceitweb.com/2010/07/tomcat-7-0-beta/</link>
		<comments>http://www.faceitweb.com/2010/07/tomcat-7-0-beta/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:22:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[java server]]></category>
		<category><![CDATA[jsp 2.2]]></category>
		<category><![CDATA[servlet 3.0]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[tomcat 7.0]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=406</guid>
		<description><![CDATA[

Anche se in versione beta, è finalmente disponibile la release 7 di Tomcat.
Tra le novità principali introdotte, c&#8217;è da sottolineare che questa nuova versione implementerà interamente le specifiche Java Servlet 3.0 (descritte in un precedente articolo), Java Server Pages 2.2 ed Expression Language 2.2.  In particolare, gli sviluppatori si sono soffermati sulle prestazioni e sulla [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>Anche se in versione beta, è finalmente disponibile la release 7 di Tomcat.</p>
<p>Tra le novità principali introdotte, c&#8217;è da sottolineare che questa nuova versione implementerà interamente le specifiche Java Servlet 3.0 (descritte in un precedente <a href="http://www.faceitweb.com/2008/11/servlet-30/">articolo</a>), Java Server Pages 2.2 ed Expression Language 2.2.  In particolare, gli sviluppatori si sono soffermati sulle prestazioni e sulla sicurezza di Tomcat 7, requisiti fondamentali per ospitare applicazioni web. Nel caso in cui invece, si vuole determinare la presenza di memory leack, c&#8217;è anche la possibilità di avviare un&#8217;analisi sull&#8217;utilizzo della memoria.</p>
<p>E&#8217; stata migliorata anche la gestione dei cookie, le comunicazioni asincrone ed il caricamento dei file. Da ricordare invece, che l&#8217;ambiente supporterà solo la Java Runtime Environmento 6.0.</p>
<p>Entro l&#8217;autunno Apache dovrebbe lanciare la versione definitiva.</p>
<p><a href="http://tomcat.apache.org/tomcat-7.0-doc/index.html">Tomcat 7.0</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Tomcat 7.0 beta" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Tomcat+7.0+beta" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2010/07/tomcat-7-0-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT Java: Quake 2 via browser</title>
		<link>http://www.faceitweb.com/2010/04/gwt-java-quake-2-via-browser/</link>
		<comments>http://www.faceitweb.com/2010/04/gwt-java-quake-2-via-browser/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 07:01:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Quake]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=382</guid>
		<description><![CDATA[

La squadra di sviluppatori di GWT Java hanno realizzato il porting di Quake 2 su browser. Si tratta di un esempio di quello che ci aspetta in futuro: la realtà è che il motore Java ha ancora grandi potenzialità da esprimere.
GWT è una soluzione che permette l&#8217;utilizzo di applicazioni Web in ambiente Java: non a [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>La squadra di sviluppatori di GWT Java hanno realizzato il porting di Quake 2 su browser. Si tratta di un esempio di quello che ci aspetta in futuro: la realtà è che il motore Java ha ancora grandi potenzialità da esprimere.</p>
<p>GWT è una soluzione che permette l&#8217;utilizzo di applicazioni Web in ambiente Java: non a caso fa funzionare anche Google Wave.</p>
<p>Quake 2 su browser è un esempio del <strong>futuro 3D online</strong>. Da quando Google rilasciò nel 2008 una demo di Quake per Native Client (NaCl) è passato del tempo: un&#8217;occhiata al video pubblicato online non lascia dubbi.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/fyfu4OwjUEI&amp;feature" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/fyfu4OwjUEI&amp;feature"></embed></object></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for GWT Java: Quake 2 via browser" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+GWT+Java:+Quake+2+via+browser" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2010/04/gwt-java-quake-2-via-browser/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java Platfom Enterprise Edition 6</title>
		<link>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/</link>
		<comments>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 09:33:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[j2EE6]]></category>
		<category><![CDATA[Java Platfom Enterprise Edition 6]]></category>
		<category><![CDATA[sun microsystems]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=344</guid>
		<description><![CDATA[

Sun Microsystems Inc. ha annunciato la disponibilità di Java™ Platform Enterprise Edition 6 (Java EE 6).
Java EE &#8211; la principale piattaforma per lo sviluppo e il deployment di applicazioni web ed enterprise &#8211; possiede ora nuove caratteristiche che ne incrementano la flessibilità e permettono alle aziende di adottare, in alternativa alla piattaforma enterprise completa, specifici [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>Sun Microsystems Inc. ha annunciato la disponibilità di Java™ Platform Enterprise Edition 6 (Java EE 6).</p>
<p>Java EE &#8211; la principale piattaforma per lo sviluppo e il deployment di applicazioni web ed enterprise &#8211; possiede ora nuove caratteristiche che ne incrementano la flessibilità e permettono alle aziende di adottare, in alternativa alla piattaforma enterprise completa, specifici scenari applicativi per meglio rispondere ai requisiti dei singoli progetti . Java EE SDK è già stato scaricato più di 18 milioni di volte e le specifiche sono supportate da 28 licenziatari che commercializzano prodotti compatibili con Java EE. Gli sviluppatori possono scaricare Java EE SDK dall&#8217;indirizzo <a href="http://java.sun.com/javaee/downloads/index.jsp">http://java.sun.com/javaee/downloads/index.jsp</a>.</p>
<p>Java EE 6 offre una solida base per la continua crescita della tecnologia Java sia dal punto di vista degli sviluppatori che da quello dei solution provider. Le specifiche Java EE 6 introducono i Profile, un sistema che permette di adeguare la piattaforma ai singoli scenari applicativi. I Profile offrono un maggior grado di flessibilità a clienti, ISV e vendor di piattaforma, aiutandoli ad affrontare meglio mercati specifici.</p>
<p>Web Profile, per esempio, è un profilo “compatto” realizzato appositamente per gli scenari basati su applicazioni Web che non richiedono tutto il set di funzionalità della piattaforma Java EE completa. Abbinato a importanti miglioramenti delle specifiche esistenti e all&#8217;introduzione della tecnologia Enterprise JavaBeans™ (EJB) 3.1 Lite, Web Profile consente agli sviluppatori Web di realizzare applicazioni in maniera rapida e semplice senza doversi costruire e gestire uno &#8220;stack custom&#8221;. Inoltre, gli sviluppatori che dovessero necessitare della potenza della piattaforma tradizionale possono passare agevolmente dall&#8217;ambiente Web Profile alla piattaforma Java EE 6 completa. Ulteriori profili saranno definiti in futuro attraverso il Java Community Process per affrontare differenti scenari applicativi.</p>
<p><span id="more-344"></span></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-8488545646955443";
google_ad_slot = "1886844531";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p>Java EE 6 definisce inoltre le sue capacità di estensibilità come un mezzo per abbracciare e supportare innovazioni e comunità esterne, consentendo ad esse di collegarsi – in maniera trasparente &#8211; alla piattaforma stessa. Java EE 6 specifica quindi un processo e un set di tecnologie che potranno essere rimossi da future release della piattaforma, permettendo a vendor e application provider di pianificare la migrazione verso le nuove tecnologie che saranno offerte dalle prossime versioni della piattaforma.</p>
<p>La nuova release di Java EE SDK mette a disposizione potenti tecnologie per lo sviluppo web ed enterprise che fanno leva sulla prima implementazione della piattaforma Java EE 6. Gli sviluppatori che hanno familiarità con il modello di programmazione di Java EE possono ora sfruttare i miglioramenti alla produttività e l&#8217;eccezionale facilità di sviluppo che contraddistinguono Java EE 6 per realizzare una vasta gamma di applicazioni per il Web e per i contesti enterprise.</p>
<p>Tra le novità introdotte vi sono: l&#8217;aggiunta delle tecnologie Context and Dependency Injection ed EJB 3.1 Lite, un modo più semplice per aggiungere EJB ai file .war delle applicazioni Web senza dover creare package ulteriori, la possibilità di trascinare col mouse i framework di terze parti nelle servlet attraverso web-fragments.xml, l&#8217;aggiunta di numerose annotazioni all&#8217;interno di tutta la piattaforma per semplificare la creazione di applicazioni, e la possibilità di integrare EJB all&#8217;interno di applicazioni indipendenti per agevolare le procedure di test. Un elenco completo di tutte le funzionalità di Java EE 6 è disponibile all&#8217;indirizzo: <a href="http://java.sun.com/javaee/">http://java.sun.com/javaee/</a>.</p>
<p>Java EE 6 mette quindi a disposizione significativi miglioramenti in termini di produttività e facilità d&#8217;uso, mantenendo la compatibilità verso il basso con Java EE 5, e con in più il vantaggio di poter scegliere tra varie implementazioni. La reference implementation di Java EE 6 deriva dal progetto open source GlassFish(TM).</p>
<p>La Reference Implementation, il TCK e l&#8217;SDK di Java EE 6 sono già disponibili. Il nuovo SDK comprende documentazione e tool con i quali gli sviluppatori possono imparare a conoscere Java EE 6 e accelerare la creazione di nuove applicazioni enterprise. Il download è gratuitamente disponibile all&#8217;indirizzo <a href="http://java.sun.com/javaee/downloads/index.jsp">http://java.sun.com/javaee/downloads/index.jsp</a>.</p>
<p><a href="http://it.sun.com/sunnews/press/2009/20091215.jsp"><small><strong><em>Sun Microsystems</em></strong></small></a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Java Platfom Enterprise Edition 6" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Java+Platfom+Enterprise+Edition+6" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2010/01/java-platfom-enterprise-edition-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guava, le librerie Java di Google</title>
		<link>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/</link>
		<comments>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 09:25:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[guava]]></category>
		<category><![CDATA[librerie]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=338</guid>
		<description><![CDATA[

Guava è una collezione di librerie Java non presenti in Google Collection Library anche se quest&#8217;ultima presto sarà incluso nel progetto. Al momento sono solo tre i namespace inclusi in tale progetto: com.google.common.primitives, com.google.common.io e com.google.common.util.concurrent. Queste librerie arricchiscono quelle Java con molte classi e API create dal gruppo di sviluppatori Google e utilizzate in [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><a href="http://code.google.com/p/guava-libraries/" target="_blank">Guava</a> <strong>è una collezione di librerie Java non presenti in</strong> <a href="http://code.google.com/p/google-collections/" target="_blank">Google Collection Library</a> anche se quest&#8217;ultima presto sarà incluso nel progetto. Al momento sono solo tre i <em>namespace</em> inclusi in tale progetto: <em>com.google.common.primitives</em>, <em>com.google.common.io</em> e <em>com.google.common.util.concurrent</em>. Queste librerie arricchiscono quelle Java con molte classi e API create dal gruppo di sviluppatori Google e utilizzate in molti dei loro progetti realizzati con tale linguaggio.</p>
<p>Spulciando un&#8217;<a href="http://guava-libraries.googlecode.com/files/Guava_a_sketchy_overview.pdf" target="_blank">overview</a> vediamo un po&#8217; di feature, che possono tornare utili ai nostri progetti. Un esempio è l&#8217;<strong>introduzione della classe <em>CharMatcher</em> per manipolare caratteri all&#8217;interno di una stringa</strong> come la funzione <em>CharMatcher.is(&#8216;-&#8217;)</em>. <strong>Le stringhe sono sempre manipolabili con la classe <em>Joiner</em></strong>, che può legare una sequenza di numeri separati da uno o più caratteri scelti con la seguente riga di codice:</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> s <span>=</span> Joiner.<span>on</span><span>(</span><span>", "</span><span>)</span>.<span>join</span><span>(</span>numbers<span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p><strong>Per la separazione di stringe troviamo la classe <em>Splitter</em></strong> in grado di separare parti di stringa da un testo complesso molto meglio di quanto faccia la funzione <em>split()<em> di Java:<br />
</em></em></p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre>Iterable<span>&lt;</span>String<span>&gt;</span> pieces <span>=</span></pre>
</li>
<li>
<pre>   Splitter.<span>on</span><span>(</span><span>','</span><span>)</span>.<span>split</span><span>(</span><span>"trivial,example"</span><span>)</span></pre>
</li>
</ol>
</div>
</div>
<p><strong>Per ciò che riguarda l&#8217;I/O, le classi <em>ByteStreams</em>, <em>CharSequence</em> e <em>Files</em> promettono di leggere le righe di un file in modo molto stringato</strong>. Sotto infatti vediamo un esempio di routine in grado di contare le righe di un file:</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><span>int</span> count <span>=</span> Files.<span>readLines</span><span>(</span></pre>
</li>
<li>
<pre>  <span>new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>File</span></a><span>(</span><span>"/path/to/file"</span><span>)</span>,</pre>
</li>
<li>
<pre>  Charsets.<span>UTF_8</span>,</pre>
</li>
<li>
<pre>  <span>new</span> LineProcessor<span>&lt;</span>Integer<span>&gt;</span><span>(</span><span>)</span> <span>{</span></pre>
</li>
<li>
<pre>   <span>int</span> count <span>=</span> <span>0</span><span>;</span></pre>
</li>
<li>
<pre>   <span>public</span> <span>boolean</span> processLine<span>(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>String</span></a> line<span>)</span> <span>{</span></pre>
</li>
<li>
<pre>     count<span>++;</span></pre>
</li>
<li>
<pre>   <span>}</span></pre>
</li>
<li>
<pre>   <span>public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span>Integer</span></a> getResult<span>(</span><span>)</span> <span>{</span> <span>return</span> count<span>;</span> <span>}</span></pre>
</li>
<li>
<pre>  <span>}</span><span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p>Anche le <strong>primitive</strong> non sono esenti da novità con l&#8217;introduzione di classi come <em>Ints</em>, <em>Longs</em> o <em>Bytes</em></p>
<p>.</p>
<div>
<div style="font-family: monospace;">
<ol>
<li>
<pre><span>int</span><span>[</span><span>]</span> nums <span>=</span> ...<span>;</span></pre>
</li>
<li>
<pre>List<span>&lt;</span>Integer<span>&gt;</span> list <span>=</span> Ints.<span>asList</span><span>(</span>nums<span>)</span><span>;</span></pre>
</li>
</ol>
</div>
</div>
<p>In attesa della versione 1.0, il rimando è ai <a href="http://guava-libraries.googlecode.com/svn/trunk/javadoc/index.html" target="_blank">javadoc</a> ufficiali.</p>
<p><a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=42900">Guava, una collezione di librerie Java da Google</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Guava, le librerie Java di Google" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Guava,+le+librerie+Java+di+Google" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/10/guava-le-librerie-java-di-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Telefono e chat nelle applicazioni Java con Skype4Java</title>
		<link>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/</link>
		<comments>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:09:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[Skype4Java]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=301</guid>
		<description><![CDATA[

In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia JNI (Java Native Interface), per la comunicazione a basso livello con il client Skype.</p>
<p>È possibile scarircare la libreria e la documentazione del progetto dal sito ufficiale (https://developer.skype.com/wiki/Java_API).</p>
<p>Skype4Java ci permette è possibile effettuare moltissime operazioni, tra cui:</p>
<ul>
<li>Visualizzare e modificare le impostazioni del client (lingua, sfondi, proprietà)</li>
<li>Visualizzare, aggiungere, modificare ed eliminare i contatti ed i gruppi</li>
<li>Gestire il proprio profilo</li>
<li>Avviare una sessione voce</li>
<li>Avviare una sessione di chat</li>
<li>Inviare SMS</li>
</ul>
<p><strong>La classe principale</strong> della libreria è <code>com.skype.Skype</code>. Questa classe ci fornisce numerosi metodi statici che ci permettono di recuperare moltissime informazioni: versione installata del client, lista dei gruppi, lista dei contatti, informazioni relative ai profili dei nostri contatti, e molte altre informazioni.</p>
<p style="text-align: center;"><span id="more-301"></span><script type="text/javascript"><!--
google_ad_client = "pub-8488545646955443";
google_ad_slot = "1886844531";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p>Alcuni esempi ci aiuteranno a prendere confidenza con questa libreria.</p>
<div class="boxcode">
<p>Versione installata del client Skype</p>
<pre>Skype.getVersion()</pre>
</div>
<div class="boxcode">
<p>Visualizzazione e modifica del proprio profilo</p>
<pre>Profile profilo = Skype.getProfile();

System.out.println("ID:" + profilo.getId());
System.out.println("Sesso:" + profilo.getSex());
System.out.println("Città:" + profilo.getCity());
System.out.println("Stato:" + profilo.getStatus());

profilo.setCity("Napoli");</pre>
</div>
<p>L&#8217;oggetto <code>Profile</code> restituito dal metodo <code>getProfile()</code>, contiene le informazioni relative al profilo dell&#8217;utente skype attivo sul client, compreso lo stato attuale dell&#8217;utente (In linea, Non al computer, Occupato). Le informazioni sono richiamabili mediante i classici metodi getter. È possibile anche modificare tali proprietà utilizzando i metodi setter.</p>
<p><strong>Gli stati</strong> possibili di ciascun contatto sono i seguenti:</p>
<table class="tabella_htmlit" border="0">
<tbody>
<tr>
<td><code>User.Status.AWAY</code></td>
<td><code>User.Status.OFFLINE</code></td>
<td><code>User.Status.ONLINE</code></td>
</tr>
<tr>
<td><code>User.Status.UNKNOWN</code></td>
<td><code>User.Status.NA</code></td>
<td><code>User.Status.DND</code></td>
</tr>
</tbody>
</table>
<div class="boxcode">
<p>Visualizzazione dei contatti</p>
<pre>Friend[] contatti = Skype.getContactList().getAllFriends();

for (int i = 0; i &lt; contatti.length; i++)
{
  Friend contatto = contatti[i];
  System.out.println(contatto.getId() + " " + contatto.getFullName());
}</pre>
</div>
<p>Il metodo <code>getContactList()</code>, restituisce diverse informazioni sui contatti. Il metodo <code>getAllFriends()</code>, restituisce un array di oggetti <code>Friend</code> che contiene l&#8217;elenco completo di tutti i contatti. L&#8217;oggetto <code>Friend</code>, contiene tutte le informazioni sul profilo del contatto: id, nome, città, lingua, stato, email.</p>
<div class="boxcode">
<p>Creare un nuovo gruppo</p>
<pre>Skype.getContactList().addGroup("amici");</pre>
</div>
<p>Il metodo <code>addGroup()</code> ci permette di aggiungere un nuovo gruppo.</p>
<div class="boxcode">
<p>Inserire i contatti in un gruppo</p>
<pre>Group amici = Skype.getContactList().getGroup("amici");

Friend contatto1 = Skype.getContactList().getFriend("nick1");
Friend contatto2 = Skype.getContactList().getFriend("nick2");

amici.addFriend(contatto1);
amici.addFriend(contatto2);</pre>
</div>
<p>Per inserire i contatti all&#8217;interno di un gruppo occorre prima di tutto recuperare l&#8217;istanza del gruppo mediante il metodo <code>getGroup()</code>. Successivamente occorre recuperare l&#8217;istanza di ciascun contatto da inserire nel gruppo, mediante il metodo <code>getFriend(</code>), ed infine, richiamare il metodo <code>addFriend()</code> della classe Group.</p>
<div class="boxcode">
<p>Inviare un messaggio ad un contatto</p>
<pre>Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto &amp;&amp; contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.send("Ciao Pippo");
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");</pre>
</div>
<p>Ottenuta l&#8217;instanza dell&#8217;oggetto <code>Friend</code>, mediante il metodo <code>getFriend(String)</code> della classe <code>ContactList</code>, corrispondente al contatto che ci interessa, e verificato il suo stato, possiamo inviargli un messaggio via chat utilizzando il metodo <code>send(String)</code>. Naturalmente, qualora il contatto richiesto non sia presente nella lista dei contatti, il metodo restituirà un riferimento null e quindi non sarà possibile inviargli un messaggio.</p>
<div class="boxcode">
<p>Effettuare una chiamata</p>
<pre>Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto &amp;&amp; contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.call();
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");</pre>
</div>
<p>Con la stessa logica dell&#8217;esempio precedente, è possibile avviare una chiamata. L&#8217;unica differenza è il metodo della classe <code>Friend</code> da richiamare. Per inviare un messaggio di chat è necessario utilizzare il metodo <code>send(String)</code>, mentre per inoltrare una chiamata, occorre utilizzare il metodo <code>call()</code>.</p>
<div class="boxcode">
<p>Inviare un SMS</p>
<pre>Skype.sendSMS("134567890", "prova sms");</pre>
</div>
<p>Mediante il metodo <code>sendSMS()</code> è possibile inviare un SMS direttamente ad un numero specifico.</p>
<p>Oltre alla classe <code>Skype</code>, la libreria <code>Skype4Java</code>, mette a disposizione anche la <strong>classe SkypeClient</strong>, mediante la quale è possibile interagire direttamente con il client. Ad esempio, è possibile aprire la finestra delle impostazioni, la finestra dei contatti, etc.</p>
<ul>
<li><code>SkypeClient.showSkypeWindow()</code></li>
<li><code>SkypeClient.showProfileWindow()</code></li>
<li><code>SkypeClient.showSearchWindow()</code></li>
</ul>
<p>Per eseguire gli esempi proposti, è necessario includere nel proprio progetto la libreria specifica del sistema operativo. Nel pacchetto zip scaricabile dal sito ufficiale, infatti, sono inclusi i seguenti file jar:</p>
<ul>
<li><code>skype_linux.jar</code> per i sistemi linux</li>
<li><code>skype_osx.jar </code> per MAC</li>
<li><code>skype_win32.jar</code> per Windows</li>
</ul>
<p>Queste sono solo alcune delle funzionalità messe a disposizione dalla libreria Skype4Java, per iniziare a acquisire familiarità con la libreria.</p>
<p><a href="http://java.html.it/articoli/leggi/3030/skype4java-telefono-e-chat-nelle-applicazioni-java/">Skype4Java, telefono e chat nelle applicazioni Java</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Telefono e chat nelle applicazioni Java con Skype4Java" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Telefono+e+chat+nelle+applicazioni+Java+con+Skype4Java" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/telefono-e-chat-nelle-applicazioni-java-con-skype4java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>In arrivo il Java Store: Vector</title>
		<link>http://www.faceitweb.com/2009/05/in-arrivo-il-java-store-vector/</link>
		<comments>http://www.faceitweb.com/2009/05/in-arrivo-il-java-store-vector/#comments</comments>
		<pubDate>Fri, 22 May 2009 09:34:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[java store]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=277</guid>
		<description><![CDATA[

Dal blog ufficiale il Ceo di Sun annuncia in anteprima gli obiettivi del progetto nome in codice Vector: realizzare un App Store per mettere in contatto gli infiniti programmatori Java con il pubblico ancora più vasto degli utenti. Il modello di Apple applicato su scala infinitamente più grande e per gli applicativi su desktop.
Ha tutte [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><span style="font-weight: normal;"><span style="font-size: 13px;">Dal blog ufficiale il Ceo di Sun annuncia in anteprima gli obiettivi del progetto nome in codice Vector: realizzare un App Store per mettere in contatto gli infiniti programmatori Java con il pubblico ancora più vasto degli utenti. Il modello di Apple applicato su scala infinitamente più grande e per gli applicativi su desktop.</span><br />
<span style="font-weight: normal;"><span style="font-size: 13px;">Ha tutte le carte in regola per diventare l&#8217;App Store definitivo, il negozio online più vasto e in grado di coinvolgere un numero esteso di programmatori, per non parlare di un pubblico potenziale di oltre 1 miliardo di utenti, questa la popolazione stimata. Si tratta del progetto con il nome in codice<a href="http://www.eweek.com/c/a/Application-Development/Sun-Plans-Java-App-Store-194558/">Vector</a>, rivelato direttamente da Jonathan Schwartz in un <a href="http://blogs.sun.com/jonathan/entry/will_java_be_the_world">post sul blog ufficiale</a> di Sun.</span></span></span></p>
<div class="edit">
<p>Nel corposo messaggio il Ceo della società svela in anteprima i piani in corso di sviluppo: creare un mercato online sullo stile di App Store che permetterà agli infiniti programmatori <a class="iAs" href="http://www.macitynet.it/macity/aA38089/il_progetto_vector_di_sun_presto_in_arrivo_il_java_store.shtml#" target="_blank">Java</a> di pubblicare i loro software e di raggiungere in un colpo solo un mercato potenziale stimato in oltre un miliardo di utenti. Come gli &#8220;altri&#8221; app store esistenti anche Sun vaglierà i programmi che potranno essere ammessi alla vendita o alla distribuzione gratuita, ancora Sun richiederà una percentuale per la gestione della distribuzione. Pur non riportando mai direttamente il nome App Store il Ceo di Sun si riferisce in più punti allo store di Apple, sottolineando il grande divario nelle dimensioni tra la realtà di Cupertino e il progetto in corso di Sun. Milioni o al massimo decine di milioni di utenti per il negozio della Mela, oltre un miliardo di utenti per Java.</p>
<p>Il progetto Vector sarà molto probabilmente rinominato Java Store e, sottolinea Scwhartz, non si rivolgerà alla nicchia mobile del mondo IT bensì ad applicativi scritti in uno dei linguaggi più diffusi e utilizzati dagli sviluppatori e per software che funzioneranno su computer. E&#8217; molto probabile che presto sentiremo ancora parlare di Vector o meglio di Java Store: JavaOne, la conferenza più importante del mondo Java inizia i lavori il primo di giugno.<br />
<span style="font-weight: normal;"><span style="font-size: 13px;"><a href="http://www.macitynet.it/macity/aA38089/il_progetto_vector_di_sun_presto_in_arrivo_il_java_store.shtml">Il progetto Vector di Sun: presto in arrivo il Java Store</a></span></span></div>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for In arrivo il Java Store: Vector" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+In+arrivo+il+Java+Store:+Vector" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/05/in-arrivo-il-java-store-vector/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aggiornata la codifica UTF-8 in Java</title>
		<link>http://www.faceitweb.com/2009/05/aggiornata-la-codifica-utf-8-in-java/</link>
		<comments>http://www.faceitweb.com/2009/05/aggiornata-la-codifica-utf-8-in-java/#comments</comments>
		<pubDate>Fri, 08 May 2009 07:13:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[ASCII]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=263</guid>
		<description><![CDATA[

Da un articolo di Xueming Shen, si parla della modifica che ha interessato la codifica UTF-8 in JAVA.
Tale modifica riguarda in particolare il rifiuto della non-shortest-form. Infatti l&#8217;interpretazione di questa forma particolare di rappresentazione può essere utilizzata da exploit di vario tipo per ottenere dati sensibili. I dettagli inerenti questa problematica sono ben descritti in [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>Da un <a class="bbcode_url" href="http://blogs.sun.com/CoreJavaTechTips/entry/the_overhaul_of_java_utf" target="_blank">articolo</a> di <strong>Xueming Shen</strong>, si parla della modifica che ha interessato la codifica <a class="bbcode_url" href="http://en.wikipedia.org/wiki/UTF-8" target="_blank">UTF-8</a> in JAVA.</p>
<p>Tale modifica riguarda in particolare il rifiuto della <em>non-shortest-form</em>. Infatti l&#8217;interpretazione di questa forma particolare di rappresentazione può essere utilizzata da exploit di vario tipo per ottenere dati sensibili. I dettagli inerenti questa problematica sono ben descritti in un <a class="bbcode_url" href="http://www.unicode.org/versions/corrigendum1.html" target="_blank">corrigendum</a>, ma vediamo molto brevemente cosa significa.</p>
<p><strong>UTF-8</strong> (<strong>U</strong>nicode <strong>T</strong>ransformation <strong>F</strong>ormat, <strong>8</strong> bit) è una codifica dei caratteri <a title="Unicode" href="http://it.wikipedia.org/wiki/Unicode">Unicode</a> in sequenze di lunghezza variabile di byte, creata da <a title="Rob Pike" href="http://it.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> e <a title="Ken Thompson" href="http://it.wikipedia.org/wiki/Ken_Thompson">Ken Thompson</a>. UTF-8 usa gruppi di byte per rappresentare i caratteri <a title="Unicode" href="http://it.wikipedia.org/wiki/Unicode">Unicode</a>, ed è particolarmente utile per il trasferimento tramite sistemi di <a class="mw-redirect" title="Posta elettronica" href="http://it.wikipedia.org/wiki/Posta_elettronica">posta elettronica</a> a 8-<a title="Bit (informatica)" href="http://it.wikipedia.org/wiki/Bit_%28informatica%29">bit</a>.</p>
<p>UTF-8 usa da 1 a 4 <a title="Byte" href="http://it.wikipedia.org/wiki/Byte">byte</a> per rappresentare un carattere Unicode. Per esempio un solo byte è necessario per rappresentare i 128 caratteri dell&#8217;alfabeto <a title="ASCII" href="http://it.wikipedia.org/wiki/ASCII">ASCII</a>, corrispondenti alle posizioni Unicode da U+0000 a U+007F. Facciamo un esempio per capire meglio. Ecco, la rappresentazione della stringa ABC utilizzando un solo byte:</p>
<div class="bbcode_indent" style="margin-left: 4em;"><em>0&#215;41 0&#215;42 0&#215;43</em></div>
<p>e utilizzandone due:</p>
<div class="bbcode_indent" style="margin-left: 4em;"><em>0xc1 0&#215;81 0xc1 0&#215;82 0xc1 0&#215;83</em></div>
<p>Quest&#8217;ultimo è proprio un caso di <em>non-shortest-form</em>, poiché rappresentiamo con una sequenza ridondante un carattere <a class="bbcode_url" href="http://unicode.org/" target="_blank">Unicode</a> che andrebbe bene anche usando la sua forma più breve. Per avere altri esempi riportiamo il seguente stralcio di codice in grado di mettere a confronto la <em>non-shortest-form</em> con due byte e il carattere rappresentato.</p>
<div class="geshi_wrapper">
<div class="java geshi" style="font-family: monospace;">
<ol>
<li class="li1">
<pre class="de1"><span class="kw4">byte</span><span class="br0">[</span><span class="br0">]</span> bb <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">byte</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">    <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> b1 <span class="sy0">=</span> 0xc0<span class="sy0">;</span> b1 <span class="sy0">&lt;</span> 0xc2<span class="sy0">;</span> b1<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span></pre>
</li>
<li class="li1">
<pre class="de1">        <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> b2 <span class="sy0">=</span> 0x80<span class="sy0">;</span> b2 <span class="sy0">&lt;</span> 0xc0<span class="sy0">;</span> b2<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span></pre>
</li>
<li class="li1">
<pre class="de1">            bb<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">=</span> <span class="br0">(</span><span class="kw4">byte</span><span class="br0">)</span>b1<span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">            bb<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">=</span> <span class="br0">(</span><span class="kw4">byte</span><span class="br0">)</span>b2<span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> cstr <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a><span class="br0">(</span>bb, <span class="st0">"UTF-8"</span><span class="br0">)</span><span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">            <span class="kw4">char</span> c <span class="sy0">=</span> cstr.<span class="me1">toCharArray</span><span class="br0">(</span><span class="br0">)</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">printf</span><span class="br0">(</span><span class="st0">"[%02x, %02x] -&gt; U+%04x [%s]%n"</span>,</pre>
</li>
<li class="li1">
<pre class="de1">                              b1, b2, c <span class="sy0">&amp;</span> 0xffff, <span class="br0">(</span>c<span class="sy0">&gt;=</span>0x20<span class="br0">)</span><span class="sy0">?</span>cstr<span class="sy0">:</span><span class="st0">"ctrl"</span><span class="br0">)</span><span class="sy0">;</span></pre>
</li>
<li class="li1">
<pre class="de1">        <span class="br0">}</span></pre>
</li>
<li class="li1">
<pre class="de1">    <span class="br0">}</span></pre>
</li>
</ol>
</div>
</div>
<p>Il <a class="bbcode_url" href="http://www.unicode.org/versions/corrigendum1.html" target="_blank">corrigendum</a> citato evita il crearsi di questa situazione, specificando qual è la <em>shortest form</em> da usare e impedendo il verificarsi di più <em>non-shortest-form</em>. Ciò previene possibili vulnerabilità dovute a questa differente codifica. Tale nuova interpretazione della codifica <a class="bbcode_url" href="http://en.wikipedia.org/wiki/UTF-8" target="_blank">UTF-8</a> è compatibile con le ultime versioni Java: JDK7, Open JDK 6, JDK 6 update 11 e successive, JDK5.0u17 e 1.4.2_19. Chi fosse invece curioso di vedere la sua interpretazione in codice, ecco un <a class="bbcode_url" href="http://cr.openjdk.java.net/%7Esherman/4486841/webrev/src/share/classes/sun/nio/cs/UTF_8.java.sdiff.html" target="_blank">confronto</a> tra la nuova e la vecchia versione della classe <em>UTF_8</em>.</p>
<p><a href="http://programmazione.it/index.php?entity=eitem&amp;idItem=41982">Modifiche nella codifica UTF-8 in Java</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Aggiornata la codifica UTF-8 in Java" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Aggiornata+la+codifica+UTF-8+in+Java" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/05/aggiornata-la-codifica-utf-8-in-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La serializzazione Java</title>
		<link>http://www.faceitweb.com/2009/04/la-serializzazione-java/</link>
		<comments>http://www.faceitweb.com/2009/04/la-serializzazione-java/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 10:34:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[ByteCode]]></category>
		<category><![CDATA[Interface Serializable]]></category>
		<category><![CDATA[ObjectOutputStream]]></category>
		<category><![CDATA[serializable]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=259</guid>
		<description><![CDATA[

Il meccanismo della serializzazione consente di salvare oggetti Java all’interno di file (File di tipo ByteCode) oppure di trasmetterli in rete come informazioni a se stanti.
L’utilità di questo meccanismo è ovvia: poter salvare lo stato interno degli oggetti in un file per poterlo recuperare in un secondo momento, oppure poter trasmettere informazioni aggregate nella rete [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>Il meccanismo della serializzazione consente di <strong>salvare oggetti Java</strong> all’interno di file (File di tipo <strong><a title="ByteCode" href="http://it.wikipedia.org/wiki/Bytecode">ByteCode</a></strong>) oppure di trasmetterli in rete come informazioni a se stanti.</p>
<p>L’utilità di questo meccanismo è ovvia: poter salvare <strong>lo stato interno degli oggetti</strong> in un file per poterlo recuperare in un secondo momento, oppure poter <strong>trasmettere informazioni aggregate</strong> nella rete in un solo colpo senza doversi preoccupare di scinderle in informazioni primitive da trasmettere separatamente.</p>
<p>Cerchiamo di capire come può tornarci utile la serializzazione: supponiamo di avere una classe chiamata Record che rappresenta l’informazione di un dipendente. La struttura di questa classe, potrebbe essere la seguente:</p>
<blockquote><p><code>public class Record {<br />
private String nome;<br />
private String cognome;<br />
private Date dataNascita;<br />
private int livello;<br />
public Record(String nome, String cognome, Date dataNascita) {<br />
this.nome = nome;<br />
this.cognome = cognome;<br />
this.dataNaschta = dataNascita;<br />
livello = 0;<br />
}<br />
... // Altri metodi per recupero e<br />
... // settaggio informazioni<br />
}</code></p></blockquote>
<p>Durante l’esecuzione del nostro programma potremmo avere una lista (un <a title="ArrayList" href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html">ArrayList</a>, un <a title="Vector" href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html">Vector</a> o quant’altro) che viene popolata mano a mano che vengono aggiunte le informazioni sui dipendenti. Questa lista, quindi, conterrà tante istanze della classe Record quanti sono i dipendenti che sono stati codificati. Sarebbe opportuno che, alla fine della giornata, quando l’applicazione viene chiusa non venissero perse tutte queste informazioni. Sarebbe ancora più bello non dover salvare queste informazioni all’interno di semplici file di testo (o file <a title="XML" href="http://it.wikipedia.org/wiki/XML">XML</a>), che chiunque può andare liberamente a modificare.</p>
<p>Entra in gioco, quindi, la serializzazione: possiamo dire al nostro programma di andare a salvare in un file particolare, tutte le istanze della classe Record che sono state create. Questo file non sarà leggibile all’occhio umano, ma sarà codificato in ByteCode. Per fare questo, è sufficiente modificare leggermente l’intestazione della classe Record affinchè essa implementi l’interfaccia Serializable:</p>
<blockquote><p><code>public class Record <strong>implements Serializable</strong> {</code></p></blockquote>
<p>L’interfaccia <strong>Serializable</strong>, come si può vedere dalla <strong><a title="Serializable" href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html">documentazione</a></strong>, non prevede alcun metodo. E’, quindi, un’interfaccia vuota, che serve solo al compilatore per capire che quell’oggetto <strong>va trattato in modo particolare</strong>. Quello che viene fatto al bytecode della classe esula dagli scopi di questo articolo, ma in buona sostanza si può dire che viene aggiunto un campo nascosto chiamato “<span style="font-family: courier new,courier;">serialVersionUid</span>“, che serve a contraddistinguere la versione della classe e a marcarne la serializzabilità.</p>
<p><span id="more-259"></span></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-8488545646955443";
google_ad_slot = "1886844531";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p>Fatto questo, è possibile salvare ciascuna istanza della classe Record all’interno di un file. Per farlo è sufficiente costruire un <a title="ObjectOutputStream" href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html">ObjectOutputStream</a> su di un file e salvarci dentro le istanze utilizzando il metodo <span style="font-family: courier new,courier;">writeObject()</span>. Ecco un esempio, che salva tutti gli oggetti Record contenuti in un ipotetico Vector di dipendenti, chiamato appunto “dipendenti”:</p>
<blockquote><p><code>public void salvaDipendenti() {<br />
try {<br />
// Apriamo il file<br />
ObjectOutputStream oos = new ObjectOutputStream(<br />
new FileOutputStream("dipendenti.dat")<br />
);</code></p>
<p><code><code>// Dopo vedremo il perché di questa linea<br />
oos.writeObject( new Integer(dipendenti.size()) );</code></code></p>
<p><code> // Salviamo tutti i record<br />
for(int i=0; i&lt;dipendenti.size(); i++) {<br />
oos.writeObject( (Record) dipendenti.elementAt(i) );<br />
}</code></p>
<p><code><code>// Chiudiamo il file<br />
oos.close();<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
}<br />
}</code></code></p></blockquote>
<p>Quello che ci rimane da vedere ora è come recuperare le informazioni salvate nel file. Come ci si può facilmente aspettare, tutto quello che dovremo fare è creare un <a title="ObjectInputStream" href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html">ObjectInputStream</a> che vada a leggere il file creato precedentemente. Ciascun oggetto salvato nel file contniene <strong>un’istanza</strong> della classe Record, tranne il primo: nel primo abbiamo inserito un oggetto Integer che ci serve per sapere quante istanze di Record ci sono nel file. Questo è un semplice trucco per evitarci troppi problemi in fase di lettura:</p>
<blockquote><p><code>public void leggiDipendenti() {<br />
try {<br />
// Apriamo il file<br />
ObjectInputStream ois = new ObjectInputStream(<br />
new FileInputStream("dipendenti.dat")<br />
);</code></p>
<p><code><code>// Leggiamo il numero di dipendenti salvati<br />
int numDip = ((Integer) ois.readObject()).intValue();</code></code></p>
<p><code> // Ora usiamo questo numero in un ciclo for di letture<br />
for(int i=0; i&lt;numDip; i++) {<br />
dipendenti.add( (Record) ois.readObject() );<br />
}</code></p>
<p><code><code>// Chiudiamo il file<br />
ois.close();<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
}<br />
}</code></code></p></blockquote>
<p>Come possiamo vedere da questi due esempi, un file ByteCode può contenere <strong>diversi tipi di oggetto</strong> (nel nostro caso, un Integer e tanti Record). L’importante è capire che possono essere salvati su file solamente “<em>oggetti</em>” e non tipi di dato primitivo (anche se questi possono essere presenti nell’oggetto che andiamo a serializzare), per ciascuno dei quali è prevista l’apposita <strong><a title="classe wrapper" href="http://it.wikipedia.org/wiki/Adapter">classe wrapper</a></strong>. Quello da fare sempre, è di inserire come prima informazione, il numero di oggetti che saranno scritti successivamente. In questo modo sarà più facile recuperarli esattamente in futuro.</p>
<p>Non è, ovviamente, l’unico modo di procedere. Si può operare in modi differenti:</p>
<ul>
<li>
<div><span style="text-decoration: underline;">Testando la fine del file</span>: per far questo è necessario utilizzare il metodo <span style="font-family: courier new,courier;">available()</span> che ritorna il numero di byte che è ancora possibile leggere senza interruzioni. Ovviamente è necessario utilizzarlo come condizione di un ciclo while, condizione che dovrà essere testata ad ogni lettura (e non è molto performante effettuare test sui file);</div>
</li>
<li>
<div><span style="text-decoration: underline;">Catturando una EOFException</span>: questo implica di continuare a leggere finchè non viene sollevata questa eccezione. Ovviamente l’eccezione andrà gestita separatamente e l’intera struttura del blocco di lettura va rivista a questo scopo (visibilità delle variabili, ritorno da eccezione, ecc.).</div>
</li>
<li>
<div><span style="text-decoration: underline;">Calcolando il numero di oggetti a runtime</span>: la procedura non è bellissima a vedersi, ma può funzionare. Si controlla da subito la dimensione del file; si legge il primo oggetto e si controlla quanti byte sono stati letti (dimnesione iniziale &#8211; valore di <span style="font-family: courier new,courier;">available()</span> ); si stima quanti altri oggetti ci sono dividendo il valore di <span style="font-family: courier new,courier;">available()</span> per il numero di byte letti all’inizio.</div>
</li>
</ul>
<p>Insomma, ognuno si può inventare quello che vuole. Io credo che la soluzione più pulita sia quella di memorizzare come primo oggetto un intero che indica chiaramente quanti altri oggetti incontrerò nella lettura.</p>
<p>La serializzazione, come detto all’inizio, è di fondamentale importanza anche per la <strong>trasmissione delle informazioni in rete</strong>. Pensiamo, ad esempio, ad una chat, dove la comunicazione tra client e server avviene tramite lo scambio di messaggi. Vi saranno messaggi che rappresentano i veri e propri messaggi che gli utenti della chat si scambiano, ma vi sono anche messaggi di utilità per client e server: alcuni esempi sono la comunicazione del nome utente e la password, l’informazione sulla lista di utenti attivi, le comunicazioni di arrvo di nuovi utenti o abbandono di altri, ecc. Ciascun messaggio può essere rappresentato da una classe “Messaggio” che incapsula tutte le caratteristiche richieste e che rappresenta <strong>il protocollo</strong> di comunicazione tra client e server: tale classe andrà ovviamente serializzata.</p>
<p>Concludendo, quindi, la serializzazione è un processo <strong>molto importante e utile</strong> in tutti i casi in cui si debba tenere traccia dello stato degli oggetti o quando essi devono essere inviati nella rete. Tutto quello che è necessario fare è <strong>implementare l’interfaccia Serializable</strong>, tenendo presente che all’interno di classi che implementano Serializable possono essere inseriti solo oggetti di tipo primitivo o serializzabili a loro volta. La maggior parte delle classi del core Java sono già serializzabili e pure tutti gli array sono automaticamente serializzabili, quindi gran parte del lavoro è già stato fatto a monte.</p>
<p>- <a href="http://www.bradipomissile.net/2007/11/29/la-serializzazione-in-java/">La serializzazione in Java</a></p>
<p>- <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html">Interface Serializable</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for La serializzazione Java" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+La+serializzazione+Java" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/04/la-serializzazione-java/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>EoD SQL 2.0</title>
		<link>http://www.faceitweb.com/2009/02/eod-sql-20/</link>
		<comments>http://www.faceitweb.com/2009/02/eod-sql-20/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 07:45:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[EoD SQL]]></category>
		<category><![CDATA[EoD SQL 2.0]]></category>
		<category><![CDATA[Object mapping]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[resultset]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=187</guid>
		<description><![CDATA[

EoD SQL è una piccola API che aggancia queries SQL ad oggetti JAVA. Sono state progettate per essere compatibili con le API &#8220;Easy of Development&#8220;, che possono essere trovate nell&#8217;J2SE 1.6 beta. Il loro scopo principale è quello di mappare i ResultSet SQL agli oggetti JAVA. La maggior parte degli strati di OR mapping, provano [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>EoD SQL è una piccola API che aggancia queries SQL ad oggetti JAVA. Sono state progettate per essere compatibili con le API &#8220;<em>Easy of Development</em>&#8220;, che possono essere trovate nell&#8217;J2SE 1.6 beta. Il loro scopo principale è quello di mappare i ResultSet SQL agli oggetti JAVA. La maggior parte degli strati di OR mapping, provano a replicare la struttura del database in oggetti, dove l&#8217;EoD  SQL scrive il codice SQL, mentre per facilitare l&#8217;accesso consente agli oggetti JAVA di mappare il ResultSet.</p>
<p>I vantaggi di Eod SQL:</p>
<li> Super leggerezza</li>
<li>Facilità di utilizzo</li>
<li>Sono ben documentate</li>
<li>Più caratteristiche delle originali EoD RI</li>
<li>Nessun tempo di compilazione richiesto</li>
<li>Nessun XML o altra configurazione di file richiesta</li>
<li>Può lavorare con qualsiasi database JDBC</li>
<li>L&#8217;Object mapping è dissoluto: le colonne extra nei risultati vengono ignorate, come gli extra field nei data object</li>
<p>Svantaggi:</p>
<li> EoD SQL non parsa o valida l&#8217;SQL</li>
<li>EoD SQL non è un database o un connettore per database, ma sta sopra al JDBC</li>
<p>La relesa EoD SQL 2.0 è disponibile a questo <a href="https://eodsql.dev.java.net/">indirizzo</a>.<a href="https://eodsql.dev.java.net/"><br />
</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for EoD SQL 2.0" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+EoD+SQL+2.0" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/02/eod-sql-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaFX 1.0</title>
		<link>http://www.faceitweb.com/2008/12/javafx-10/</link>
		<comments>http://www.faceitweb.com/2008/12/javafx-10/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 15:39:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Adobe Illustrator]]></category>
		<category><![CDATA[Adobe Photoshop]]></category>
		<category><![CDATA[Drag-to-Install]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaFX Production Suite]]></category>
		<category><![CDATA[JavaFx Script]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[rich immersive media]]></category>
		<category><![CDATA[Rich Internet]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Scalable Vector Graphics]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[sun microsystems]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=93</guid>
		<description><![CDATA[

 Sun Microsystems ha annunciato il rilascio di JavaFX 1.0, una nuova piattaforma che permette di costruire “Rich Internet Applications” (RIA) per browser web e desktops. Sviluppatori e web designers possono sfruttare funzionalità e potenzialità della tecnologia Java con i RIAs per realizzare applicazioni per tutti i tipi di screens, da desktop e TV a [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>14</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>IT</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"><a href="http://it.sun.com/">Sun Microsystems</a> ha annunciato il rilascio di JavaFX 1.0, una nuova piattaforma che permette di costruire “<em>Rich Internet Applications</em>” (RIA) per browser web e desktops. Sviluppatori e web designers possono sfruttare funzionalità e potenzialità della tecnologia Java con i RIAs<span> </span>per realizzare applicazioni per tutti i tipi di <em>screens</em>, da desktop e TV a browser e dispositivi mobili. </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Andiamo ad approfondire le sue caratteristiche.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">RIA per tutti i tipi di <em>screens</em></span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">JavaFx fornisce la possibilità di costruire applicazioni “<em>rich client” </em>che integrano <em>“rich immersive media” </em>come ad esempio audio e video, grafica, rich text e web services, per tutti i tipi di <em>screens</em>, dal desktop alla TV dal browser ai dispositivi mobili.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Creatività senza confini</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">JavaFx facilita l’integrazione di video, audio, grafica, animazioni e rich text. Le applicazioni possono combinare audio e video, grafica 2D con grafica 3D, trasformare prospettive e rich text, con convincenti effetti visivi e trasformazioni.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Sinergia tra sviluppori e designers</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">JavaFx permette a designers e sviluppatori di semplificare, unificare e rapidamente combinare grafica e media assets con il minimo sforzo. Riduce i tempi di produzione offrendo un intuitivo workflow <em>developer-designer, </em>consentendo ai designers, che utilizzano tools di grafica come Photoshop e Adobe Illustrator, di pubblicare i loro contenuti nei vari tipi di screens in modo intelligente, organizzato e semplificato.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Preservare gli investimenti Java</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Gli sviluppatori Java possono preservare i loro investimenti riusando le librerie Java nelle applicazioni JavaFx. Permette infatti di importare qualsiasi classe Java, creare nuovi oggetti e chiamare metodi al suo interno.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Semplice linguaggio dichiarativo per cervelli creativi</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Le applicazioni JavaFx sono scritte in <strong>JavaFx Script</strong>, un linguaggio progettato per sviluppatori web e designers tecnici che preferiscono programmare in un contesto visuale. Questo è un linguaggio di scripting semplice, dichiarativo e facile da imparare che permette agli sviluppatori di scrivere codice che corrisponde ai layout GUI (Grafical User Interface). JavaFx Script ha una potente caratteristica di legame con i dati, che è una semplice sintassi per sincronizzare lo stato di oggetti multipli, consentendo ai componenti GUI di cambiare automaticamente stato con il cambiamento di fondo dei dati.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Continuare ad usare skills e tools già esistenti</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">La <strong>JavaFX Production Suite</strong> contiene una suite di tools e plugin per Adobe Photoshop e Adobe Illustrator, consentendo ai designers di riusare i loro già esistenti skills senza dover imparare nuovi tools. Infatti possono semplicemente esportare la loro grafica dai loro tools al formato JavaFx.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><strong><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Conversione in un click</span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">I designers possono convertire i loro elementi grafici da Adobe Photoshop e Adobe Illustrator nel formato JavaFx con un singolo click. Il plugin infatti fornisce una preview del contenuto convertito permettendo di apportare modifiche prima della conversione finale. I designers lavorano con Scalable Vector Graphics (SVG), e con editors come Inkscape possono convertire i loro SVG nel formato JavaFx con il JavaFX Media Factory.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">Tra le innovazioni principali introdotte in JavaFx c’è la piattaforma Java <strong>Drag-to-Install </strong>che permette di trascinare (drag-and-drop) l’applicazione dal browser al desktop. Questo permette agli utenti di spostare le applets che sono in esecuzione sul browser, direttamente sul loro desktop.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: left;" align="left"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"> </span></p>
<p><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">JavaFx 1.0 è disponibile per il download sul sito ufficiale (</span><a href="http://www.javafx.com/" target="_self"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">http://www.javafx.com</span></span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">) dove è possibile scaricare l’SDK, oppure una versione di NetBeans con il plugin integrato, con utili <em>palette </em>per la costruzione rapida di componenti JavaFX.</span></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for JavaFX 1.0" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+JavaFX+1.0" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2008/12/javafx-10/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
