JavaServer Faces
Java Server Faces software | |
---|---|
![]() | |
Genere | Framework per applicazioni web |
Sviluppatore | Oracle |
Ultima versione | 2.3.0 (28 marzo 2017) |
Sistema operativo | Multipiattaforma |
Linguaggio | Java |
Licenza | Eclipse Public License 2.0 e GPL linking exception (licenza libera) |
Sito web | javaserverfaces.github.io/ |
JavaServer Faces (JSF) è una tecnologia Java, basata sul design pattern architetturale Model-View-Controller (MVC), il cui scopo è quello di semplificare lo sviluppo dell'interfaccia utente (UI) di una applicazione Web; può quindi essere considerata un framework per componenti lato server di interfaccia utente.
È descritta da un documento di specifiche (JSR 372[1]) alla cui stesura hanno partecipato i membri del Java Community Process. È interessante osservare che uno dei principali artefici di questa tecnologia è stato Craig R. McClanahan, allora dipendente di Sun Microsystems e creatore del popolare framework Struts. Di JavaServer Faces esistono alcune implementazioni: oltre a quella di Oracle, detta Mojarra JavaServer Faces[2], esistono PrimeFaces, BootsFaces[3], Icefaces e RichFaces[4].
Cenni alla struttura
Un applicativo Java Server Faces è composto da:
- FacesServlet è la servlet principale del framework;
- faces-config.xml è il file di configurazione;
- pagine e componenti: è possibile usare questo framework con diversi Page Declaration Language (detti anche View Declaration Language), ma i Facelets sono quelli raccomandati a partire dalla versione 2.0 di JSF;
- presentatori: si occupano di visualizzare agli utenti un componente e traducono i dati immessi dagli utenti in valori dei componenti;
- convertitori: hanno il compito di convertire i valori dei componenti (che possono essere diversi tipi di dati: date, numeri, booleani, eccetera) da e verso le stringhe che verranno visualizzate;
- validatori: si accertano che i valori immessi dagli utenti siano validi;
- backing beans e navigazione: per backing bean si intende una classe Java che ha delle annotation che la rendono visibile ed utilizzabile all'interno del framework JSF. Tali classi contengono anche la logica operativa e gestiscono il flusso di navigazione da una pagina all'altra;
- supporto per AJAX: a partire dalla versione 2.2 di JSF, c'è un supporto integrato per le chiamate AJAX;
- linguaggio per le espressioni: tale linguaggio viene usato all'interno delle pagine JSF per agganciare le variabili e le azioni tra le pagine ed i backing bean.
Critiche
Nel Technology Radar del gennaio 2014, ThoughtWorks ha scritto[5]:
Teams seem to choose JSF because it is a J2EE standard without really evaluating whether the programming model suits them. We think JSF is flawed because it tries to abstract away HTML, CSS and HTTP, exactly the reverse of what modern web frameworks do. JSF , like ASP.NET webforms, attempts to create statefulness on top of the stateless protocol HTTP and ends up causing a whole host of problems involving shared server-side state. We are aware of the improvements in JSF 2.0, but think the model is fundamentally broken. We recommend teams use simple frameworks and embrace and understand web technologies including HTTP, HTML and CSS.»
In pratica, ThoughtWorks consiglia di evitare questa tecnologia, in quanto cerca di astrarre su cose (HTML, CSS ed HTTP) sui cui non è il caso di astrarre e che gli altri framework non astraggono.
Note
- ^ JSR 372: JavaServer Faces (JSF 2.3) Specification.
- ^ Mojarra JavaServer Faces
- ^ BootsFaces
- ^ RichFaces
- ^ January 2014 Technology Radar (PDF), su thoughtworks.fileburst.com. URL consultato il 30 gennaio 2014.
Voci correlate
Altri progetti
Wikimedia Commons contiene immagini o altri file su Java Server Faces
Collegamenti esterni
- Sito ufficiale, su oracle.com.
- JSR 127.
- Implementazione di Apache, su myfaces.apache.org.
- Implementazione di Sun, su javaserverfaces.dev.java.net.
- Implementazione di Oracle, su oracle.com.
- Suite di componenti jsf basati su jQuery, su code.google.com.
- Generatore Applicazioni Web basate su Seam, EJB3, JSF, su seamwebappgen.sourceforge.net.
- Comparativa delle principali implementazioni JSF, su appuntisoftware.it.
Controllo di autorità | GND (DE) 4780730-1 |
---|