Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Struts vs JSF, le principali differenze tra i due framework per il Web

Le principali differenze tra i due framework Java per il Web
Le principali differenze tra i due framework Java per il Web
Link copiato negli appunti

Struts e JavaServer Faces (JSF) sono due framework Java basati sul design pattern architetturale Model-View-Controller (MVC). Struts è il framework più usato nelle architetture J2EE per implementare l'MVC, questo sia per un fattore cronologico (è nato prima di JSF), sia perché, come vedremo, ci permette di rendere più efficace l'applicazione, di avere meno bug e di risparmiare tempo in fase di sviluppo.

Ogni applicazione realizzata con Struts o con JSF ha, come colonne portanti, l'insieme delle classi e delle interfacce che compongono i framework.

Considerazioni su Struts

Con Struts, la configurazione dell'applicazione è contenuta in un file XML letto allo start-up dell'applicazione. Attraverso il controller questo framework è capace di reindirizzare qualsiasi richiesta alla servlet di servizio e di rispondere attraverso una JSP.

I componenti fondamentali di una applicazione sono:

  • Action: sono delle servlet e vengono chiamate per fornire dei risultatiun risultato
  • JSP: che ci permettono di visualizzare i risultati ottenuti e di fare nuove richieste
  • JavaBeans: che ci forniscono i modelli dell'applicazione
  • Logica di Business: cioè tutte le regole e le funzionalità della nostra applicazione

Considerazioni su JSF

La tecnologia JSF, nasce come completamento della Java Enterprise Edition (J2EE). Se J2EE è noto essere una piattaforma matura, solida e affidabile, per applicazioni enterprise, una delle critiche più comuni che le si rivolgono è sempre stata la mancanza di un modello di riferimento per lo sviluppo dell'interfaccia utente.

Con JSF questa lacuna viene colmata, infatti JSF introduce, rispetto agli altri framework, un sistema di componenti e di librerie pronte per l'uso che rendono la vita dello sviluppatore molto più semplice nello sviluppo di interfacce utente per le applicazioni Web.

I componenti che ci mette a disposizione JSF sono molto simili ai componenti in AWT/Swing, infatti abbiamo:

  • Gestione degli eventi: che servono a gestire le azioni e i comportamenti dell'applicazione
  • Componenti predefiniti: che possono essere richiamati nelle pagine Web dell'applicazione
  • Componenti di validazione: che ci permettono di validare i dati nei form

Sviluppare con JSF oggi, con gli IDE a disposizione che lo supportano, è molto simile a quanto si può fare in ambiente .NET.

È interessante osservare che uno dei principali artefici di questa tecnologia è Craig R. McClanahan, dipendente Sun e creatore di Struts, secondo alcuni infatti il framework JSF non è altro che la "versione ufficiale SUN" di Struts. In base a queste definizioni date di Struts e JSF, è lecito chiedersi quali vantaggi e svantaggi ci siano nell'uso dell'uno o dell'altro.

Vantaggi di Struts rispetto a JSF

1. Validazione

Sia Struts che JSF hanno meccanismi per la validazione di un form, per controllare che i valori immessi siano nel formato richiesto. Se i valori mancano o sono in un formato non esatto, il form non viene inviato, ma viene riproposto con opportuni messaggi di errore.

Mentre Struts ha molti validatori di default per gli indirizzi email, carte di credito, espressioni regolari e molto altro, JSF ha solo dei validatori su valori mancanti, lunghezza dell'input e numeri di un certo range.

In più mentre con JSF la validazione può essere effettuata solo lato server con Struts può avvenire anche lato client.

2. Tool di sviluppo

Mentre Struts è supportato dalla maggior parte degli IDE (NetBeans, Eclipse, JCreator, ecc.), JSF ancora non lo è. Questo perché Struts è affermato per un gran numero di sviluppatori e IT manager mentre JSF no.

3. Url-pattern

In Struts le pagine chiamate da browser terminano tutte con .jsp se sono JSP e con .do se passano da una servlet. Tutto questo semplifica la visione del cammino di un processo.

In JSF form (.jsp) e servlet (.do) hanno gli stessi URL. Questo può causare problemi: ad esempio diventa difficile proteggere le pagine JSP dall'accesso, è difficile riferirsi a pagine "non JSF" nel faces-config.xml e, inoltre, non è possibile effettuare il browsing di directory e cliccare sui link.

4. Installazione

Struts è molto facile da installare, grazie all'applicazione struts-blank, che crea tutti i file di configurazione e di test, da utilizzare come punto di partenza. Per JSF, nativamente, non c'è niente di simile.

5. Internazionalizzazione

Sia con Struts che con JSF è molto semplice internazionalizzare un'applicazione, però con Struts basta creare i message della lingua in un file .properties, con JSF, oltre ai file, dobbiamo dichiarare le lingue nel file di configurazione.

Svantaggi di Struts rispetto a JSF

1. Configurazione

Sia Struts che JSF permettono una configurazione centralizzata su file, infatti tutti i parametri di configurazione sono rappresentati su file XML (struts-config.xml per Struts e faces-config.xml per JSF) o su file .properties. Questo approccio rende più facile i cambiamenti che possono essere effettuati senza modificare o ricompilare il codice Java ma editando un singolo file.

Tutto ciò ci consente di focalizzarci su task differenti (implementare la business logic, presentare determinati valori ai clienti) senza il bisogno di avere informazioni su tutto il sistema. Il faces-config.xml ha una struttura molto più semplice rispetto allo struts-config.xml.

2. Trasparenza delle applicazioni

Con le applicazioni basate sulla tecnologia Struts, ci sono molte cose che agiscono dietro le quinte rispetto ad una normale applicazione Web Java sviluppata attraverso il modello Servlet e Jsp. Quindi le applicazioni Struts sono più difficili da capire, da testare e da ottimizzare.

3. Controller e bean

Con la tecnologia JSF è più semplice definire il controller e i bean infatti non è necessario che estendano particolari classi e che usino particolari metodi mentre con Struts sì. Inoltre, per quanto riguarda i bean, JSF permette di assegnare un nome, per referenziarli nelle form. Struts invece ha un processo complesso, per esempio è necessario ricordarsi quale form è l'input per quale azione.

4. Tecnologie

Struts è limitato alle sole tecnologie HTML e HTTP mentre le JSF ne supporta altre.

5. Interfaccia Web

Struts non fornisce un modello per la rappresentazione lato server degli elementi dell'interfaccia Web e non ha un modello di sviluppo a eventi. JSF introduce questi concetti svincolando lo sviluppatore dalla gestione tramite codice di oggetti quali request e response, gestione che è invece ora totalmente a carico del framework.

Conclusioni

Entrambi i framework ci offrono:

  • Modularità e Riusabilità: i diversi ruoli dell'applicazione sono affidati a diversi componenti. ciò consente di sviluppare codice modulare e più facilmente riutilizzabile
  • Manutenibilità: l'applicazione è costituita da livelli logici ben distinti. Una modifica in uno dei livelli non comporta modifiche negli altri
  • Rapidità di sviluppo: è possibile sviluppare in parallelo le varie parti dell'applicazione, logica di business e di view

Nelle applicazioni attuali Struts resta ancora il framework più diffuso per età e facilità d'uso (è conosciuto dalla maggior parte dei programmatori Java), inoltre supporta altri framework come Spring, Hibernate e JSF stesso, ma soprattutto implementa nel migliore dei modi il model-view-controller; mentre JSF rappresenta il futuro della programmazione ad oggetti ed è una tecnologia ancora in via di sviluppo.

Riferimenti

Ti consigliamo anche