Open Source: XDoclet2 e Tapestry
8 luglio 2007Archeometra abbraccia l’open source nel suo significato più intimo. Stop all’utilizzo indiscriminato di software free scritto da altri. Si comincia a contribuire.
Il tema della generazione automatica del codice è caro a molti sviluppatori. Sempre più spesso ci troviamo a gestire ripetitivamente file di configurazione e sorgenti per ovviare a chiare carenze espressive dei linguaggi di programmazione. Da poco è stato risolto i problema dei metadati nel linguaggio Java con l’introduzione delle Annotations (Jdk5). Attraverso tali metadati è possibile esprimere una serie di aspetti del software che non possono essere espressi tramite le parole chiave del linguaggio base. Possiamo dichiarare che un oggetto deve essere reso persistente su DB, che un metodo deve essere eseguito all’interno di una transazione, ecc.
Il problema ovviamente è più vecchio della soluzione… per questo ben prima dell’introduzione delle Annotations da parte di Sun sono nati progetti Open Source che puntano a colmare tale lacuna.
Il più famoso generatore di codice per java è sicuramente XDoclet, in procinto di essere sostituito dal degno successore XDoclet2. Cosa rende interessante un generatore di codice di questo tipo? Elemento fondamentale è il numero di ambiti in cui può essere applicato. Dato per scontato che software di questo tipo sono utili solo nei contesti in cui il codice deve essere ‘condito’ da metadati, la loro bontà può essere misurata in maniera proporzionale al numero di ‘classi di metadati’ supportate. Nel campo reale una ‘classe di metadati’ può corrispondere ad una serie di aspetti relativi all’utilizzo di una libreria o tecnologia (persistenza dei dati, transazionalità, ecc..). XDoclet comprende una serie di plugin per la generazione automatica ad esempio delle ejb home e remote interface, dei descrittori di persistenza per JDO e Hibernate, dei file di configurazione di componenti web quali Portlet e Servlet.
Archeometra per alcune tipologie di progetti web utilizza l’ottimo framework web Tapestry. Tapestry di per sè rappresenta un grosso passo in avanti nella semplificazione dello sviluppo web in Java. Una serie consistente di componenti builtin e l’integrazione con i più moderni lightweight containes (Hivemind, Spring) lo pongono al top per quello che riguarda la produttività e la manutenibilità del codice. Tapestry però ha bisogno di alcuni file di configurazione all’interno dei quali specificare le interazioni tra i template html e gli oggetti applicativi. Analizzando tali interazioni ci si rende conto che sostanzialmente esprimono aspetti che sono logicamente ‘vicini’ e correlati al codice stesso dei nostri component.
Il passo che Archeometra ha fatto verso un’ulteriore aumento della produttività è stato quello di scrivere un plugin XDoclet2 per la generazione automatica della configurazione di Tapestry. Le pagine tapestry vengono ora annotate con speciali tags javadoc, riducendo la complessità, eliminando ripetizioni di codice e aumentando la leggibilità dell’applicazione. Al momento del building dell’applicazione i tag javadoc vengono trasformati nelle classi e file di configurazione necessari perchè Tapestry funzioni correttamente.
La diffusione di tool di building sempre più efficaci quali Ant e Maven permette di integrare facilmente questa trasformazione nel processo di building, continuos integration e rilascio del software. Potete scaricare il plugin in formato sorgente o binario dal sito ufficiale http://xdoclet.codehaus.org.
Riferimenti:
- Generama, un framework generico per la generazione di files: http://xdoclet.sourceforge.net/generama
- Tapestry web framework: http://jakarta.apache.org/tapestry
- Maven, tool per l’automazione dei processi di building: http://maven.apache.org
