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.
Ciao, Fabio
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.
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.
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.
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.
Cosa succede se, ad esempio, il GestoreClassifica per qualche motivo ha bisogno di un DAO piuttosto di un altro "a runtime", secondo qualche regola di business?
Di solito per i DAO non è così, infatti l'esempio è ben congeniato, ma più che spesso capita di dover iniettare un oggetto piuttosto che un altro in base alla situazione.
Possibile che Spring, il più noto framework per l'IoC non possegga un soluzione del tipo "se condizione allora inietta questo oggetto altrimenti inietta quest'altro"?
Non sarebbe una possibilità grandiosa? per Spring sarebbe una una cosa banalissima supportarla eppure apparentemente non è così!
sare i felice se qualcuno potesse aiutarmi a compredere la cosa.
Mauro Doria
Ci penso un po' e provo a buttar giù un post sull'argomento che mi sembra molto interessante
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:
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è.
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
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 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.
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
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.
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.
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.
questo รจ davvero utile :D
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.
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! 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...
English version