Struts vs Struts2
Struts (noto anche come Apache Struts o Struts 1) è un framework open source multipiattaforma scritto in Java, che è destinato allo sviluppo di applicazioni web Java EE. Era uno dei primi framework per applicazioni web Java EE. Ma pochi anni dopo arrivò Struts2 (o Struts versione 2), ed era un framework di applicazioni web completamente diverso e molto migliorato. Aveva affrontato alcuni problemi che erano percepiti come carenze nella versione iniziale. Ora, Struts2 viene utilizzato molto pesantemente per lo sviluppo di applicazioni Java EE nel mondo.
Cos'è Struts?
Il framework Struts (Struts 1) è stato uno dei primi framework di applicazioni Web per lo sviluppo di applicazioni Web Java EE. Il framework Struts incoraggia l'uso dell'architettura MVC (Model-View-Controller). È un'estensione dell'API Java Servlet. Craig McClanahan è il creatore originale di Struts. Inizialmente era conosciuto come Jakaratha Struts ed è stato mantenuto sotto Jakarta Project di Apache Software Foundation. È rilasciato con Apache License 2.0. Il framework Struts è chiamato framework basato su richiesta ed è composto da tre componenti principali: un gestore di richieste, un gestore di risposta e una libreria di tag. L'URI standard (Uniform Resource Identifier) è mappato su un gestore di richieste. Il gestore delle risposte è responsabile del trasferimento del controllo. Per creare applicazioni interattive con moduli, è possibile utilizzare le funzionalità offerte dalla libreria di tag. Struts supporta applicazioni REST e varie tecnologie come SOAP, AJAX, ecc.
Cos'è Struts2?
Il framework Struts era percepito come contenente alcune limitazioni (principalmente la mancanza di separazione tra il livello di presentazione, il livello di gestione delle richieste e il modello) dagli sviluppatori Java EE in quel momento, e di conseguenza pochi anni dopo arrivò Struts2. In realtà, Struts2 era completamente diverso da Struts. In effetti, non condividevano nemmeno la stessa base di codice perché Struts2 era semplicemente il risultato della ridenominazione del framework WebWork 2.2 (ad esempio, le comunità WebWork e Struts che hanno lavorato separatamente per qualche tempo alla fine si sono unite per creare Struts2). La sua attuale versione stabile è la versione 2.2.3, che è stata rilasciata a maggio 2011.
Qual è la differenza tra Struts e Struts2?
Uno dei molti problemi del framework Struts era la necessità di programmare a classi astratte invece che a interfacce. Questo è stato risolto dal framework Struts2. Ad esempio, il framework Struts richiede che le classi Action vengano estese dalle classi base astratte, ma le azioni Struts2 possono implementare un'interfaccia Action. A causa delle differenze nel modello di threading tra le due versioni, i problemi relativi alla sicurezza del thread che sono emersi nel framework Struts per quanto riguarda gli oggetti Action non si verificano nel framework Struts2. Il motivo è che gli oggetti Azione di Struts2 vengono istanziati per ogni richiesta, mentre un framework Azione in Struts ha solo un'istanza per gestire tutte le richieste per quella Azione. A differenza delle azioni nel framework Struts, le azioni di Struts2 non dipendono dall'API Servlet.
La testabilità del framework Struts2 è comparativamente superiore rispetto al framework Struts. Puoi testare le azioni di Struts2 semplicemente seguendo i tre passaggi: istanziazione, impostazione delle proprietà e invocazione dei metodi. L'input di raccolta è più semplice nel framework Struts2 poiché le proprietà di Action vengono utilizzate come proprietà di input, senza dover conservare un secondo oggetto di input. Oltre al supporto per l'integrazione JSTL (che è presente in Struts), il framework Struts2 può utilizzare OGNL (Object Graph Notation Language) più potente ed espressivo. Per la conversione del tipo, Strut e Strut2 usano rispettivamente Commons-Beanutils e OGNL. A causa di questi miglioramenti, il framework Struts2 è considerato un framework molto maturo ed è molto popolare tra i programmatori Java EE. D'altra parte, il framework Struts è ora considerato obsoleto.