Come Apache Struts Aiuta a Mantenere la Struttura nelle Applicazioni Java e Perché È Troppo Presto per Dimenticarlo
Molti sviluppatori Java, quando sentono la parola Struts, non possono fare a meno di pensare a vecchi progetti legacy o ai titoli sensazionalistici sulle vulnerabilità di sicurezza di anni passati. Ma se metti da parte i pregiudizi e dai un'occhiata al repository, vedrai un framework vivo che porta ancora sulle sue spalle un'enorme porzione del settore enterprise. Nell'era dei microservizi e della programmazione reattiva, Struts sembra un visitatore del passato, ma offre ancora un modo chiaro e prevedibile per costruire applicazioni web.
Chi ne ha bisogno e perché oggi
Struts è un classico framework MVC. Il suo obiettivo principale è separare la logica di business, la presentazione e il controllo della navigazione. All'inizio degli anni 2000, questo fu una rivelazione: prima di allora, gli sviluppatori spesso mescolavano query SQL, codice Java e tag HTML direttamente nelle pagine JSP. Il risultato era un caos impossibile da mantenere.
Oggi, il progetto vive sotto l'egida della Apache Software Foundation. Se lavori nel settore enterprise, probabilmente dovrai lavorarci. E non si tratta solo di mantenere codice vecchio. Struts 2 (nato da WebWork 2) è uno strumento completamente moderno per chi preferisce il modello Request/Response e non vuole nascondere le specifiche del protocollo web dietro astrazioni complesse di framework componenti come JSF o Tapestry.
Cosa c'è dentro la scatola
L'architettura di Struts si basa su tre pilastri. Prima di tutto, ci sono gli handler delle richieste (Actions). Scrivi una classe che fa un lavoro utile e la mappi a un URL specifico. Secondo, c'è il meccanismo del flusso di controllo. Dopo che la logica viene eseguita, il framework decide quale risorsa (ad esempio una pagina o JSON) restituire all'utente. Terzo, c'è una libreria di tag che semplifica la creazione di moduli interattivi.
È interessante notare che Struts non cerca di imporre uno stack frontend specifico o un livello di accesso ai dati. Va altrettanto bene con Hibernate, JDBC o Apache Cayenne. Sul lato client, puoi usare il buon vecchio JSP, oppure puoi affidare tutto ad Angular o React, trasformando Struts in un backend per servizi REST.
Ecco come appare una semplice action in Struts 2:
public class HelloAction extends ActionSupport {
private String message;
public String execute() {
message = "Привет из Struts!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
La configurazione (tradizionalmente in XML, ma funzionano anche le annotazioni) collega questo codice a un percorso del browser. È trasparente e facile da debuggare.
Libertà onesta e sicurezza
Gli sviluppatori di Apache Struts enfatizzano la "pulizia" della licenza e l'indipendenza. Il progetto è completamente gestito da volontari. Questo significa che domani nessuna corporation può cambiare i termini d'uso o chiudere l'accesso al codice sorgente.
Per quanto riguarda la sicurezza: dopo diversi incidenti di alto profilo, la comunità è diventata paranoica sui controlli. Il progetto ora ha un rating alto su OpenSSF Scorecard. Il repository ha una Security Guide dettagliata e le patch critiche per il branch corrente di Struts 2 vengono rilasciate tempestivamente.
A proposito di versioni. Un punto importante: Struts 1 è ufficialmente morto. Gli sviluppatori esortano fortemente a non iniziare nuovi progetti con esso e raccomandano di migrare a Struts 2 quando possibile. Il primo branch non riceve più aggiornamenti di sicurezza, quindi usarlo in produzione è un rischio consapevole.
Flessibilità senza magia
A differenza di molti framework moderni "magici", Struts non nasconde il fatto che il web è essenzialmente stateless. Vedi chiaramente il ciclo request-response.
Se hai bisogno di integrare tecnologie specifiche, Struts offre meccanismi di estensione. Vuoi usare SOAP? Nessun problema. Hai bisogno di AJAX? Ci sono soluzioni pronte. Vuoi collegare i motori di template Freemarker o Velocity invece di JSP? Questo si fa con strumenti standard.
Allo stesso tempo, gli sviluppatori dicono onestamente: se il tuo obiettivo è costruire un'UI da componenti server pronti, Struts non fa per te. Per quei compiti, è meglio guardare Wicket. Struts è scelto da chi vuole controllare HTML e JavaScript a un livello basso.
Vale la pena provarlo e per chi è adatto
Struts è la scelta dei conservatori nel migliore senso della parola. È adatto per team che valorizzano pattern architetturali collaudati nel tempo e la stabilità di Apache.
Chi dovrebbe dare un'occhiata al repository:
- Sviluppatori Java che mantengono grandi sistemi enterprise.
- Chi cerca un framework MVC prevedibile senza complessità inutili e magia nascosta.
- Architetti per i quali la pulizia della licenza e l'open-source senza vendor lock-in sono importanti.
È meglio iniziare la propria introduzione con la documentazione ufficiale e i tutorial di Struts 2 sul sito web del progetto. Il repository GitHub è un ottimo posto per vedere come sono strutturati i meccanismi interni di uno dei framework più conosciuti nella storia dello sviluppo Java. A volte è utile sapere su cosa sono costruite le "strutture invisibili" (struts) dell'industria.
Progetti correlati