Blog2j
 
Cerca con Google
Ricerca personalizzata
 
Factory complesse con spring
In un precedente post abbiamo visto una prima introduzione a spring in cui si utilizza questo framework per implementare una semplice factory. Vediamo adesso come sia possibile utilizzare spring anche per creare factory più complesse, in particolare factory che ritornano una implementazione di una interfaccia in base ai parametri passati a un metodo.
Android vs iPhone os
In questi giorni dopo tanto parlare è uscito il cellulare htc G1, il primo su cui gira Android, il sistema operativo per dispositivi mobili sviluppato da Google. Android è basato su un kernel linux ma tramite l'sdk distribuito da Google è possibile sviluppare in java applicazioni per questo sistema operativo. Da sviluppatore java non potevo non dare un'occhiata a questo sdk per capire meglio le potenzialità di Android, da possessore di ipod touch non potevo non fare un confronto fra questo nuovo sistema operativo e quello presente su ipod touch e su iphone.
Validazione client con jquery
Dopo aver visto come aggiungere una validazione javascript ad una form esistente utilizzando extjs vediamo adesso come eseguire la stessa operazione usando jquery, un framework javascript molto semplice ma anche molto potente. In particolare sfrutteremo alcune funzionalità base di jquery di selezione/manipolazione del dom della pagina ed alcuni plugin. In questo post vedremo che jquery è il framework ideale da usare quando si vuole aggiungere funzionalità ai vari elementi di una pagina in base alle classi css associate.
Joshua Bloch - Effective java Second Edition
Effective java Second Edition è un ottimo libro scritto da Joshua Bloch, rispetto alla prima edizione è stata aggiunta una ampia parte relativa alle features introdotte in java 1.5. Il libro è diviso in item, ogni item può essere letta indipendentemente dalle altre anche se ci sono molti riferimenti incrociati. Questo libro dà per scontata una buona conoscenza di java e quindi è destinato a chi ha già un po' di esperienza nello sviluppo in java.
Extjs vs jquery

Da quando extJs ha cambiato licenza ho iniziato a guardarmi intorno per trovare un framework javascript alternativo. Una valida alternativa è sicuramente jquery, un framework javascript open source (ma utilizzabile anche in applicazioni commerciali grazie alla doppia licenza mit e gpl) molto semplice ma anche molto potente. Infatti mentre extjs mette a disposizione una serie completa di componenti per poter creare una rich internet application jquery permette solamente di eseguire facilmente manipolazione del dom della pagina, chiamate ajax e altre operazioni tipiche del javascript. Quindi più che un framework completo jquery può essere visto come una base su cui costruire cose più complesse. Per fortuna già molta gente ha costruito librerie di componenti riusabili sfruttando come base jquery, una lunga lista di queste librerie (in gergo chiamati plugin) è disponibile qui.

Gestione di una web app con eclipse e maven

Maven è uno strumento che permette di organizzare la propria applicazione in modo standard sfruttando pattern conosciuti. In pratica può essere usato al posto di Ant per compilare, creare un pacchetto jar o war ed effettuare il deploy di un'applicazione, ma anche per fare molte altre cose. Usando Maven abbiamo molti vantaggi:

  • standardizzazione della struttura di un progetto sfruttando pattern ormai consolidati, per esempio i sorgenti delle classi, dei test e dei file di properties sono nello stesso progetto ma in directory diverse
  • compilazione, test e esportazione automatizzate
  • gestione e download automatico dei jar delle varie librerie necessarie allo sviluppo
  • creazione in automatico di un semplice sito di gestione contenente informazioni sul progetto e vari report

Maven ha una architettura modulare e può essere esteso facilmente con dei plugin. In questo breve howto vedremo come creare una applicazione web all'interno di Eclipse, già presente sulla nostra macchina, nella versione con WTP. Il codice sorgente dell'esempio mostrato è disponibile qui, per importarlo all'interno di Eclipse è necessario scompattare il file all'interno del workspace e eseguire il comando Import -> Maven Projects.

Griglia Extjs con paginazione, ordinamento e parametri di ricerca

In questo post vediamo come usare una grid di extjs per creare una pagina html che mostra una lista di dati paginati, ordinabili e filtrabili in base a dei criteri di ricerca. La tabella di dati viene popolata con chiamate ajax verso il server sfruttando dwr (vedi il precedente tutorial per i dettagli sull'utilizzo di dwr con spring). La parte di vista è composta da una pagina html quindi gran parte del codice mostrato può essere usato anche in progetti non java (per esempio php o python). I sorgenti dell'esempio sono disponibili qui, lo zip contiene un dynamic web project di eclipse in cui devono essere aggiunti i jar di spring, dwr e commons-logging.

Chiamate ajax verso bean di Spring con Dwr

Dopo aver visto come gestire gli oggetti di business di una applicazione con spring vediamo adesso come richiamare da codice javascript un metodo di uno di questi oggetti. Per ottenere questo risultato usiamo dwr, un framework java che crea dinamicamente oggetti javascript che permettono di interagire con oggetti java tramite chiamate ajax.

I sorgenti dell'esempio sono disponibili qui, lo zip contiene un dynamic web project di eclipse in cui devono essere aggiunti i jar di spring, dwr e commons-logging.

Creare una factory con spring

In questo tutorial vedremo vari modi di come organizzare le classi di business di una applicazione. Partendo da un semplice esempio rappresentato da un metodo che accede a un db ed esegue una elaborazione sui dati vedremo come applicare alcuni pattern per migliorare il design del codice. Infine vedremo come eliminare la factory introdotta sostituendola con spring. Il codice sorgente dell'esempio è disponibile qui, per funzionare ha bisogno delle librerie spring.jar e spring-test.jar (disponibili nel sito ufficiale) e di commons-logging.jar.

Gallerie di immagini con lightbox

Lightbox è un ottimo esempio di javascript non intrusivo, permette di trasformare in un attimo una pagina web con una serie di immagini in una galleria di immagini in stile web 2.0. In pratica è uno script javascript che cerca tutti i link a immagini all'interno di una pagina che contengono l'attributo rel="lightbox" e ci aggiunge una chiamata javaascript che mostra l'immagine in un popup. Il sito di Lightbox contiene un esempio dettagliato di come installarlo e configurarlo.

Un altro progetto simile (anche nel nome) è jquery lightbox plugin, il funzionamento è molto simile a quello di lightbox ma è un po' più leggero in termini di kb in quanto si basa su jquery e non su prototype.

Con la scusa di mostrare un esempio di utilizzo di lightbox eccovi un po' di foto del viaggio fatto a Maggio a New York:

Sviluppo in javascript con eclipse Ganymede

Manca poco all'uscita di Eclipse Ganymede, programmata per il 25 giugno. Come le precedenti release Callisto e Europa anche Ganymede comprenderà sia la nuova versione di Eclipse che le nuove versioni dei principali plugin. Le novità introdotte non stravolgono lo sviluppo in java ma Ganymede rappresenta un notevole passo avanti nel supporto javascript, vediamo perchè.

Nuovo sito

Blog2j si rinnova! Le differenze sono evidenti, questa nuova veste grafica è molto po' più classica anche se sfrutta sempre extJs. La vecchia versione del sito è sempre online. Blog2j è adesso un esempio di utilizzo di javascript non intrusivo, le funzionalità del sito sono disponibili anche con un browser con javascript disabilitato. L'uso di javascript migliora le prestazioni (ci sono chiamate ajax per non ricaricare sempre l'intera pagina) e aggiunge un po' di dinamicità al sito.

Oltre al cambo di grafica c'è stato anche un cambio di hosting, adesso blog2j è una applicazione web sviluppata con Google App Engine, blog2j gira sugli stessi server che ospitano GMail e le altre applicazioni di Google!

Google App Engine è un progetto che permette di sfruttare l'infrastruttura di Google per creare web application, permette di scrivere facilmente applicazioni scalabili. Ovviamente non ho scelto di usare Google App Engine perchè blog2j ha lo stesso traffico di GMail ma per altre caratteristiche interessanti. Eccone alcune:

  • installazione semplificata (e senza bisogno di configurazione) del server web e del dbms: dopo aver scaricato e scompattato uno zip in cinque minuti si ha un server funzionante
  • deploy sui server di Google con un comando con la possibilità di switch veloce per tornare a una qualsiasi versione
  • uso dello stesso framework usato dalle applicazioni di Google per gestire i dati: semplice da usare ma un po' diverso rispetto a un normale database relazionale
  • possibilità di usare il db degli utenti di Google: un utente può usare il proprio account di google per loggarsi in un sito sviluppato con Google App Engine
Comandi e shortcut di Eclipse

In questo post cercherò di elencare comandi, shortcut e accorgimenti vari da usare su Eclipse per sfruttarlo al meglio e migliorare la propria produttività.

La shortcut più utilizzata all'interno di Eclipse è sicuramente Ctrl+spazio, permette di richiamare l'autocompletamento di nomi di classi, di metodi o di variabili. Nel caso di definizione di una nuova variabile premendo Ctrl+spazio viene suggerito un nome da usare in base al tipo. Usandolo dentro una classe ma fuori da un metodo mostra una lista dei metodi definiti in una superclasse permettendo di sovrascriverli.

ExtJs cambia licenza

ExtJs ha cambiato licenza passando da lgpl a gpl al momento del rilascio della versione 2.1. Il cambiamento non è da poco in quanto i tanti progetti commerciali che lo usavano non possono usare la nuova versione in quanto la licenza gpl non lo consente.

Il team di sviluppo ha giustificato la decisione dicendo che così può essere utilizzato in tutti i progegrtti open source, anche quelli rilasciati in licenza gpl. A mio avviso l'intento evidente è quello di guadagnare due soldi con le licenze commerciali, infatti vendevano e vendono tutt'ora la licenza a pagamento che permette di utilizzare il framework ovunque. Ma allora perchè non cominciare subito distribuendo il software con la licenza gpl? Semplice, tanta gente (me compreso, non lo uso solo per questo blog) si è avvicinata a extJs per usarlo in progettti commerciali e così si è creata una community attivissima. Senza questa community extJs non sarebbe quello che è adesso, basta pensare non tanto alle estensioni create ma a tutti i bug report fatti dagli utenti.

Ma quale sarà il futuro di extJs e che faranno gli utenti attuali? Le strade possibili sono molte, io per adesso continuo ad usare la versione 2.0.2 ma tengo d'occhio openExt, il fork lgpl nato pochi giorni dopo il cambio di licenza. La licenza non costa proprio poco (anche se extJs è fatto benissimo e probabilmente vale questi soldi) e sinceramente questo cambio di licenza ha lasciato perplesso me e tanta altra gente che ha inondato di messaggi il forum di extJs.

Gestione dei javascript e dei css in una web app con jawr

Jawr è una libreria open source che permette di gestire in modo inteligente i file javascript e css usati all'interno di una web app java. In pratica fa quello che molti sviluppatori fanno con un task di ant: permette di creare bundle (ovvero insiemi di file) da utilizare all'interno di una pagina web. Mette a disposizione una tag library jsp per referenziare all'interno di una pagina direttamente il bundle e non i singoli file js o css. In base a delle impostazioni specificate in un file di properties è possibile riunire più file in uno solo, minimizzare i file javascript e addirittura comprimerli con gzip. I principali vantaggi nell'utilizzo di jawr sono:

  • minor peso delle pagine dovuto alla minimizzazione e compressione dei dati
  • minor numero di richieste da effettuare verso il server in quanto più file vengono raggruppati in un unico bundle
  • controllo della cache del browser: jawr inserisce in automatico un parametro dell'url dei file in modo da non avere problemi di cache del browser. Tale parametro dipende, dalla versione 2.0 di jawr, da un codice hash generato a partire dal file
Gestione di una web app con eclipse e maven [old]

Una versione aggiornata di questo articolo è disponibile qui.

Maven è uno strumento che permette di organizzare la propria applicazione in modo standard sfruttando pattern conosciuti. In pratica può essere usato al posto di ant per compilare, creare un pacchetto jar o war ed effettuare il deploy di un'applicazione ma anche per fare molte altre cose. I vantaggi ad usare Maven sono molti:

  • standardizzazione della struttura di un progetto sfruttando pattern ormai consolidati
  • compilazione, test e esportazione automatizzate
  • gestione e download automatico dei jar delle varie librerie necessarie allo sviluppo
  • creazione in automatico di un semplice sito di gestione del progetto contenente informazioni sul progetto e vari report

Maven ha una architettura modulare e può essere esteso facilmente con dei plugin. In questo breve tutorial vedremo come creare una applicazione web all'interno di Eclipse (nella versione con WTP) sfruttando maven.

Tutorial javascript

Dopo anni in cui javascript era considerato (almeno da me!) più che un linguaggio di programmazione un giocattolino con l'avvento di ajax javascript è diventato fondamentale per costruire siti interattivi. In questo tutorial vedremo come entrare nel mondo javascript (avendo comunque un background di programmazione) per poterlo usare in modo strutturato (anche object oriented) e per avere una base per utilizzare i vari framework tipo extJs, dojo, jquery, prototype e scriptaculous. Scopriremo che javascript non è un java in miniatura utilizzabile in una pagina html (sono l'unico che era convinto di questo?). Per provare i vari esempi di questo tutorial è consigliata l'installazione del plugin di firefox firebug che, oltre a un debugger javascript e a tante altre funzionalità utlissime, mette a disposizione una shell interattiva in cui è possibile eseguire codice javascript.

Validazione client con extJs

ExtJs (o qualunque altra libreria javascript) può essere usata in due modi diversi:

  • usando poco codice html (per esempio un solo div) e aggiungendo i vari componenti direttamente in javascript
  • in modo non intrusivo, ovvero definendo una normale pagina html e trasformando i vari componenti presenti nella pagina (campi di testo, combo, ...) in componenti ext

Il primo approccio è quello utilizzato solitamente in extJs, in questo tutorial vedremo invece un esempio di utilizzo non intrusivo di extJs per aggiungere la validazione lato client ad una form esistente.

Stranezza dell'autoboxing java

Una delle nuove features introdotte dalla sun nella versione 1.5 di java è l'autoboxing. In pratica la conversione fra tipo nativo (int, float, ...) e oggetto wrapper (Integer, Float, ...) avviene in automatico. Sembra tutto molto bello ma c'è da stare attenti a un po' di cose strane.

Introduzione a groovy

Groovy è un linguaggio di programmazione di nuova concezione che può essere considerato una valida alternativa a java per diversi motivi:

  • usa una sintassi molto simile a quella java ma con alcuni costrutti ispirtati a python e ruby che ne semplificano l'utlizzo e che rendono il codice più facile da leggere e da mantenere
  • è un linguaggio dinamico ma può essere utilizzato anche con oggetti tipizzati
  • è basato sul jdk java, tutti le classi utilizzabili in java sono disponibili anche in Groovy
  • il compilatore produce file .class compatibili con quelli generati dal compilatore java, per questo motivo nello stesso progetto possono coesistere (e interagire fra di loro) classi java e classi Groovy

Uno sviluppatore java si troverà subito a suo agio con Groovy e soprattutto non dovrà riiniziare da zero potendo usare una sintassi familiare, le stesse classi di base del linguaggio e perfino lo stesso ambiente di sviluppo.

Groovy nasce da una idea di James Strachan che per la prima volta ne parlò nel suo blog nell'agosto del 2003. L'idea è poi diventata un jsr e nel giro di alcuni anni sono state rilasciate varie versioni. Il 2 gennaio 2007 è stata rilasciata la versione 1.0, il 9 dicembre 2007 la versione 1.5.

In questo tutorial vedremo come aggiungere ad un progetto java esistente alcune classi scritte in Groovy.

Hello world!

Hello world! Chi vi parla è uno sviluppatore/progettista/qualcos'altro (1) specializzato nel mondo java. In questo blog cercherò di parlare del mondo java sia da un punto di vista pratico (quello che serve nella vita di tutti i giorni) che da un punto di vista un più letterario cercando di non essere troppo noioso. Per mondo java intendo anche javascript, Groovy e tutte le svariate librerie utilizzate nello sviluppo, con un particolare riguardo per Spring e per quelle utili nello sviluppo di web application.
Visto che si parla di java (e di web 2.0) questo blog non poteva che essere un sito in stile web 2.0. Così è nata l'idea di sviluppare un blog un po' diverso da un blog tradizionale basato sull'ottima lbreria javascript extJs. Il risultato è quello che potete vedere, per adesso le funzionalità implementate non sono molte ma presto nel menù start compariranno nuove voci.

(1) non saprei bene come definirmi, ho rifatto la carta d'identità da poco e non sapevo che scriverci alla voce professione...

 
News