Newsgroup: it.comp.java
Titolo: Struts vs Turbine

Ciao ragazzi!
Vagando tra i vari gruppi di discussione o dalla lettura dei documenti
ufficiali riguardo al progetto jakarta, mi č capitato di trovare
spesso riferiemnto ai framework Struts e Turbine. Apparentemente,
sembrano MOOOLTO simili, e sinceramente non riesco a capire una cosa:
- Dovento sviluppare una mia web application secondo quali
caratteristiche posso valutare bene quale dei due sia meglio usare?
- In base alla propria esperienza, chi potrebbe consigliarmi in quali
casi uno dei due puň rivelarsi "migliore" o potrebbe far sorgere
casini piů insidiosi a progetto inoltrato?
Spero qualcuno possa fare luce su questo mio piccolo/grave dilemma...
Grazie,
ciao!

 casini più insidiosi a progetto inoltrato?
Dunque, io ho usato struts solo nella versione "integrata" nell'expresso
framework, e invece conosco abbastanza bene turbine 2.1 perché il sistema su
cui lavoro è in parte costruito su turbine. In effetti tra i due ci sono
alcune similarità: anche turbine in effetti contiene un sistema di
generazione delle pagine secondo il paradigma del model-view-controller.
Tuttavia turbine ha uno scopo un po' più generale: oltre allo strato di
presentazione, specifica anche un modello di servizi (ovvero una specie di
"sistema standard" per strutturare l'applicazione in servizi che si possono
poi chiamare tra di loro), più simile come impostazione a quella che è
risolta, in un altro senso, dagli enterprise javabeans. In effetti di
turbine fanno parte alcuni servizi standard, come quello di persistenza, che
consente di interagire con un database tramite un sistema object-relational
chiamato "Torque", cosa che è invece, per il momento, fuori dallo scopo di
struts (ma "dentro" ad alcuni framework più completi che utilizzano struts,
come appunto l'expresso framework).
In altre parole: struts ha come corrispettivo solo lo strato "di
presentazione", di turbine, che peraltro in turbine non utilizza le JSP, ma
un sistema di templating diverso che si chiama velocity. Solitamente l'idea
condivisa nella comunità è che velocity sia "una figata", mentre le jsp "una
cagata": questo perché secondo i detrattori delle jsp, velocity
consentirebbe la realizzazione di uno strato di presentazione più "puro" e
più semplice. Io che devo combattere spesso con del codice velocity scritto
da gente che lavorava nella mia azienda prima di me, ti assicuro che
velocity può essere un vero inferno, con cui lavorare, e che l'assoluta
assenza di strumenti per gestirlo, debuggarlo, ecc., può radicalmente
danneggiare le operazioni di sviluppo e manutenzione di un sito implementato
con velocity: alla faccia dei techno-geek che lo adorano, e probabilmente
non hanno mai dovuto manutenere un sito fatto in velocity.
Per il resto, comunque, Turbine ha un'architettura fatta davvero bene:
tuttavia la documentazione è completamente risibile, ed è anche difficile
trovare esempi in giro (a parte il famoso sistema di bug-tracking scarab,
che però non è un buon esempio, perché man mano che vanno avanti a
svilupparlo, gli autori cambiano Turbine a seconda delle proprie esigenze):
per capire come funziona, è indispensabile studiarne il codice, mentre per
Struts esistono libri, tutorial, esempi vari, ambienti di sviluppo che lo
supportano, ecc. In altre parole, Turbine è un ottimo esempio di framework,
ma lo sforzo iniziale per integrarvisi secondo me non vale il risultato che
puoi ottenere: con l'expresso framework e struts hai forse un'architettura
meno cristallina (ma non è male), ma hai più supporto, più documentazione,
più strumenti, più esempi, ecc.