Java e Ajax

by Michele

Alcuni rivoluzionari del panorama delle applicazioni web ci hanno fatto conoscere nuovi framework e nuovi approcci nella creazione siti web innovativi. Rails è il progetto, che più di tutti, ha contribuito alla diffusione di queste nuove idee. In Rails, Ajax è integrato, in altri framework no! Quello che in Rails è cablato a livello di codice del framework in altri è una estensione, una libreria, una Servlet che dobbiamo configurare a mano.

Per la prima volta mi sono trovato di fronte alla possibilità di sfruttare l’approccio Ajax in un’applicazione web scritta in Java con l’ausilio di Struts. Anche se Struts non è nato per poter gestire chiamate remote realizzate con funzioni JavaScript, possiamo comunque implementare Ajax nelle nostre applicazioni. Ci sono moltissime librerie che permettono di integrare funzionalità Ajax in Struts. Una di queste è DWR, la più evoluta per quanto riguarda il panorama Java. La filosofia su cui si basa questa libreria è molto simile a quello che fa Jakarta Axis con i Web Services. Creare delle classi Java e JavaScript che facciano da wrapper per le chiamate remote Ajax. In questo modo sarà possibile chiamare dei metodi di istanze di classi Java direttamente dal proprio client. Non dobbiamo preoccuparci di come vengono trasportati i dati ma solo di come utilizzarli per aggiornare l’HTML.

Questo approccio è sicuramente vincente in applicazoni Web che fanno un pesante uso di Ajax e che devono sviluppare delle chiamate ad-hoc. In effetti non stiamo parlando di una serie di componenti riutilizzabili. DWR è un framework, sulle cui basi si possono realizzare, con facilità, chiamate Ajax senza dover scrivere codice che fa il marshal e l’unmarshal dell’XML o di notazioni JSON. Ci sono anche componenti da integrare nelle proprie applicazioni ma maggiore è l’esigenza di personalizzazione e più sono difficili da integrare. In questi casi, DWR o una chiamata semplice realizzata con Prototype sono la migliore soluzione.

Nelle mie prime implementazioni di Ajax ho realizzato tutto il codice JavaScript necessario a mano, in seguito ho scoperto Prototype ed ora non ne posso fare più a meno anche per scrivere codice di ruotine come scorrere un array :-) . Attualmente sto cominciando ad integrare pezzi di Ajax in un’applicazione realizzata con Struts. Si tratta di migliorie che sono nate, in un secondo tempo, dall’esigenza di dover replicare il comportamento usuale delle applicazioni desktop. Le rich web application sono nate solo per migliorare l’esperienza dei navigatori. Con questo concetto bene in mente, sto cercando di modificare il comportamento di alcune parti delle applicazioni per renderle più usabili e più utili. Per ora non so quale sistema sia migliore per essere integrato in Struts lato server. Lato client, la mia scelta è oramai caduta su Prototype, la libreria JavaScript di cui si sentiva veramente il bisogno. Forse la prossima volta si inizierà il progetto con DWR pre-configurato o forse scriveremo qualcosa di custom che vada ad estendere le funzionalità di Struts.