ICEfaces
# ICEfaces

ICEFaces è un framework Ajax opensource che viene utilizzato dai programmatori Java EE per creare ed effettuare il deploy di Rich Internet Application (RIA) usando il linguaggio Java.

ICEFaces sfrutta l'intero ecosistema di tools ed ambienti di esecuzione basati su standard JavaEE. Permette di sviluppare applicazioni RIA con numerose caratteristiche sviluppate in Java senza bisogno di applet o plugin proprietari da integrare nel Browser. Le applicazioni ICEFaces sono applicazioni JSF così che non ci sia bisogno dell'utilizzo di JavaScript, inoltre il meccanismo che sta alla base (Ajax) è completamente trasparente allo sviluppatore.

## Architettura

Il cuore di ICEFaces è formato da tre elementi:

* Il Framework Questo è un'estensione del framework standard JSF con la fondamentale differenza con cui viene tratta la fase di rendering. Diversamente da JSF il rendering avviene nel DOM lato server e solo cambiamenti parziali sono lasciati al browser ed in seguito assemblati con un bridge Ajax molto leggero. Il risultato è un render fluido, effettuato solo su certi elementi della pagina. Ajax utilizza le Api inizializzate dal server ed integra il meccanismo similmente al cycle di JSF.
* Il Bridge Ajax Presenta elementi lato server e lato client che coordinano la comunicazione (basata su Ajax) fra il browser del client e l'applicazione lato server. Il Bridge quindi si occupa di apportare i cambiamenti alla presentazione dalla fase di rendering al browser del client e del riassemblamento di questi cambiamenti nel DOM del browser per applicare i cambiamenti. Inoltre ha il compito di rilevare le interazioni dell'utente con la presentazione e di portare le azioni dell'utente indietro all'applicazione per essere processate dal JSF lifecycle. Un meccanismo chiamato partial submit è integrato nei componenti di ICEFaces e facilita la generazione di eventi attraverso il bridge. La prima volta che la pagina viene caricata viene creato il bridge Ajax e coordina gli aggiornamenti della presentazione e la trasmissione degli eventi dell'utente per tutto il lifetime dell'applicazione.
* La Suite di componenti La suite di componenti fornisce tutti i componenti per la costruzione dell'interfaccia grafica dell'applicazione. Include sia i componenti standard di Jsf e una vasta gamma di componenti che consente allo sviluppatore di costruire applicazioni sofisticate e dall'interfaccia intuitiva. Oltre al meccanismo succitato dell'interazione diretta con il DOM i componenti possono utilizzare un set di effetti come il drag and drop tutto ciò con la semplice modifica di attributi così che non si debba mai ricorrere a JavaScript.
