Ciao, e benvenuto nella prima puntata della trentaduesima stagione di questo podcast. Nella scorsa stagione abbiamo raccontato Laravel, un framework per PHP, e imparato cos'è un framework: una struttura pronta che ti evita di reinventare la ruota. Oggi affrontiamo un altro grande framework, ma di un mondo diverso, quello di Java: Spring, e la sua versione moderna, Spring Boot. E siccome ormai sappiamo cos'è un framework, oggi non ripartiamo da capo, ma andiamo dritti a ciò che rende Spring speciale e diverso, a partire dalla sua origine, che è una storia affascinante: Spring è nato per salvare il software serio dalla sua stessa complessità.
Partiamo dal mondo in cui Spring è nato, perché lo abbiamo già incontrato: il mondo del software serio, aziendale, quello di Java. Ricordi la stagione su Java? Java è il linguaggio del software serio e importante: quello delle banche, delle grandi aziende, dei sistemi critici e longevi. Ebbene, in quel mondo, tanti anni fa, era successa una cosa spiacevole: costruire questi grandi sistemi seri era diventato terribilmente complicato. Gli strumenti dell'epoca, pensati per il software serio, erano diventati pesantissimi, macchinosi, pieni di cerimonie e complicazioni. Costruire un sistema serio richiedeva una fatica enorme, una macchina complessa e ingombrante. Il software serio era annegato nella sua stessa complessità.
Voglio farti sentire quanto fosse pesante quella situazione, perché è il seme di tutto. Immagina di dover costruire qualcosa di serio e importante, e di ritrovarti obbligato a usare strumenti così complicati e cerimoniosi che gran parte della tua fatica se ne andava nel domare gli strumenti, invece che nel costruire ciò che ti interessava. Per fare anche cose relativamente semplici, dovevi mettere in piedi una macchina enorme, complicata, piena di parti e di configurazioni. Era una complessità soffocante, che rendeva lo sviluppo del software serio lento, faticoso, frustrante. La potenza c'era, ma sepolta sotto una montagna di complicazione. Costruire cose serie era diventato un incubo di complessità.
Ed ecco perché è nato Spring, che voglio farti apprezzare come una liberazione. Spring è nato come una reazione a questa complessità soffocante: un modo più leggero, più semplice, più umano di costruire software serio in Java. Ha detto, in sostanza: non è vero che, per costruire cose serie e robuste, bisogna per forza annegare in tutta questa complessità e cerimonia; si può fare in modo più semplice, più snello, più diretto. Spring è arrivato come una boccata d'aria fresca, offrendo un modo di costruire sistemi seri senza la macchina soffocante di prima. È nato con una missione precisa: salvare il software serio dalla sua stessa complessità, rendere di nuovo gestibile il costruire cose grandi e robuste.
Voglio darti fin d'ora la lente con cui guardare Spring in tutta la stagione, perché è la chiave di tutto. Tutta la storia di Spring, e del suo successore Spring Boot, è la storia di una lotta contro la complessità del software serio. Spring nasce per domare una complessità diventata insopportabile. E, come vedremo, questa lotta non finisce mai: è un pendolo che oscilla di continuo, dove la complessità torna sempre ad accumularsi, e ogni volta bisogna tagliarla via di nuovo. Tieni a mente questa chiave, la lotta continua contro la complessità del software serio, e capirai il senso di tutta la vicenda di Spring, compreso perché sia nato Spring Boot.
Voglio anche anticiparti il cuore tecnico di Spring, quello che lo rende diverso da Laravel, perché sarà il centro della stagione. Spring ha, al suo cuore, un'idea tecnica profonda e potente, diversa da tutto ciò che abbiamo visto: l'idea che gli oggetti di un programma non debbano procurarsi da soli gli strumenti di cui hanno bisogno, ma che questi strumenti gli vengano forniti, iniettati, da qualcun altro. Si chiama iniezione delle dipendenze, ed è il modo particolare in cui Spring tiene insieme e assembla le parti di un sistema. È un'idea profonda, che dà a Spring flessibilità e ordine, e la esploreremo con calma. Per ora, tienila come anticipazione: in Spring, gli oggetti non si costruiscono i propri attrezzi, glieli danno.
Voglio chiudere anticipandoti anche l'anima di Spring, il suo valore di fondo, perché la contrapporremo a Laravel. Ricordi che Laravel aveva come stella polare la felicità di chi programma, la gioia? Spring ha un'anima diversa. Nato nel mondo serio di Java, Spring punta soprattutto alla robustezza, alla solidità, alla capacità di costruire sistemi seri, grandi e duraturi. Non tanto la gioia, quanto la potenza affidabile per il software importante. È un bel contrasto: Laravel, dal mondo di PHP, punta alla gioia; Spring, dal mondo di Java, punta alla solidità. Come vedremo, i framework ereditano l'anima del loro linguaggio. Ma di questo parleremo diffusamente.
Per oggi ci fermiamo qui. Spring è un grande framework per Java, nato nel mondo del software serio e aziendale, quello di banche e grandi imprese. È nato come reazione a una complessità diventata soffocante: gli strumenti dell'epoca per costruire software serio erano pesantissimi e cerimoniosi, e Spring è arrivato come una boccata d'aria fresca, con la missione di salvare il software serio dalla sua stessa complessità. Tutta la sua storia è una lotta continua contro questa complessità, un pendolo che oscilla. Al suo cuore c'è l'idea dell'iniezione delle dipendenze, e la sua anima punta alla solidità, non alla gioia. Nella prossima puntata approfondiamo il pendolo della complessità. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.