Archive for the ‘Java’ Category

Jazoon: Italian do it better

giugno 28, 2007

Ecco a voi il mio primo posto direttamente da Jazoon per raccontarvi uno dei più bei complimenti che abbia mai ricevuto in vita mia:

“Sei un informatico? Strano, non sembri uno di loro”

E considerando che è stato fatto da una ragazza svizzera veramente carina direi che dice tutto. Essì gli informatici hanno veramente un brutta fama:)

Eccovi anche una foto di italiani a Jazoon:

 

The Italians!

“THE ITALIANS”

Annunci

Programmazione web con Groovy

febbraio 8, 2007

In questi giorni mi sto attivamente interessando a Groovy per lo sviluppo di applicazioni anche di una certa complessità e magari anche web.

Ho trovato questi tre progetti interessanti che vi segnalo:

(more…)

Un piccolo grande Singleton

febbraio 2, 2007

Il singleton, forse il più semplice dei pattern, ma non è detto che implementarlo sia così semplice e che soprattutto ciò venga ben fatto.  Per i meno esperti ricordiamo che il Singleton è un pattern creazionale di fondamentale importanza ed è stato introdotto dalla GoF. Questo serve a garantire che di un determinato oggetto esisti solo una istanza e che questa abbia un punto di accesso unico.

Recentemente su onjava.com è uscito questo articolo che consiglia la seguente implementazione:

public class Singleton {
private Singleton(){}
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}

contro la classica implementazione:
public class Singleton {
private Singleton(){}
static Singleton instance;
public static synchronized Singleton getInstance() {
if (instance == null) instance = new Singleton();
return instance;
}
}

Viene consigliata questa implementazione perchè a differenza delle altre implementa bene il meccanismo di Lazy Loading (cioè caricare in memoria solo quello che serve e quando serve). Questo avviene perchè l’oggetto non viene istanziato fino a quando non viene chiamato il suo costruttore e venendo questo chiamato all’interno di una inner class static questo avverrà solamente quando verrà chiamato per la prima volta il metodo getInstance() della classe Singleton. Altro motivo è avere una implementazione comunque thread-safe ma che non usi metodi definiti come syncronized perchè molto onerosi dal punto di vista prestazionale e perchè la necessità di avere il metodo syncronized definito come tale è veramente poco frequente.

Un consiglio tabellare :)

febbraio 2, 2007

Gironzolando sul web ho trovato questa ottima taglib denominata DisplayTag, il cui scopo è quello di creare una tabella a partire da un insieme di bean inseriti all’interno di un oggetto che eredita da Collection. Sono possibili diverse opzioni come definire le tabelle da visualizzare, il formato del valore della colonna, definire se una colonna è ordinabile, l’esportazione automatica in XML, Excel, PDF, RTF e CSV, la paginazione etc…

Trovata ed usata questa libreria mi è venuto in mente un sito che contiene una collezione di CSS da utilizzare con tabelle. Quindi utilizzando la taglib per il disegno della tabella in un modo “standard” posso scaricare un qualsiasi foglio di stile dal sito detto in precedenza, associarlo alla mia pagina e ottenere senza fatica diversi effetti interessanti.

Best Practices per Java

novembre 25, 2006

Mio fratello mi ha segnalato questo interessante sito dedicato alle best pratices in java http://www.javapractices.com …sembra molto interessante

Articolo interessante sull’uso delle ENUM in java

novembre 23, 2006

Gironzolando qua e là ho trovato questo post interessante sull’uso delle enumerazioni in java 5.

Buona lettura a tutti 😀

Pushlet: Un modo semplice per un semplice server push

novembre 20, 2006

Chi sta seguendo da vicino l’evoluzione che è nata intorno al web da quando è stato introdotto AJAX avrà forse sentito parlare di COMET. Questa tecnologia è basata sull’HTTP Streaming, metodologia utilizzata solitamente dai plugin multimediale per l’invio in streaming di contenuti audio video. A differenza di una semplice richiesta HTTP la connessione non viene aperta e chiusa ogni volta che avviene, ma viene semplicemente aperta una prima volta per poi essere lasciata sempre aperta in modo da permettere un transito continuo di dati senza dover fare nuove richiesta, in parole povere: ad una sola richiesta corrispondono molteplici risposte. Se per esempio abbiamo un lettore di RSS che si aggiorna in automatico la soluzione che applicheremo solitamente è quella di leggere l’RSS ad intervalli di tempo regolari e controlleremo se è cambiato rispetto alla versione precedente. Questo approccio comporterà molte richieste e risposte inutili con un notevole dispendio di risorse. Non sarebbe meglio se fosse la nostra risorsa risorsa ad avvertire la nostra applicazione quando viene modificata e quindi quando effettivamente deve avvenire l’aggiornamento? Se la vostra risposta è SI allora continuate a leggere l’articolo, se invece avete risposto NO potete anche fermarvi qui.
Vedo che avete scelto SI, quindi torniamo a noi: quanto detto prima è possibile grazie al server push e le Pushlet inventate da un ingegnere olandese sono una semplice soluzione al nostro problema. Altra soluzione molto interessante, ma commercial è data anche da un server push creato da una ditta italiano, ma utilizzato in tutto il mondo, il suo nome è Lightstreamer.

La particolarità delle Pushlet è quella di fare un grosso utilizzo della tecnologia DHTML e AJAX, rendendo praticamente inutile la scrittura di codice java.

Una piccola parentesi sull’installazione:
Per prima cosa è necessario scaricare il progetto da SourceForge. Fatto questo creiamo una semplice web application e copiamo le seguenti definizioni all’interno del file web.xml:

<!– Define the pushlet servlet –>
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!– Define the Servlet Mappings. –>
<!– The pushlet –>
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>

Fatto questo dobbiamo copiare all’interno della cartella contenente i nostri file sorgenti i due file di configurazione con estensione properties che si trovano nella cartella “pushlet-2.0.2\webapps\pushlet\WEB-INF\classes”. Questi file in fase di deploy andranno messi dentro la cartella “WEB-INF\classes” della nostra web application. Come ultimo passo dobbiamo copiare la libreria pushlet.jar presente nella cartella “pushlet-2.0.2\lib” nella cartella WEB-INF\lib della nostra web application. Svolte queste semplici operazioni preliminari siamo finalmente pronti a scrivere un po’ di codice!

Dalla teoria alla pratica:
Tralascio i dettagli tecnici riguardo il loro funzionamento e passo direttamente a una spiegazione molto pratica.

Il loro funzionamento si basa su un semplice principio:

“Io ho un messaggio che può essere modificato e quando questo viene modificato io devo avvertire tutte le risorse che ne sono in attesa”

Quindi il primo passo è definire un nome da dare a questo messaggio, nel nostro esempio sarà “/test”. Scelto il nome definiamo i campi che questo deve contenere, nel nostro caso conterrà solo “text”, ma può contenerere quanti messaggi vogliamo (o almeno quanti ne riusciamo a fare entrare in un array javascript). Nel nostro esempio il campo “text” conterrà la stringa presente in un campo di testo. L’invio della stringa avverrà alla pressione del tasto invia.

Scriviamo quindi la seguente pagina html e salviamola con nome server.html:

<html>
<head>
<script type="text/javascript" src="lib/ajax-pushlet-client.js"></script>
<SCRIPT type="text/javascript">
function send(msg){
p_publish('/test', 'text', msg);
}
</SCRIPT>
</head>
<body onload="p_join('/test');">
<INPUT type="text" id="textField" value="test"/>
<INPUT type="button" onclick="send(document.getElementById('textField').value);" id="invia" value="invia" />
</body>
</html>

Creaiamo ora il file client.html con il seguente codice al suo interno:
<html>
<head>
<script type="text/javascript" src="lib/ajax-pushlet-client.js"></script>
<SCRIPT type="text/javascript">
function onData(event) {
var text = event.get('text');
document.getElementById("textField").value = text;
}
</SCRIPT>
</head>
<body onload="p_join_listen('/test');">
<INPUT type="text" id="textField" />
</body>
</html>

Creati i due file copiamoli dentro la cartella root del nostro progetto, e colleghiamoci a http://localhost:XXXX/nomeProgetto/server.html e http://localhost:XXXX/nomeProgetto/client.html.

Scrivendo un testo all’interno di serverl.html e premento il tasto “invia” la textbox presente in client.html verrà “magicamente” aggiornata.

Conclusioni:
Le pushlet sono ancora in evoluzione e ad oggi presentano ancora qualche piccolo difetto, ma il suo realizzatore insieme alla comunità OpenSource sta lavorando assiduamente per realizzare un sistema sempre più affidabile.
Attualmente questo sistema è in utilizzo presso diverse applicazioni commerciali citate dallo stesso autore sul sito del progetto. Inoltre sul sito del progetto e nell’archivio che avete scaricato trovate molti esempi da studiare.

Spero di aver stuzzicato la vostra curiosità su questo argomento senza dubbio molto interessante e di cui, a mio parere, sentiremo parlare nel tempo che verrà.

Chi desidera scaricare l’esempio qui descritto può cliccare qui.

Grazie per l’attenzione.

JavaDay 2006 Roma

novembre 20, 2006

Gente sincronizzate gli orologi a Roma il 2/12 ci sarà un JavaDay che si preannuncia molto interessante. Io mi sono già iscritto alla parallela JavaArchitect che seguirò con grande interesse. Chi è di Torino ed è interessato a venire può contattarmi in modo da poter fare il viaggio di ritorno insieme, non dico quello di andata perchè io sarò a Roma probabilmente anche il primo di dicembre.

 

Iscrivetevi gente, inscrivetevi…

Javaday di Novara

novembre 18, 2006

Eccomi di ritorno dal Javaday di Novara. Come sempre la manifestazione si è dimostrato veramente interessante ed è stato veramente molto piacevole incontrare i ragazzi di Java Italian Portal venuti direttamente da Roma e che da un po’ non vedevo e conoscere Fabrizio Gianneschi del JUG di Sardegna e Matteo Baccan (che ringrazio per il passaggio in auto fino a Torino).

In questo JavaDay ho preso l’impegno di collaborare col progetto JugAvis e spero di iniziare a farlo fin da subito (mentre scrivo questo post sto scaricando il sorgente del progetto).

Sfortunatamente sono arrivato tardi e la sessione mattutina è passata un po’ così (anche perchè nn ero molto reattivo a causa delle sole 3 ore e mezza di sonno della notte prima), ma la sessione pomeridiana mi è molto piaciuta dove ho potuto riascoltare l’interessante intervento su JavaEE 5 di  Diotalevi, una presentazione di una architettura basata su Enterprise Service Bus e Ajax fatta da Nino Guarnacci  ed una presentazione su ULC un programma di una ditta svizzera chiamata Canoo che ha presentato una soluzione presente (se non erro dal 1999) per creare RIA utilizzando unicamente Java.

Questo è tutto gente

JWebUnit

novembre 15, 2006

Dopo la lettura di questo post sul blog di Enri non ho saputo resistere alla tentazione di scaricare e provare JWebUnit. Come potete facilmente intuire dal nome altrò non è che uno strumento per lo unit test delle applicazioni web. Sarà infatti possibile creare dei test che eseguiranno dei veri e propri percorsi di navigazione all’interno delle nostre pagine web e verificare che i risultati ottenuti siano corretti. Seguendo il quickstart presente sul sito di JWebUnit ho creato dei piccoli test di prova e credo che lo userò per la parte di applicativo che sto sviluppando attualmente perchè credo mi possa far risparmiare non poco tempo…a giorni avrete anche un giudizio più realistico del come si comporta sul campo questo strumento.