Visualizzazione post con etichetta echo2. Mostra tutti i post
Visualizzazione post con etichetta echo2. Mostra tutti i post

giovedì 31 luglio 2008

Echo2, aka "Swing su web"

Nel progetto a cui sto lavorando, oltre a Castor per il marshaling/unmarshaling dell'xml (di cui ho già parlato qui), si usa Echo2 per la GUI.

In maniera concettualmente simile a quello che fa Google web toolkit, Echo2 funziona che si scrive in Java e lui, in maniera completamente invisibile a noi programmatori, produce il codice HTML + Javascript + AJAX; a differenza di GWT, però, Echo2 produce il codice "al volo" in una servlet anzichè essere compilato "a bocce ferme"...non che faccia sta differenza abissale comunque, visto anche che GWT può essere eseguito in hosted mode che funziona circa come Echo2 ma con un browser apposito.

Ad ogni modo, la figata di Echo2 è che quasi tutte le classi dei componenti si chiamano esattamente come quelle di Swing, per cui del codice come questo:
Button update = new Button("Update");
update.setToolTipText("Update");
update.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doUpdate();
}
});
Valido in Swing, è perfettamente valido anche in Echo2, a patto ovviamente di importare le classi dai package giusti.

Come in Swing, ci sono praticamente tutti i componenti GUI più comuni (e alcuni di quelli meno utili ma presenti in quasi ogni framework, tipo l'AccordionPane) e tutti hanno performances assolutamente ottime, il che è una cosa positiva visto che il pannellino di "please wait" che compare quando una richiesta AJAX ci mette troppo tempo a ricevere risposta è aberrante e neppure troppo semplice nè flessibile da customizzare.

Di fatto, quindi, Echo2 consente di realizzare applicazioni web con interfaccia grafica molto, ma proprio molto simile a quella delle applicazioni desktop, mascherando praticamente tutti gli sbattimenti della programmazione web tipo:
  • Casini dovuti alla discordia tra i browser web e Internet Explorer
  • Casini dovuti alla difficoltà di implementare in HTML + Javascript comportamenti standard delle GUI desktop, tipo il drag & drop
  • Casini per noi sviluppatori Java alle prese con un linguaggio spesso criptico come Javascript
Oltre a tutto ciò, ha anche una serie di cazzimmine carine pensate proprio per le applicazioni web, tipo il meccanismo di server push, che è fondamentalmente una richiesta AJAX nascosta che continua a interrogare il server, dando all'utente l'impressione che sia il server ad aggiornargli il client spontaneamente anzichè su richiesta come previsto dall'HTTP, o tipo la gestione integrata del download di file sul client.

Per chi volesse lucidarsi un po' gli occhi, qui c'è la demo che fa vedere un po' tutto quello che si può fare e, ora che ci lavoro da qualche mese, mi sento in grado di dire che non è neanche esageratamente incasinata ma anzi è roba che si può rifare in pochissimo tempo.

Unico difetto non di poco conto, essendo un framework di nicchia la documentazione non è nè molta nè esaustiva (in pratica c'è solo il support forum sul sito ufficiale) e la situazione non è destinata a migliorare, visto che Echo3 è già in beta e consente di sviluppare anche direttamente in Javascript mantenendo la stessa API del Java lato server, per cui c'è il rischio che all'uscita della nuova versione la community di sviluppatori si concentri sulla parte client-only e trascuri quella Java; tuttavia, lo scope del framework è abbastanza ristretto, dato che si limita alla GUI, per cui anche lo scope di possibili problemi è piuttosto limitato.

martedì 1 luglio 2008

Nuove sfide

Visto che ormai i giochi son fatti, posso dichiararlo anche qui, pubblicamente: il primo vero botto del mercato estivo sono io.

Dal mese di luglio che inizia proprio oggi, infatti, ho ufficialmente cambiato lavoro.

Guadagno (ovviamente) di più, ma come sottolinea il mio test della personalità descritto qui, quello che veramente mi importa è che sia un lavoro divertente: visto che sono qui da pochissimo, si tratta solo di prime impressioni, ma non mi pare poi così male.

Fondamentalmente, si tratta di un progettino relativamente piccolo (è in consegna il 15 di settembre) per un cliente abbastanza grosso, di cui non farò il nome, con backend in EJB+Hibernate e frontend web-based in Echo2.

Hibernate lo conoscevo già e gli EJB per ora non li ho nemmeno incrociati, mentre il primo impatto con Echo2 è stato veramente ottimo...fondamentalmente, è un framework per la generazione delle GUI in HTML/CSS/Javascript/Ajax che si programma esattamente come Swing, visto che il grosso delle classi hanno anche lo stesso nome di quelle di Swing.

Tutti i dettagli webbici della GUI, quindi - gli sbattimenti di differenze tra Explorer e i browser seri, tanto per dirne uno - sono nascosti al fortunato programmatore, che, molto a spanne e in un mondo ideale, scrive circa lo stesso codice che scriverebbe per la GUI di un client desktop stand-alone, con tanto di paradigma ad eventi per tutti gli input.

Non ci ho mai giocato, ma credo che la filosofia di Google Web Toolkit sia molto simile, e siccome della grande G mi fido credo che questa di mascherare i dettagli dell'HTML sia un'ottima strada in prospettiva futura, visto che consente ai Javisti di scrivere solo Java e di non doversi preoccupare di tutte le noie delle GUI web.

Per ora ci ho fatto solo una paginettina e magari mettendoci mano più a fondo scopro che è veramente una merda e rimpiango i tempi in cui avevo il controllo dell'HTML, ma per ora non dovermi sbattere a debuggare il javascript con Firebug o non dover fare i test con 200 browser ed Explorer (che non è un browser, ricordiamolo) mi riempie il cuore di gioia :)