<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>www.jugpadova.it: Tag closures</title>
    <link>http://www.jugpadova.it/articles/tag/closures</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Java User Group [Padova]</description>
    <item>
      <title>JUG Meeting#46 - Continuous Integration and Closures</title>
      <description>&lt;p&gt;&lt;strong&gt;Quando:&lt;/strong&gt; sabato 27 settembre 2008 dalle 9:00 alle 12:30&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Dove:&lt;/strong&gt; Aula Ce – piano terra del &lt;span class="caps"&gt;DEI&lt;/span&gt;, via Gradenigo 6/B (ingresso studenti), Padova&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Evento:&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Per il programma del meeting e per l&amp;#8217;iscrizione all&amp;#8217; evento stesso (non obbligatoria, ma consigliata) vi rimando al link ufficiale su &lt;a href="http://jugevents.org/jugevents/event/show.html?id=7321"&gt;jugevents&lt;/a&gt;.
&lt;br&gt;&lt;/p&gt;


	&lt;p&gt;Come al solito vi è la possibilità di associarsi al &lt;span class="caps"&gt;JUG&lt;/span&gt; pagando la quota d&amp;#8217;iscrizione, e di comperare una delle nuove fantastiche magliette con il logo del &lt;span class="caps"&gt;JUG&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Al termine del meeting seguirà, con chi si vorrà fermare, la pizzata.&lt;/p&gt;


	&lt;p&gt;La partecipazione è come sempre &lt;strong&gt;libera&lt;/strong&gt; e &lt;strong&gt;gratuita&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;Vi aspettiamo numerosi.&lt;/p&gt;
</description>
      <pubDate>Mon, 08 Sep 2008 14:20:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8698b098-40ae-476e-88af-6f806c09ca49</guid>
      <author>Enrico Giurin</author>
      <link>http://www.jugpadova.it/articles/2008/09/08/jug-meeting-46-continuous-integration-and-closures</link>
      <category>Meeting</category>
      <category>Continuous</category>
      <category>integration</category>
      <category>closures</category>
    </item>
    <item>
      <title>Java 7</title>
      <description>&lt;p&gt;No, non avete letto male, non è ancora uscita la release ufficiale di Java 6, che già si pensa a cosa inserire in Java 7.&lt;/p&gt;


	&lt;p&gt;In questi giorni si è aperta nella blogosfera che ruota attorno a Java una piccola guerra di religione sulla necessità o meno di inserire le chiusure nel linguaggio.&lt;/p&gt;
&lt;p&gt;Per chi è avezzo di Smalltalk, Ruby o anche C# il concetto di chiusura è familiare. Per chi invece ha visto solo Java, il concetto è nuovo (o quasi).&lt;/p&gt;


	&lt;p&gt;Brevemente un &lt;a href="http://www.martinfowler.com/bliki/Closure.html"&gt;closure&lt;/a&gt;  è una funzione dichiarata all&amp;#8217;interno di un&amp;#8217;altra funzione della quale condivide le variabili. 
&lt;a href="http://gafter.blogspot.com/2006/09/closures-for-java-version-01.html"&gt;Neil Gafter&lt;/a&gt;  (già co-autore del Collection Framework) propone che questo tipo di costrutto sia inserito anche all&amp;#8217;interno di Java.&lt;/p&gt;


	&lt;p&gt;Il concetto non è completamente nuovo perché in Java esistono già dei costrutti simili, le classi interne anonime, che svolgono grossomodo lo stesso compito, con due differenze, secondo Gafter, importanti:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Le classi interne anonime possono lavorare con variabili del metodo che le contiene solo se queste sono dichiarate &lt;code&gt;final&lt;/code&gt;.&lt;/li&gt;
		&lt;li&gt;La sintassi che si ottiene con le chiusure è più semplice e pulita.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;Vediamo un piccolo esempio del secondo punto. Supponiamo di avere un metodo che ha il compito di sottomettere un task ad un altro thread (usando &lt;code&gt;java.util.concurrent.Executor&lt;/code&gt;).&lt;/p&gt;


	&lt;p&gt;Con le classi anonime scriveremmo il seguente codice:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;void sayHelloInAnotherThread(Executor ex) {
    ex.execute(new Runnable() {
        public void run() {
            System.out.println(&amp;quot;hello&amp;quot;);
        }
    });
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;mentre con le chiusure potremmo scrivere (la sintassi è ancora oggetto di discussione):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;void sayHelloInAnotherThread(Executor ex) {
    ex.execute(() {
        System.out.println(&amp;quot;hello&amp;quot;);
    });
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;La questione è aperta. Anche &lt;a href="http://blogs.sun.com/jag/entry/the_black_hole_theory_of"&gt;James Gosling&lt;/a&gt; ha espresso dubbi circa la vera utilità di tale feature.&lt;/p&gt;


	&lt;p&gt;Staremo a vedere.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 12:55:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9342b67a-9682-4e38-a335-46399c98e2e9</guid>
      <author>Andrea Nasato</author>
      <link>http://www.jugpadova.it/articles/2006/09/13/java-7</link>
      <category>Programmazione</category>
      <category>java</category>
      <category>closures</category>
      <category>Gosling</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/4295</trackback:ping>
    </item>
  </channel>
</rss>

