<?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: Category Software</title>
    <link>http://www.jugpadova.it/articles/category/software</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Java User Group [Padova]</description>
    <item>
      <title>JUG Meeting#60: Corso iReport</title>
      <description>&lt;p&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Meeting#60: Corso iReport&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Quando:&lt;/strong&gt; sabato 24 settembre dalle 9:00 alle 18:00&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Dove:&lt;/strong&gt; &lt;a href="http://www.laformadelibro.it/dove-siamo/"&gt;La Forma del Libro&lt;/a&gt; via XX Settembre, 63 Padova     .&lt;/p&gt;


	&lt;p&gt;Un’intera giornata di corso su iReport, tenuto dal suo creatore e principale sviluppatore &lt;a href="mailto:giulio@jaspersoft.com"&gt;Giulio Toffoli&lt;/a&gt;.&lt;/p&gt;


	&lt;table style="border:1px dashed black;"&gt;
		&lt;tr style="background:#D1CFCF;"&gt;
			&lt;td colspan="2"&gt;&lt;strong&gt;Programma:&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DDDDDD;"&gt;
			&lt;td&gt;09:00&lt;/td&gt;
			&lt;td&gt;Accoglienza&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;09:30&lt;/td&gt;
			&lt;td&gt;Funzionamento di JasperReports e creazione del primo template&lt;br /&gt;
Utilizzare iReport e Jaspersoft Studio (sorgenti dati, campi, variabili, parametri, gruppi, struttura del report)&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DDDDDD;"&gt;
			&lt;td&gt;11:00&lt;/td&gt;
			&lt;td&gt;Pausa caffè&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;11:15&lt;/td&gt;
			&lt;td&gt;Grafici, sottoreport e crosstab&lt;br /&gt;
Componenti personalizzati&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DDDDDD;"&gt;
			&lt;td&gt;13:00&lt;/td&gt;
			&lt;td&gt;Pranzo&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;14:00&lt;/td&gt;
			&lt;td&gt;Esportare i report e integrazione di JasperReports in applicativi web&lt;br /&gt;
Lavorare con Jaspersoft Server: pubblicare e gestire i report da iReport&lt;br /&gt;
Creare drilldown reports&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DDDDDD;"&gt;
			&lt;td&gt;15:30&lt;/td&gt;
			&lt;td&gt;Pausa caffè&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;15:45&lt;/td&gt;
			&lt;td&gt;Integrazione di JasperReports server: webservices e &lt;span class="caps"&gt;REST&lt;/span&gt;&lt;br /&gt;
Visualizzare i report sull&amp;#8217; iPhone in applicazioni native&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DDDDDD;"&gt;
			&lt;td&gt;18:00&lt;/td&gt;
			&lt;td&gt;Fine meeting&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;p&gt;&lt;br/&gt;
Ulteriori informazioni su &lt;a href="http://www.jugevents.org/jugevents/event/37450"&gt;jugevents&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Per ragioni di spazio e di organizzazione il numero di partecipanti sarà limitato, quindi &lt;a href="http://www.jugevents.org/jugevents/event/registration.form?event.id=37450"&gt;l&amp;#8217;iscrizione è obbligatoria&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Al termine del meeting andremo tutti assieme a mangiare una pizza.&lt;/p&gt;


	&lt;p&gt;Vi aspettiamo!&lt;/p&gt;
</description>
      <pubDate>Sun, 21 Aug 2011 10:04:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3e20b3f5-99b9-4d21-b2a0-a0d5e1059dfb</guid>
      <author>Tarin Gamberini</author>
      <link>http://www.jugpadova.it/articles/2011/08/21/jug-meeting-60-corso-ireport</link>
      <category>Meeting</category>
      <category>Software</category>
      <category>Eventi</category>
      <category>Corso</category>
      <category>ireport</category>
    </item>
    <item>
      <title>Rilasciato Parancoe 2.0</title>
      <description>&lt;p&gt;Dopo una lunga gestazione abbiamo rilasciato la versione 2.0 di Parancoe.&lt;/p&gt;


	&lt;p&gt;Leggete l&amp;#8217;annuncio ufficiale nel sito di Parancoe:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.parancoe.org/news/2008/11/01/parancoe-2-0-released/"&gt;http://www.parancoe.org/news/2008/11/01/parancoe-2-0-released/&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Non mancate anche di leggere la nuovissima &lt;strong&gt;Parancoe Reference Guide&lt;/strong&gt;, sia in &lt;a href="http://docs.parancoe.org/reference/html/parancoe-reference-guide.html"&gt;&lt;span class="caps"&gt;HTML&lt;/span&gt;&lt;/a&gt;, sia in &lt;a href="http://docs.parancoe.org/reference/pdf/parancoe-reference-guide.pdf"&gt;&lt;span class="caps"&gt;PDF&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Sat, 01 Nov 2008 11:57:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5ecaebfb-667f-4f1b-8b4c-2e4d0e81cc39</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2008/11/01/rilasciato-parancoe-2-0</link>
      <category>Software</category>
      <category>Parancoe</category>
    </item>
    <item>
      <title>JUG Events</title>
      <description>&lt;p&gt;Ottimo risultato questa settimana per la nostra applicazione &lt;a href="http://www.jugevents.org"&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Events&lt;/a&gt;. E&amp;#8217; infatti esposta nella home page di &lt;a href="http://www.java.net"&gt;java.net&lt;/a&gt;:&lt;/p&gt;


&lt;typo:lightbox img="2415162215" thumbsize="small" displaysize="medium" /&gt;

	&lt;p&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Events è ora anche l&amp;#8217;applicazione usata da molti &lt;span class="caps"&gt;JUG&lt;/span&gt; sparsi per il mondo per gestire i propri eventi, e dalla &lt;a href="http://community.java.net/jugs/"&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Community&lt;/a&gt; per esporli nella pagina degli &lt;a href="http://wiki.java.net/bin/view/JUGs/JUGEvents"&gt;eventi dei &lt;span class="caps"&gt;JUG&lt;/span&gt;&lt;/a&gt; su java.net.&lt;/p&gt;


	&lt;p&gt;Grazie a chi ha contribuito e contribuisce a &lt;a href="http://www.jugevents.org"&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Events&lt;/a&gt; e a &lt;a href="http://www.parancoe.org"&gt;Parancoe&lt;/a&gt;, il meta-framework su cui si basa. Entrambi i progetti sono open-source&amp;#8230;chi ha voglia di fare, si faccia avanti! :-)&lt;/p&gt;
</description>
      <pubDate>Tue, 15 Apr 2008 10:03:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:338a1842-6f8a-4206-b102-f015b193c9b5</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2008/04/15/jug-events</link>
      <category>Software</category>
      <category>JUG</category>
      <category>Events</category>
    </item>
    <item>
      <title>NetBeans rientra nei pacchetti di Debian</title>
      <description>&lt;p&gt;Da qualche giorno NetBeans è stato inserito nei pacchetti ufficiali della distribuzione Debian.&lt;/p&gt;
&lt;p&gt;&amp;Egrave; stato inserito nella versione &lt;i&gt;testing&lt;/i&gt; (nome in codice &lt;i&gt;lenny&lt;/i&gt;) della distribuzione, classificato nella sezione &lt;i&gt;devel&lt;/i&gt;. &amp;Egrave; stata integrata la versione &lt;b&gt;5.5.1&lt;/b&gt; dell&amp;#8217;IDE.&lt;/p&gt;


	&lt;p&gt;Pi&amp;ugrave; in particolare i pacchetti sono due, il principale &lt;i&gt;netbeans-ide&lt;/i&gt; si appoggia al pacchetto &lt;i&gt;netbeans-platform&lt;/i&gt; con una occupazione complessiva di 170Mb circa.&lt;/p&gt;


	&lt;p&gt;Utilizzando &lt;i&gt;apt-get&lt;/i&gt; l&amp;#8217;IDE si installa automagicamente e poi si ritrova nel men&amp;ugrave; principale di &lt;span class="caps"&gt;KDE&lt;/span&gt; nella sezione &lt;i&gt;sviluppo&lt;/i&gt;. L&amp;#8217;ho provato e per ora sembra perfettamente integrato nel sistema operativo: ho aggiornato alcuni componenti dell&amp;#8217;IDE utilizzando l&amp;#8217;update tool e si sono installati senza alcun problema.&lt;/p&gt;


	&lt;p&gt;Quindi d&amp;#8217;ora in poi gli utenti Debian potranno installare ambiente Java e &lt;span class="caps"&gt;IDE&lt;/span&gt; con la potenza e flessibilit&amp;agrave; del sistema di pacchettizzazione della loro distribuzione.&lt;/p&gt;</description>
      <pubDate>Tue, 25 Sep 2007 10:10:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ac0d3e44-6ca2-4f53-b758-1982a5454773</guid>
      <author>Dario Santamaria</author>
      <link>http://www.jugpadova.it/articles/2007/09/25/netbeans-rientra-nei-pacchetti-di-debian</link>
      <category>Software</category>
      <category>ide</category>
      <category>debian</category>
      <category>netbeans</category>
    </item>
    <item>
      <title>Disponibile NetBeans 6.0 Beta 1</title>
      <description>&lt;p&gt;Procede la corsa verso la release di NetBeans 6, prevista per fine novembre.&lt;/p&gt;


	&lt;p&gt;Da ieri è disponibile la Beta 1&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.netbeans.org/community/releases/60/index.html"&gt;http://www.netbeans.org/community/releases/60/index.html&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 18 Sep 2007 04:53:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:db29a7c7-e98e-4d56-b5e7-bed6b565fecb</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2007/09/18/disponibile-netbeans-6-0-beta-1</link>
      <category>Software</category>
      <category>ide</category>
      <category>netbeans</category>
    </item>
    <item>
      <title>OpenProj</title>
      <description>&lt;p&gt;Volevo segnalare unprogetto open source scritto in Java.
Si tratta di un clone di MS project, riuscito direi bene.
E&amp;#8217; un buon strumento per lo gestione di piccoli progetti, 
e&amp;#8217; molto comodo per aprire dei file di MS project, e per 
avere facilmente qualche grafico.&lt;/p&gt;


	&lt;p&gt;Per la gestione di progetti più grossi esiste una versione online
a pagamento con un canone mensile&lt;/p&gt;


	&lt;p&gt;&lt;a href="https://sourceforge.net/projects/openproj/"&gt;https://sourceforge.net/projects/openproj/&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 16 Sep 2007 08:56:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7942a1ac-0a04-44a8-961b-88c286364702</guid>
      <author>Paolo Foletto</author>
      <link>http://www.jugpadova.it/articles/2007/09/16/openproj</link>
      <category>Software</category>
      <category>open</category>
      <category>java</category>
      <category>project</category>
      <category>management</category>
    </item>
    <item>
      <title>JUG Events</title>
      <description>&lt;p&gt;&lt;span class="caps"&gt;JUG&lt;/span&gt; Events è finalmente online!&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.jugevents.org"&gt;www.jugevents.org&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;A parte l&amp;#8217;utilità dell&amp;#8217;applicazione per il nostro e gli altri &lt;span class="caps"&gt;JUG&lt;/span&gt;, mi preme qui sottolineare che è la prima applicazione sviluppata dal &lt;span class="caps"&gt;JUG&lt;/span&gt; Padova, e spero non l&amp;#8217;ultima.&lt;/p&gt;


	&lt;p&gt;Gli sviluppatori di &lt;span class="caps"&gt;JUG&lt;/span&gt; Events siamo stati principalmente &lt;a href="http://benfante.blogspot.com"&gt;io&lt;/a&gt; ed &lt;a href="http://enricogi.blogspot.com/"&gt;Enrico&lt;/a&gt;, con il supporto di Paolo F. Ma l&amp;#8217;applicazione usa il nostro framework &lt;a href="http://www.parancoe.org"&gt;Parancoe&lt;/a&gt;, quindi gran parte del merito va anche a tutti quelli che hanno contribuito e partecipano al suo sviluppo.&lt;/p&gt;
</description>
      <pubDate>Mon, 03 Sep 2007 16:01:28 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4b67890f-9fa5-421e-b7a1-5281d6e09563</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2007/09/03/jug-events</link>
      <category>Software</category>
      <category>Programmazione</category>
    </item>
    <item>
      <title>Iterating on non-iterable classes</title>
      <description>&lt;p&gt;(You&amp;#8217;ll find all the code of this post in &lt;a href="http://www.benfante.com/bensite/sourcecode.jsf"&gt;Benfante&amp;#8217;s Utilities&lt;/a&gt; mini-library)&lt;/p&gt;

&lt;p&gt;One of the futures I &amp;#8216;m reappraising is the JDK 5 enhanced for statement.&lt;/p&gt;

&lt;p&gt;I still consider it too limited, but it&amp;#8217;s very comfortable in the simplest (and maybe common) cases.&lt;/p&gt;

&lt;p&gt;But&amp;#8230;what if the elements on which you want to iterate are not managed by an Iterable class?&lt;/p&gt;

&lt;p&gt;For example, this happens with the &lt;a href="http://www.xom.nu/"&gt;XOM&lt;/a&gt; library, where the Element.getChildElements returns an instance of the Elements class, wich is neither a Collection, or an Iterable class. So, for iterating on children elements, you have to use the basic for statement:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;for (int i=0; i &amp;lt; elements.size(); i++) {
  Element element = elements.get(i);
  // etc...
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I would like to write simply:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;for (Element element: elements) {
  // etc...
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So I wrote an &lt;strong&gt;&lt;code&gt;Iterabletor&lt;/code&gt;&lt;/strong&gt; class that builds a proxy around a class, enhancing it with the Iterable interface.&lt;/p&gt;

&lt;p&gt;Now You can write:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;Iterable&amp;lt;Element&amp;gt; iterable =
  new Iterabletor&amp;lt;Element&amp;gt;(elements).getIterable();

for (Element element: iterable) {
  // etc...
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Take a look at how I realaized this.&lt;/p&gt;

&lt;p&gt;First, the &lt;code&gt;Iterabletor&lt;/code&gt; class:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;package com.benfante.utils.iterabletor;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Iterator;

/**
 * A class for add iterability to another class
 * 
 * @author lucio
 */
public class Iterabletor&amp;lt;T&amp;gt; implements InvocationHandler {

    private final Object obj;
    private Class&amp;lt;? extends Iterator&amp;gt; iteratorClass;

    /**
     * Prepare for iterability the passed object using a XOMIterator.
     *
     * @param The object on which iterate.
     */
    @SuppressWarnings(value = &amp;quot;unchecked&amp;quot;)
    public Iterabletor(Object obj) {
        this.obj = obj;
        this.iteratorClass = XOMIterator.class;
    }

    /**
     * Prepare for iterability the passed object using the passed iterator class.
     *
     * @param The object on which iterate.
     */
    public Iterabletor(Object obj, Class&amp;lt;? extends Iterator&amp;gt; iteratorClass) {
        this.obj = obj;
        this.iteratorClass = iteratorClass;
    }

    @SuppressWarnings(value = &amp;quot;unchecked&amp;quot;)
    public synchronized Iterable&amp;lt;T&amp;gt; getIterable() {
        Class&amp;lt;?&amp;gt; objClass = obj.getClass();
        Class&amp;lt;?&amp;gt;[] oldInterfaces = objClass.getInterfaces();
        Class&amp;lt;?&amp;gt;[] newInterfaces = new Class&amp;lt;?&amp;gt;[oldInterfaces.length + 1];
        System.arraycopy(oldInterfaces, 0, newInterfaces, 0, oldInterfaces.length);
        newInterfaces[newInterfaces.length - 1] = Iterable.class;
        return (Iterable&amp;lt;T&amp;gt;) Proxy.newProxyInstance(objClass.getClassLoader(),
                newInterfaces,
                this);
    }

    @SuppressWarnings(value = &amp;quot;unchecked&amp;quot;)
    private Iterator&amp;lt;T&amp;gt; iterator() {
        try {
            return (Iterator&amp;lt;T&amp;gt;) iteratorClass
                .getConstructor(Object.class).newInstance(obj);
        } catch (Exception e) {
            throw new UnsupportedOperationException(&amp;quot;No contructor(object)&amp;quot;, e);
        }
    }

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if (method.getName().equals(&amp;quot;iterator&amp;quot;)) {
            return this.iterator();
        } else {
            try {
                return method.invoke(obj, args);
            } catch (InvocationTargetException ite) {
                throw ite.getCause();
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The default Iterator is XOMIterator (you can imagine why this name :) ), which reflect on the &amp;#8220;collection&amp;#8221;, calling the get(int) and size() methods:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;package com.benfante.utils.iterabletor;

import java.util.Iterator;
import org.apache.log4j.Logger;

/**
 * An Iterator for XOM-like collection classes
 * ...i.e. classes with get(int) and size() methods.
 * 
 * @author lucio
 */
public class XOMIterator&amp;lt;T&amp;gt; implements Iterator&amp;lt;T&amp;gt; {

    private static final Logger logger = Logger.getLogger(XOMIterator.class);
    private Object obj;
    private int index;

    public XOMIterator(Object obj) {
        this.obj = obj;
    }

    public boolean hasNext() {
        try {
            int count = ((java.lang.Integer) obj.getClass()
                    .getMethod(&amp;quot;size&amp;quot;, new Class[0])
                    .invoke(obj)).intValue();
            return index &amp;lt; count;
        } catch (Exception ex) {
            logger.error(&amp;quot;No size() method in the target object (&amp;quot;
                    + obj.getClass().getName() + &amp;quot;)&amp;quot;, ex);
            throw
                    new UnsupportedOperationException(
                    &amp;quot;No size() method in the target object (&amp;quot;
                    + obj.getClass().getName() + &amp;quot;)&amp;quot;, ex);
        }
    }

    @SuppressWarnings(value = &amp;quot;unchecked&amp;quot;)
    public T next() {
        try {
            return (T) obj.getClass()
                    .getMethod(&amp;quot;get&amp;quot;, new Class&amp;lt;?&amp;gt;[]{int.class})
                    .invoke(obj, new Integer(index++));
        } catch (Exception ex) {
            logger.error(&amp;quot;No get(int) method in the target object (&amp;quot;
                    + obj.getClass().getName() + &amp;quot;)&amp;quot;, ex);
            throw
                    new UnsupportedOperationException(
                    &amp;quot;No get(int) method in the target object (&amp;quot;
                    + obj.getClass().getName() + &amp;quot;)&amp;quot;, ex);
        }
    }

    public void remove() {
        throw new UnsupportedOperationException(&amp;quot;Not supported.&amp;quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Of course, You can use a different Iterator:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;Iterator&amp;lt;MyElement&amp;gt; iterable =
    new Iterabletor&amp;lt;MyElement&amp;gt;(element, MyIterator.class)
        .getIterable();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 27 Jul 2007 06:42:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:eef63133-72a4-4a79-8d9b-61c0efb7be20</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2007/07/27/iterating-on-non-iterable-classes</link>
      <category>Tips &amp; Tricks</category>
      <category>Software</category>
      <category>Iterable</category>
      <category>Iterator</category>
      <category>for</category>
      <category>reflection</category>
      <category>proxy</category>
    </item>
    <item>
      <title>Parancoe e Glassfish</title>
      <description>&lt;p&gt;Normalmente &lt;a href="http://tomcat.apache.org"&gt;Tomcat&lt;/a&gt; è più che sufficiente per un&amp;#8217;applicazione sviluppata con &lt;a href="http://parancoe.dev.java.net"&gt;Parancoe&lt;/a&gt;. Ma a volte potrebbe servirvi (o potreste essere costretti ad usare) un application server J(2)EE completo, come, ad esempio, &lt;a href="http://glassfish.dev.java.net"&gt;Glassfish&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se questo è il vostro caso, potrebbe interessarvi un articolo presente nel &lt;a href="http://wiki.java.net/bin/view/Projects/Parancoe"&gt;Wiki di Parancoe&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://wiki.java.net/bin/view/Projects/UsingParancoeWithGlassfish"&gt;Using Parancoe with Glassfish&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 02 Jul 2007 08:38:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ffcd2fdf-5010-4a09-8895-e45b2cc9129d</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2007/07/02/parancoe-e-glassfish</link>
      <category>Software</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/52508</trackback:ping>
    </item>
    <item>
      <title>LWJGL 1.0 released</title>
      <description>&lt;p&gt;After several years of development, finally the first stable release of the  Lightweight Java Game Library (LWJGL) arrived.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p class="pullquote"&gt;The Lightweight Java Game Library (LWJGL) is a solution aimed directly at professional and amateur Java programmers alike to enable commercial quality games to be written in Java. &lt;span class="caps"&gt;LWJGL&lt;/span&gt; provides developers access to high performance crossplatform libraries such as OpenGL (Open Graphics Library) and OpenAL (Open Audio Library) allowing for state of the art 3D games and 3D sound. Additionally &lt;span class="caps"&gt;LWJGL&lt;/span&gt; provides access to controllers such as Gamepads, Steering wheel and Joysticks. All in a simple and straight forward &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Take a look at here: &lt;a href="http://lwjgl.org/"&gt;&lt;span class="caps"&gt;LWJGL&lt;/span&gt; Web Site&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 26 Feb 2007 13:51:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f6d89f3e-385c-47df-b3c3-21536f6393df</guid>
      <author>Dario Santamaria</author>
      <link>http://www.jugpadova.it/articles/2007/02/26/lwjgl-1-0-released</link>
      <category>Software</category>
      <category>Java3D</category>
      <category>openGL</category>
      <category>openAL</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/20342</trackback:ping>
    </item>
    <item>
      <title>Maven2 quick reference card</title>
      <description>&lt;p&gt;For those who want everything under control, here&amp;#8217;s a usefull &lt;a href="http://maven.apache.org/guides/MavenQuickReferenceCard.pdf"&gt;cheat-sheet&lt;/a&gt; of maven 2.
If you are saying something like &amp;#8220;What&amp;#8217;s maven ?!?&amp;#8221; here&amp;#8217;s an &lt;a href="http://maven.apache.org/"&gt;hint&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Fri, 19 Jan 2007 11:08:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a87b1e10-fe9c-4307-83e1-18e0fafb029a</guid>
      <author>Michele Franzin</author>
      <link>http://www.jugpadova.it/articles/2007/01/19/maven2-quick-reference-card</link>
      <category>Software</category>
      <category>maven2</category>
      <category>mvn</category>
      <category>cheatsheet</category>
      <category>quick</category>
      <category>reference</category>
      <category>card</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/17262</trackback:ping>
    </item>
    <item>
      <title>Un DAO in DUE minuti</title>
      <description>&lt;p&gt;&lt;a href="https://parancoe.dev.java.net"&gt;Parancoe&lt;/a&gt; è un framework Web pensato per scrivere rapidamente applicazioni Web &amp;#8220;di tutti i giorni&amp;#8221;, cioè applicazioni senza requisiti particolari, quelle che nel 90% dei casi viene richiesto di sviluppare. Lo scopo quindi non è avere un framework iper-flessibile, capace di adattarsi a tutti i requisiti possibili, ma un framework che renda &lt;em&gt;molto&lt;/em&gt; semplice la vita al programmatore sviluppando quel particolare tipo di applicazioni.&lt;/p&gt;

&lt;p&gt;Il suo modulo di persistenza segue la stessa filosofia e permette di ottenere in pochi minuti le classi per accedere ai dati (DAO - Data Access Object) dell&amp;#8217;applicazione, memorizzati in un database relazionale.&lt;/p&gt;

&lt;p&gt;Ad esempio, supponiamo di avere una classe persistente &lt;code&gt;Person&lt;/code&gt;, mappata sul DB mediante &lt;a href="http://www.hibernate.org"&gt;Hibernate&lt;/a&gt;. Per ottenere il suo DAO con Parancoe è sufficiente scriverne l&amp;#8217;interfaccia:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;@Dao(entity=Person.class)
public interface PersonDao extends GenericDao&amp;lt;Person, Long&amp;gt; {}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&amp;#8230;e scriverne una semplice configurazione per Spring:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;parancoe&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;dao&lt;/span&gt; &lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;personDao&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="attribute"&gt;interface&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;org.parancoe.example.dao.PersonDao&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Già così avete ottenuto un DAO con i seguenti metodi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Long create(Person newInstance);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Person read(Long id);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void update(Person transientObject);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void delete(Person persistentObject);&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notate che non sono metodi &amp;#8220;generici&amp;#8221;, ma usano il tipo dell&amp;#8217;oggetto persistente, quindi non sono necessari cast.&lt;/p&gt;

&lt;p&gt;Ma si può andare oltre. Supponiamo che abbiate bisogno di un metodo per ottenere la lista delle persone con un determinato nome e cognome. Con &lt;a href="https://parancode.dev.java.net"&gt;Parancoe&lt;/a&gt; è sufficiente modificare l&amp;#8217;interfaccia, aggiungendo tale metodo:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;@Dao(entity=Person.class)
public interface PersonDao extends GenericDao&amp;lt;Person, Long&amp;gt; {
    List&amp;lt;Person&amp;gt; findByFirstNameAndLastName(
        String firstName, String lastName);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Questo è tutto: non è necessario scrivere l&amp;#8217;implementazione di tale metodo, nè modificare la configurazione del DAO.&lt;/p&gt;

&lt;p&gt;Per saperne di più leggete &lt;a href="http://wiki.java.net/bin/view/Projects/ParancoePersistenceTutorial"&gt;questo tutorial&lt;/a&gt; nel &lt;a href="http://wiki.java.net/bin/view/Projects/Parancoe"&gt;wiki&lt;/a&gt; del progetto.&lt;/p&gt;

&lt;p&gt;Se poi volete contribuire, anche solo per dare suggerimenti su come proseguire nello sviluppo, commentate questo articolo e visitate il sito del progetto:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://parancoe.dev.java.net"&gt;http://parancoe.dev.java.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Potete anche iscrivervi alle mailing-list del progetto:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://parancoe.dev.java.net/servlets/ProjectMailingListList"&gt;https://parancoe.dev.java.net/servlets/ProjectMailingListList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aggiornato 28/12/2006:&lt;/em&gt; è cambiato il modo di configurare i bean DAO.&lt;/p&gt;
</description>
      <pubDate>Sat, 09 Dec 2006 06:40:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8d98ed18-32b0-4934-83dc-88850497b5d1</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2006/12/09/un-dao-in-due-minuti</link>
      <category>Software</category>
      <category>Programmazione</category>
      <category>Parancoe</category>
      <category>persistence</category>
      <category>framework</category>
      <category>DAO</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/11508</trackback:ping>
    </item>
    <item>
      <title>JetBrains IntellijIDEA 6.0</title>
      <description>&lt;p&gt;&amp;Egrave; uscito da qualche giorno la versione 6.0 del &amp;#8220;&lt;i&gt;most intelligent Java &lt;span class="caps"&gt;IDE&lt;/span&gt; IntellijIDEA&lt;/i&gt;&amp;#8221;, disponibile ora per il download.&lt;/p&gt;
&lt;p&gt;Coloro che avessero ricevuto la licenza gratuita tramite il nostro &lt;span class="caps"&gt;JUG&lt;/span&gt; (e tutti coloro che hanno acquistato una licenza entro il 12 Luglio 2006) possono utilizzare la stessa chiave per la nuova versione dell&amp;#8217;IDE. La stessa chiave pu&amp;ograve; essere utilizzata per provare un nuovo strumento collaborativo per team di sviluppo, &lt;i&gt;TeamCity&lt;/i&gt; (versione 1.0).&lt;/p&gt;


	&lt;p&gt;Come &lt;span class="caps"&gt;JUG&lt;/span&gt; &lt;b&gt;abbiamo ancora a disposizione delle licenze gratuite&lt;/b&gt; per questi strumenti, se volete saperne di pi&amp;ugrave; contattateci o partecipate ai nostri meetings mensili.&lt;/p&gt;


	&lt;p&gt;Link per IntellijIDEA: 
&lt;a href="http://www.jetbrains.com/idea/index.html?java_"&gt;http://www.jetbrains.com/idea/index.html?java_&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Link per TeamCity:
&lt;a href="http://www.jetbrains.com/teamcity/?java_"&gt;http://www.jetbrains.com/teamcity/?java_&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 07 Oct 2006 09:34:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4c44da7c-c662-4059-a47f-618f1191cb94</guid>
      <author>Dario Santamaria</author>
      <link>http://www.jugpadova.it/articles/2006/10/07/jetbrains-intellijidea-6-0</link>
      <category>Software</category>
      <category>IntellijIDEA</category>
      <category>ide</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/4610</trackback:ping>
    </item>
    <item>
      <title>Google Web Toolkit</title>
      <description>&lt;p&gt;Sembra che finalmente si potrà cambiare la maniera di scrivere le applicazioni Web.&lt;/p&gt;


	&lt;p&gt;Google ha rilasciato, con licenza Apache 2.0, il Google Web Toolkit (GWT) un framework per lo sviluppo di applicazioni Web &lt;span class="caps"&gt;AJAX&lt;/span&gt; &amp;#8220;totalmente in Java&amp;#8221;, cioè senza dover scrivere codice &lt;span class="caps"&gt;HTML&lt;/span&gt; e JavaScript, ma solamente delle classi Java, molto simili a quelle usate in applicazioni Swing, che vengono successivamente tradotte da un apposito compilatore. Viene inoltre fornito un ambiente di esecuzione, che permette di eseguire l&amp;#8217;applicazione in modalità &amp;#8220;host&amp;#8221;, prima di compilarla, anche all&amp;#8217;interno di un ambiente di sviluppo, usando quindi il normale debugger Java, e tutti i tool disponibili per questo linguaggio.&lt;/p&gt;


	&lt;p&gt;Il risultato è assolutamente stupefacente, e diventa alla portata di tutti realizzare applicazioni Web che non hanno nulla da invidiare a quelle desktop. Guardate e provate gli [esempi](http://code.google.com/webtoolkit/documentation/examples/)!&lt;/p&gt;


	&lt;p&gt;Purtroppo, leggendo un po&amp;#8217; meglio, non viene tutto rilasciato con licenza opensource. Il compilatore Java-to-JavaScript e l&amp;#8217; &amp;#8220;hosted web browser&amp;#8221; vengono distribuiti  solo in binario e occorre sottoscrivere un&amp;#8217;apposita licenza, che sostanzialmente vieta di ridistribuirli, di derivarne ulteriori prodotti e di includerli in prodotti commerciali. Inoltre, ogni volta che si usa l&amp;#8217;hosted web browser, verrà contattato un server di Google, per verificare che si sta usando la versione più aggiornata del prodotto. Però il codice e le classi prodotte con tali strumenti sono liberamente distribuibili, anche con scopi commerciali.&lt;/p&gt;


	&lt;p&gt;Maggiori informazioni nel [sito Google Code](http://code.google.com/webtoolkit/).&lt;/p&gt;
</description>
      <pubDate>Thu, 18 May 2006 20:25:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6a6673d7-c663-43e8-a417-78a8ea79a0ea</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2006/05/18/google-web-toolkit</link>
      <category>Software</category>
      <category>google</category>
      <category>web</category>
      <category>ajax</category>
      <category>toolkit</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/372</trackback:ping>
    </item>
    <item>
      <title>findbugs to discover bugs</title>
      <description>&lt;p&gt;&lt;a href="http://findbugs.sourceforge.net/index.html"&gt;&lt;img src="http://findbugs.sourceforge.net/umdFindbugs.png" alt="FindBugs" width="100" border="0" align="left" HSPACE="10" VSPACE="10" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I was investigating about a good tool for profiling when I met with &lt;a href="http://findbugs.sourceforge.net/"&gt;findbugs&lt;/a&gt;.
To be honest I found discussion about this tool in a thread of &lt;a href="http://www.jugmilano.it"&gt;jug milano&lt;/a&gt; mailing list.
&lt;b&gt;findbugs&lt;/b&gt; is a free software  which looks for bugs in Java code.
In order to execute this program is enough you have installed on your machine &lt;a href="http://java.sun.com/products/javawebstart/"&gt;Java Web Start&lt;/a&gt;. Thereby try to click &lt;a href="http://findbugs.sourceforge.net/jnlp/findbugs.jnlp"&gt;here&lt;/a&gt;  , after set parameter of your project (src, jar, etc) and finally push on &amp;#8216;Find Bugs&amp;#8217; button.&lt;br&gt; 
I was amazed at how many bugs it found like comparison of String objects using == or != instead of using &lt;i&gt;equals()&lt;/i&gt; method. &lt;br&gt;
By the way&amp;#8230;I didn&amp;#8217;t generate that code :-)&lt;/p&gt;
</description>
      <pubDate>Wed, 17 May 2006 12:15:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:239d813d-c2fe-43db-b4ff-dcb8d3ef6309</guid>
      <author>Enrico Giurin</author>
      <link>http://www.jugpadova.it/articles/2006/05/17/findbugs-to-discover-bugs</link>
      <category>Software</category>
      <category>bug</category>
      <category>tool</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/369</trackback:ping>
    </item>
  </channel>
</rss>

