|
Introduzione
Per intenderci, ora MyFaces appare al fianco di
progetti blasonati e probabilmente molto più
noti, come l'HTTP server, Geronimo, Jakarta, Struts,
Web Services o XML. Questa mossa sicuramente porterà
più luce sul progetto, con una conseguente
promozione verso gli sviluppatori.
MyFaces è una implementazione delle specifiche
JavaServer Faces (JSF), ma cosa trattan questo
standard di SUN Microsystems?
JSF è in sostanza un framework di sviluppo
che ha lo scopo di fornire al programmatore degli
elementi visuali utili a costruire interfacce
utente Web. Come Swing ed AWT per le applicazioni
standalone, le applet ed i JavaBean, allo stesso
modo i componenti JSF implementano una separazione
tra dati e rappresentazione, secondo un modello
MVC.
Sentendo parlare di modello MVC in un contesto
di applicazioni Web si potrebbe pensare che JSF
abbia una certa somiglianza, o sovrapposizione
con altre tecnologie, come Struts della stessa
Apache Software Foundation, oppure Spring, Barracuda,
o lo stesso MokaPackages di Mokabyte.
A chi è nato questo sospetto non è
in errore: JSF si può per certi versi considerare
un "figlio" di Struts, una tecnologia
che si sovrappone di molto a quelle citate, senza
però essere completamente sostituitiva.
Caratteristiche
Anche in JSF (il sito relativo [2] è in
figura 1) lo sviluppo avviene per componenti che
possono essere utilizzati nelle pagine Web, implementate
da pagine JSP. Ogni elemento visuale è
realizzato in una pagina JSP attraverso un tag
specifico, e ne esiste uno per ciascun elemento
base di HTML. Ovviamente il sistema è estensibile,
in quanto lo sviluppatore può integrare
più componenti HTML per realizzarne uno
più complesso. Ad esempio è possibile
realizzare un controllo "Calendario":
un campo di input con collegato un pulsante che
apre una vista sul calendario e permette di scegliere
una data. Ci si può aspettare che gli strumenti
di sviluppo proprietari, come hanno fatto per
Swing od AWT, offriranno controlli più
evoluti di quelli classici presenti in HTML ed
è un peccato che JSF includa solo questi
e non elementi più avanzati. In questo
modo l'offerta equivale sostanzialmente a quella
presente in Struts.
Altre fondamentali caratteristiche dei componenti
di JSF è che sono stateful e gestiscono
la validazione lato server, la separazione MVC,
la navigazione, la conversione dei tipi, la gestione
degli eventi.
Lo stato dell'applicazione ed il suo comportamento,
sono pilotati da Javabean applicativi ed il controllo
della navigazione e la configurazione dell'applicazione
avvengono tramite documenti XML.
Tutte le funzionalità di JSF, come la navigazione
od il lookup di Javabean sono "pluggable".
Ma la caratteristica più interessante di
JSF è la semplicità. Le specifiche,
di dimensioni mastodontiche, sono destinate ai
produttori di strumenti di sviluppo e software
lato server e l'obiettivo è quello di fornire
un ambiente di programmazione semplice allo sviluppatore.
Più semplice di Struts anche senza utilizzare
strumenti di disegno visuale.

Figura 1 - Il sito di Apache MyFaces
Una
evoluzione in corso
Si dice che JSF diventerà parte di J2EE
1.6. Ed è molto probabile che questa ipotesi
diventerà realtà, visto che nella
piattaforma J2EE manca quel tipo di tecnologia
e che presto o tardi tutto quello che viene studiato
dal JCP diventa parte dell'una o dell'altra piattaforma
Java. Questo aspetto concorrerà sicuramente
a diffondere maggiormente la tecnologia, anche
se questa dovrà fare i conti con un notevole
installato di Struts, Spring ed altri framework.
Un "buco" di specifiche prima coperto
da progetti open source, e che ora si vuole riempire
con una specifica standard e calata dall'alto.
Può funzionare, ma si ricordi cosa è
successo con Hibernate/EJB: la tecnologia per
i componenti enterprise di SUN ed IBM ha avuto
sicuramente successo, è divenuto uno standard
di fatto dopo essere stato uno standard su carta,
ma poi ha dovuto rintuzzare gli attacchi di alternative
più leggere, come il framework relazionale
Hibernate. Ed alla fine si può dire che
EJB abbia perso. Come dire, se non li puoi battere,
alleati a loro. E così EJB si è
tolto di dosso l'armatura che lo rendeva così
pesante, ha chiesto aiuto al nuovo J2SE 1.5 per
le annotazioni ed ha vestito la più leggera
casacca di Hibernate, trasformandosi in quest'ultimo.
Una mossa sicuramente furba per poter continuare
ad asserire che EJB è una tecnologia di
successo.
Cosa accadrà per JSF? Le specifiche SUN,
ispirate a Struts ma con un più ampio grado
di flessibilità, potrebbero comunque mostrare
i propri limiti, specie se confrontati con framework
applicativi più omogenei, come Spring.
È vero, Struts è il prodotto più
noto e probabilmente utilizzato, e SUN ha fatto
bene ad utilizzarlo come base, ma negli ultimi
tempi sembrava in fase un po' calante, rispetto
a concorrenti che implementano l'inversion of
control in modo più pulito.
C'è comunque da dire che l'ampia configurabilità
di JSF, maggiore di quella di Struts, permette
anche di integrare il noto framework Spring, almeno
per quanto riguarda il lookup dei componenti.
Insomma, come molti hanno detto nella dicussione
su TheServerSide [1], sarà il mercato a
decidere del futuro di JSF, Struts, Spring od
altri framework; e come ha decretato il successo
di Hibernate, potrbbe anche essere che la vittoria
finale non andrà allo standard ufficiale,
ma al framework open source più utile,
intelligente od opportuno.
Bibliografia
[1] Joseph Ottinger - "JSF implementation
MyFaces leaves Jakarta Incubator", http://www.theserverside.com/news/thread.tss?thread_id=32650
[2] aa.vv. - "Apache MyFaces" - http://myfaces.apache.org
[3] Rick Hightower - "JSF for nonbelivers:
clearing the FUD about JSF", http://www-106.ibm.com/developerworks/library/j-jsf1/
[4] James Holmes - "Java Server Faces Resources",
http://www.jamesholmes.com/JavaServerFaces/
[5] aa.vv. - "JSF Central", http://www.jsfcentral.com/
[6] Kito D.Mann - "JavaServer Faces in Action:
introducing JavaServer Faces", http://www.webreference.com/programming/java_server/
[7] Roland Barcia - "JavaServer Faces (JSF)
vs Struts", http://www.sys-con.com/story/?storyid=46516&DE=1
Massimiliano Bigatti
é autore di diversi libri su Java, tra
cui "Java ed Open Source" (Tecniche
Nuove 2005). È certificato, tra le altre,
come SUN Certified Enterprise Architect for Java
Platform, Enterprise Edition Technology. E' content
editor del portale dedicato ai Web Services http://javawebservices.it.
|