James Gosling è spesso presentato come il «padre di Java». La formula nasconde però la domanda che rende interessante il suo lavoro: come far funzionare lo stesso software su macchine molto diverse senza rinunciare alla robustezza necessaria ai dispositivi connessi?
All’inizio degli anni Novanta Gosling cercò una risposta con un piccolo team di Sun Microsystems. Oak, futuro Java, nacque nel progetto Green per l’informatica embedded, non come linguaggio per il Web. Il Web gli avrebbe poi dato visibilità mondiale.
Programmare oltre la workstation
James Arthur Gosling nacque nel 1955 vicino a Calgary, in Canada. Dopo gli studi all’Università di Calgary conseguì nel 1983 un dottorato a Carnegie Mellon. Entrò in Sun Microsystems nel 1984.
Sun prevedeva l’arrivo dell’informatica in dispositivi di consumo con processori differenti. Un programma compilato direttamente per un processore richiedeva adattamenti per un altro, mentre i linguaggi più vicini all’hardware esponevano errori di memoria difficili da controllare.
Dal progetto Green a Oak
Nel 1991 Patrick Naughton, Mike Sheridan e Gosling avviarono Green. Gosling considerò C++, ma giudicò difficile garantire semplicità, portabilità e robustezza. Progettò quindi Oak.
Oak mantenne una sintassi familiare a C e C++, eliminando diverse fonti di complessità: gestione automatica della memoria, niente aritmetica generale dei puntatori e programmi organizzati attorno a classi. Il compilatore produceva bytecode, non codice per uno specifico processore.
Una macchina virtuale eseguiva quel bytecode su ciascun sistema. Il compilatore generava così un programma comune e la VM gestiva le particolarità della piattaforma. Verifica del bytecode e ambiente controllato miravano inoltre a limitare ciò che un programma scaricato poteva fare.
Il Web cambia la traiettoria
Tra 1993 e 1994 il Web si diffuse su computer molto diversi: proprio l’ambiente eterogeneo per cui Oak era stato pensato. Il nome Oak era già protetto e fu sostituito da Java, annunciato nel 1995 con HotJava.
Le applet dimostrarono che lo stesso bytecode poteva essere scaricato ed eseguito su più sistemi. «Write once, run anywhere» riassumeva l’ambizione, senza promettere identità assoluta di librerie, interfacce, versioni della VM o prestazioni.
Le applet sono scomparse per problemi di sicurezza, prestazioni e interoperabilità, ma Java ha trovato un ruolo duraturo nelle applicazioni aziendali, nei server, negli strumenti e indirettamente nell’ecosistema Android.
Un linguaggio definito dai compromessi
Java non inventò singolarmente programmazione a oggetti, garbage collection o macchine virtuali. Il successo derivò dalla loro combinazione coerente. Il typing statico rileva alcuni errori prima dell’esecuzione; la memoria automatica evita la liberazione manuale; le eccezioni strutturano gli errori; la libreria standard offre astrazioni comuni.
Queste scelte hanno costi: una VM aggiunge uno strato, il garbage collector può introdurre pause e la compatibilità limita le semplificazioni radicali. Compilatori JIT, nuovi collector e nuove versioni hanno progressivamente ridotto tali vincoli.
L’interpretazione del bytecode poteva essere lenta. Le VM adottarono quindi la compilazione just-in-time, osservando il programma in esecuzione e traducendo le parti più usate in codice macchina ottimizzato.
Una VM può conoscere percorsi realmente eseguiti, tipi effettivamente incontrati e carico della macchina. Può ottimizzare e revocare alcune decisioni se le ipotesi cambiano.
Anche la sicurezza evolse. Le applet usavano una sandbox, ma le vulnerabilità mostrarono che una frontiera software complessa non è una garanzia assoluta. Il browser cessò gradualmente di essere l’ambiente principale di Java.
Dal 2006 Sun pubblicò gran parte di Java come software libero attorno a OpenJDK, trasformandolo progressivamente in una piattaforma sostenuta da più aziende e comunità.
Il ruolo di Gosling in un’opera collettiva
Gosling è il principale progettista del linguaggio e uno dei suoi portavoce più visibili. Specifica, librerie, VM ed ecosistema sono però il prodotto di molti ingegneri. Patrick Naughton, Mike Sheridan, Bill Joy, Guy Steele e successive squadre Sun ebbero ruoli distinti.
Dopo l’acquisizione di Sun da parte di Oracle, Gosling lasciò l’azienda nel 2010. Lavorò poi, tra gli altri, per Google, Liquid Robotics e Amazon Web Services. Java continuò a evolvere indipendentemente da una sola persona.
Perché James Gosling conta ancora
La sua eredità appare in un’idea oggi comune: distribuire software in una forma intermedia e affidare a un runtime comune portabilità, ottimizzazione e parte della sicurezza.
La JVM ospita oggi anche Kotlin, Scala e Clojure. La sua longevità mostra che l’infrastruttura costruita attorno a Java ha superato il linguaggio iniziale e che strumenti, specifiche, librerie, compatibilità e comunità contano quanto la sintassi.
Cronologia
- 1955: nascita vicino a Calgary.
- 1983: dottorato a Carnegie Mellon.
- 1984: ingresso in Sun Microsystems.
- 1991: progetto Green e progettazione di Oak.
- 1992: dimostrazione del prototipo Star7.
- 1994: riorientamento verso il Web.
- 1995: annuncio pubblico di Java e HotJava.
- 1996: JDK 1.0.
- 2002: ACM Software System Award a Gosling e al team Java.
- 2006: Sun annuncia l’apertura di Java; nasce OpenJDK.
- 2010: Gosling lascia Oracle.
- Oggi: Java e JVM restano piattaforme importanti per software di lunga durata.
Domande frequenti
James Gosling ha creato Java da solo?
No. È il principale progettista, ma Java nasce dal team Green e dal lavoro di molte squadre Sun e contributori esterni.
Perché Oak fu rinominato Java?
Oak era già un marchio utilizzato. Il team scelse quindi un nuovo nome prima dell’annuncio pubblico del 1995.
Java e JavaScript sono collegati?
No. Java viene compilato in bytecode per una VM; JavaScript nacque in Netscape come linguaggio di scripting per il browser. Il nome sfruttò la visibilità di Java.
Cosa significa «Write once, run anywhere»?
Che lo stesso programma compilato dovrebbe funzionare su ogni piattaforma dotata di una VM compatibile. È un obiettivo di portabilità, non la garanzia di dettagli e prestazioni identici.
Java è ancora usato senza le applet?
Sì. Rimane diffuso nei servizi server, nei sistemi aziendali, negli strumenti e nelle infrastrutture. La JVM esegue inoltre altri linguaggi.
Qual è il contributo più duraturo di Gosling?
Aver combinato scelte di linguaggio e runtime attorno a un contratto credibile di portabilità. La longevità della JVM mostra che questa architettura conta almeno quanto la sintassi di Java.