Dinosauri e Jedi

Ere geologiche, dinosauri, programmatori Java e Coboldi

Correva l’anno del Signore 1995… L’intera comunità informatica era in fermento per l’avvento di un nuovo Jedi chiamato Java… Tutti ne parlavamo, molti pensavano di conoscerne tutti i dettami… Alla fine erano come un gruppo di adolescenti che parlava di sesso: nessuno in realtà lo aveva mai fatto.

Mi sentivo ormai appagato dalla conoscenza del 60-70% del linguaggio C++, seppur su piattaforma MS e con lunghissime sezioni introduttive di #ifdef. Pertanto guardavo a questo nuovo Jedi un po’ dall’alto in basso: "Ecco l’ennesimo linguaggio… ma non ne abbiamo già abbastanza? E poi cosa c’è che non va in C++?".

Con tutte le avversioni del caso, volente o nolente, fui costretto a studiare Java. E già… c’è sempre un cliente che richiede l’ultima tecnologia, anche se poi non la conosce e magari non ne ha veramente bisogno. Eppure, come spesso accade nella migliore tradizione dei film americani dove il lieto fine è d’obbligo, tra noi due sarebbe nato un grande amore, o meglio una magnifica corrispondenza di amorosi sensi…

Mentre Internet faceva passi da gigante diffondendosi a macchia d’olio e la comunità informatica festeggiava l’arrivo di potere di esecuzione al lato browser (le famose Applet), gli addetti ai lavori invece avevano già capito la grande innovazione del linguaggio che lo rendeva uno strumento straordinario per le implementazioni di servizi al lato server… E così, anche il server side non fu più terra di desolazione per nerd, ma un ambiente assolutamente sexy!

Java, oltre che per gli aspetti tecnici, mieteva adepti anche e soprattuto per una serie di aspetti politico-sociali… Basti menzionare che alla metà degli anni Novanta la visione della "mitica" Sun Microsystem  — che non è una leggenda, ma è esitita veramente — era in netta contrapposizione rispetto alle strategie, considerate da molti monopolistiche. della Microsoft, sebbene sempre abbinate alla sequenza CTRL ALT DEL.

Per molti simpatizzanti dell'"Alleanza Ribelle", la piattaforma Java diventò ben presto la Forza, ponendo una seria minaccia al mondo Microsoft. La paura iniziò a serpeggiare dal “lato oscuro della Forza” tanto che uno “spaventato” Bill Gates si espresse con la famosa frase “[Java] scares the hell out of me”. La piattaforma Java, congiuntamente a Unix, divenne ben presto un polo ben riconoscibile intorno al quale si potevano coalizzare le forze favorevoli all’Open Source. Si trattava dell’ennesima lotta tra David e Golia, favorita peraltro dalla grande mossa di rendere disponibili in Internet i sorgenti di Java e di molti dei suoi componenti.

Oltre a questi elementi "politici", vi erano anche molti aspetti tecnici assolutamente interessanti, o almeno percepiti come tali agli albori… Però non si trattava di una rivoluzione, ma di una evoluzione, già a partire dalla sintassi molto simile al C. Tuttavia si cercava di imparare dagli errori del passato — aspetto sempre molto saggio — spesso compiendone altri, e di eliminare molte difficoltà riconosciute ai linguaggi esistenti come l’allocazione/deallocazione della memoria o l’aritmetica dei puntatori, introducendo molte novità tra le quali anche il supporto nativo al multi-threading, nonostante emergesse ben presto come il disegno iniziale non fosse stato esattamente un colpo di genio. Tutti questi fattori facevano sì che Java fosse un “linguaggio di facile comprensione, flessibile, divertente, deterministico e non intimidatorio”: parola del padre James Gosling, versetto secondo…

Tuttavia, agli inizi non erano tutte rose e fiori, anzi… Le versioni iniziali, sebbene presentassero molte interessanti potenzialità, erano appunto… versioni iniziali, ancora un po’ acerbe. Il package AWT soffriva di molte limitazioni, a partire dal fatto che violava la filosofia base di Java (WORA, Write Once Run Anywhere). Il controllo della user interface era limitato e le corrispondenti interfacce peccavano di mancanza di stabilità; non c’era il supporto per la connessione a database (JDBC acronimo non ufficiale per Java DataBase Connectivity, connettività al database di Java) o meglio ne esisteva una versione embrionale esterna; non erano ancora state incluse le feature dell’internazionalizzazione, della localizzazione, non esisteva il framework Remote Method Invocation (RMI, invocazione di metodo remoto) né la serializzazione; era assente il costrutto delle inner class; il Just-In-Time (JIT) era più un sogno che una realtà. Inoltre, alcune implementazioni della VM erano fondamentalmente sbagliate, come la versione di Linux in cui i Thread Java furono mappati ai processi OS creando grossi problemi di performance e di risorse.

Erano i tempi dei pionieri, delle invenzioni, della programmazione di framework per vera necessità e non per vizio, del periodo eroico della creazione e diffusione di Java (che a MokaByte tanto deve)… In quei tempi tutti gli sviluppatori degni della parola senior disegnarono e implementarono soluzioni di Thread Pooling, e più in generale di pooling delle risorse, embrioni di cache distribuita, convertitori tra il mondo OO e relazionale, framework per la creazione di GUI, e così via… Periodi di incosciente eroicità.

Da allora, molta acqua è passata sotto i ponti e non sempre si è trattato di acqua cristallina…

La versione J2SE 1.4 fu rilasciata il 6 febbraio del 2002 con il nome di Merlin. Si tratta di una versione che ha fatto la storia di Java in quanto è stata la prima major release sviluppata attraverso il Java Community Process (JCP, processo della Java Community).

Nel gennaio del 2010, Sun Microsystem è stata acquisita da Oracle Coporation con un accordo da 7.4 miliardi di dollari. Il 2 aprile del 2010 James Gosling, da molti considerato il padre di Java, annunciò il suo abbandono, e da quell'evento sono seguite ancora altre vicende, fino al momento attuale.

Il modo di lavorare in Java è a sua volta cambiato drasticamente. Solo persone con pochissima esperienza si imbarcherebbero nel disegno e nell'implementazione di framework… Per ogni problema è possibile trovare almeno una decina di soluzioni, non manca più nulla: application server ed ESB implementati in Java, mobile application, cache distribuite, soluzioni per i big data. Si è arrivati al punto in cui è veramente possibile concentrarsi sulla business logic integrando soluzioni infrastrutturali. La stessa comunità IT si è automatizzata — il proverbiale calzolaio ha iniziato a sistemarsi le suole delle scarpe — con tutto un fiorire di soluzioni che si autoprogrammano. È altresì vero che anche i sistemi sono cresciuti esponenzialmente di complessità: ogni sistema si connette con almeno altri dieci, magari presenti dall’altra parte del mondo, e deve processare almeno centinaia di GigaByte di dati, tutto in pochi secondi, geolocalizzando l’utente…

E chi scrive si sente un po' una sorta di neo-tirannosauro, che utilizza ancora le arcaiche email, e che ricorda tanto i tecnici dal camice bianco che decantavano i meriti del Cobol. I nuovi meteoriti sono già precipitati.

Condividi

Luca Vetti Tagliati ha conseguito il PhD presso il Birkbeck College (University of London) e, negli anni, ha applicato la progettazione/programmazione OO, Component Based e SOA in diversi settori che variano dal mondo delle smart card a quello del trading bancario, prevalentemente in ambienti Java EE. Dopo aver lavorato a…