Cos'è Spring e perché vale la pena di conoscerlo

Partiamo con un po’ di domande.

– Cos’è Spring?

Spring è un framework concepito per lo sviluppo di applicazioni enterprise.

– Cosa significa “applicazione enterprise”?

In generale, un’enterprise application è un’applicazione che soddisfa (o dovrebbe soddisfare) requisiti di sicurezza, performance e affidabilità compatibili con le esigenze tipiche di un’organizzazione/impresa/azienda.

– Mi conviene usare Spring nel mio progetto?

Una volta chiarito il concetto di enterprise application la decisione dovrebbe risultare piuttosto semplice… ma non troppo. La definizione, per quanto chiara, abbraccia un grande insieme di applicazioni. Ovviamente sta alla nostra esperienza valutare la complessità di un progetto e scegliere gli strumenti giusti da utilizzare.

– E allora?

Allora cerchiamo d’individuare insieme i motivi per cui vale la pena di utilizzare Spring in un nostro progetto. Lo facciamo con una lista, come va tanto di moda al giorno d’oggi.

Perché usare Spring? 10 motivi per convincervi

Se provate a fare una rapida ricerca su Google vi accorgerete presto che esiste una miriade di framework per lo sviluppo di applicazioni web in Java. Ognuno con le sue peculiarità e con un suo “pubblico di riferimento”.

Cos’è dunque che dovrebbe spingerci ad utilizzare proprio Spring, quando là fuori c’è l’imbarazzo della scelta?

Spring

Di seguito riporto quelli che, secondo me, sono i motivi per cui vale la pena di prendere in considerazione questo framework; i suoi reali punti di forza.

  1. Solidità. Spring è un framework decisamente rodato, con alle spalle molti anni di sviluppo ed utilizzo (il primo rilascio risale al 2002).
  2. Completezza. Nato come alternativa “leggera” alla specifica Java EE, negli ultimi anni Spring è cresciuto enormemente, arrivando a diventare una famiglia di progetti dedicati alla risoluzione di tutta una serie di problematiche tipiche del mondo enterprise.
  3. Modularità. La struttura modulare del framework, che ad oggi si compone di oltre venti sotto-progetti, ne costituisce un altro punto di forza. In fase di progettazione potremo scegliere quali sono le funzionalità richieste dalla nostra applicazione e includere solamente i package necessari.
  4. Flessibilità. Spring lascia ampia libertà allo sviluppatore riguardo al percorso da seguire per arrivare al risultato desiderato. I vincoli da rispettare sono veramente pochi. Spring ci consegna i mattoncini, sta a noi incastrarli nel modo che riteniamo più opportuno.
  5. Semplicità. Mi rendo conto che questa è una parola grossa, e in effetti rischio l’insulto… Al di là della complessità che un framework come Spring porta inevitabilmente con sé, le sue funzionalità sono esposte in maniera molto intuitiva e coerente. Già dopo qualche settimana di utilizzo vi troverete a vostro agio con la maggior parte delle API.
  6. Community. Gli appassionati e i professionisti che ruotano attorno a questo mondo sono tantissimi, ognuno pronto a dare il suo contributo in termini di nuove funzionalità, testing e bug-fixing. Anche la comunità dei blogger è molto attiva e fornisce un supporto importante con numerose guide e tutorial.
  7. Produttività. Una volta acquisita padronanza degli strumenti messi a disposizione da Spring, la vostra produttività crescerà in maniera incredibile. Spring mette a disposizione utilità per qualunque vostra esigenza (o quasi). In alternativa, fornisce integrazioni con la maggior parte delle librerie e dei framework più diffusi in ambito enterprise.
  8. Testabilità. Aspetto spesso sottovalutato. Il cuore di Spring implementa un’architettura di tipo IoC (Inversion of Control), che permette di eliminare dal nostro codice dipendenze dirette tra le classi. Ne consegue un’elevata testabilità dei singoli componenti dell’applicazione.

Gli ultimi due motivi che riporto non sono strettamente legati alle caratteristiche tecniche del framework, bensì a vantaggi che l’utilizzo di Spring può portare alla nostra vita professionale:

  1. Imparare a scrivere codice migliore. Conoscere e studiare un framework come Spring è come leggere un manuale di programmazione scritto in Java. Dentro ci trovate tutto il meglio che l'ingegneria del software ha sfornato negli ultimi anni, in termini di tecnologia e code-design.
  2. Maggiori opportunità di lavoro. Un punto che potrebbe convincere gli ultimi scettici. Spring è uno dei framework più diffusi ed utilizzati nelle aziende che hanno scelto Java come linguaggio di sviluppo (in Italia e, ahimè, soprattutto all'estero). Conoscerlo e padroneggiarlo vi dà una carta in più da giocarvi in un eventuale colloquio di lavoro. Aspetto da non sottovalutare… ;-)

Ma non tutto è rose e fiori

Siccome Pivotal (la società che supporta e sponsorizza Spring) non mi dà un centesimo per pubblicizzare il suo framework, non canterò solamente le sue lodi. È invece doveroso avvertirvi che Spring, come qualsiasi altro strumento, non è privo di difetti.

Al di là di occasionali bug (che comunque sono estremamente rari), tre sono gli aspetti che nella mia esperienza lavorativa mi hanno maggiormente infastidito:

  1. Documentazione a volte dispersiva. Sì, perché il problema non è l’assenza di documentazione o la sua brevità. Tutt’altro. Il problema, a volte, è l’eccessiva verbosità delle informazioni fornite, col risultato che si finisce per perdere il focus sul problema principale. Fortunatamente, come già accennato, la community di Spring è smisurata e il web pullula di how-to e tutorial con soluzioni pratiche ai problemi più diffusi.
  2. Eccessiva flessibilità. Anche in questo caso, un punto di forza del framework può avere anche i suoi lati negativi. L’estrema modularità del framework e la possibilità d’implementare le soluzioni in maniera differente a volte disorienta. In questo caso poi, seguire tutorial serve a poco, poiché ovviamente ognuno ha la sua soluzione al problema e questo rischia di creare ancora più confusione.
  3. Configurazione complessa. Il vero punto debole di Spring, da sempre, è la sua configurazione. Benché esistano differenti modi di configurare gli elementi del framework (XML-based, Annotation-based, JavaConfig-based), lo sviluppatore inesperto finirà per avvertire un certo senso di frustrazione di fronte alla mole di linee di codice necessarie a predisporre anche il più semplice dei progetti. Fortunatamente, Spring Boot ci viene in aiuto e sfruttando il paradigma convention over configuration ci semplifica notevolmente la vita.

Il consiglio che posso dare è quello di spendere un po’ di tempo nello studio di Spring prima di buttarsi a capofitto nella scrittura del codice. Padroneggiare decentemente questo strumento vi permetterà di risparmiare molte energie in fase di sviluppo e vi eviterà un bel po’ di mal di testa.

E voi, cosa ne pensate?

Dopo questa carrellatta di riflessioni su quella che è la mia esperienza di lavoro con Spring, sono curioso di conoscere il vostro punto di vista sulla faccenda…

Avete già utilizzato Spring in qualcuno dei vostri progetti?

Lo usate abitualmente a lavoro?

È la prima volta che ne sentite parlare?

Vi ho incuriosito e vorreste provarlo?

Se vi va, nei commenti raccontatemi la vostra esperienza e fatemi sapere se siete d’accordo con qualcuno dei miei “motivi”. ;-)

A presto,

David

(foto di Onlyyouqj)