L`evoluzione di Java: verso Java 8

MokaByte 171 - Marzo 2012
L’evoluzione di Java: verso Java 8
I parte: Il caffè... da una quercia
Abstract: Java SE 7 rappresenta un importante momento evolutivo per la piattaforma Java, sia dal punto di vista
tecnico, sia da quello politico-organizzativo. Nei diversi articoli di questa serie analizzeremo mese dopo mese la
nascita del linguaggio Java, i suoi sviluppi nelle varie versioni, le novità e le caratteristiche della recente versione 7,
e anche quello che si vede all’orizzonte per la futura versione 8. In questo primo articolo proponiamo una
panoramica del corso degli eventi che hanno portato alla nascita di Java: conoscere la propria storia è
fondamentale per capire da dove siamo venuti e, forse, dove stiamo andando.
tags: storia
Java
linguaggio
Object Oriented
Oak
Java 7
Green Team
Numero visite: 2294
di
Luca Vetti Tagliati
Introduzione
L’importanza della storia? Incalcolabile. Non conoscere la storia, anche la propria storia, è come rimanere bambini
a vita. "Ignorare che cosa sia accaduto prima della nostra nascita significa restare sempre bambini" [1].
Possiamo applicare questo alto concetto anche al nostro mondo fatto di programmazione e sviluppo: non sapere
che cosa sia accaduto prima della versione Java 1.0 (e anche dopo...) equivale a rimanere programmatori junior per
sempre. Per approfondire la sua competenza, uno sviluppatore Java deve anche collegare le sue conoscenze
tecniche alle versioni precedenti del linguaggio e può farlo attraverso la memoria di Internet. Se non si studia,
metodicamente, la via percorsa dagli architetti e sviluppatori Java o almeno dalla piattaforma JDK, si rischia di
perdere il significato fondamentale di alcuni passaggi e quindi anche il loro effetto sull’attuale panorama dei
linguaggi di programmazione.
Ai fini di comprendere lo sviluppo, i punti fermi, i ripensamenti e anche la possibile evoluzione del linguaggio Java,
nei prossimi numeri ci concentreremo sulle passate versioni di Java e, soprattutto, sulle caratteristiche della attuale
versione Java 7. Ma iniziamo questa serie di articoli con un racconto della preistoria del linguaggio quando Java
non si chiamava neanche Java e la ormai scomparsa Sun Microsystems era scossa da una certa inquietudine e
frustrazione generata dalla difficoltà di utilizzare il linguaggio C e C++ per la programmazione soprattutto di
dispositivi elettronici "intelligenti".
04/10/12 MokaBy te 171 - Marzo 2012 - L’ev oluzione di Jav a: v erso Jav a 8
Sebbene Java sia conosciuto ai molti a partire dal 1996, quando iniziò a circolare la versione 1.0, il progetto iniziale
partì tra il 1990-91, e conobbe periodi di difficoltà e grandi ripensamenti fino all’esplosione di Internet, che finì per
catapultare la piattaforma Java alla ribalta della programmazione OO.
Nel prossimo articolo, proseguiremo con la presentazione ragionata delle varie versioni del linguaggio Java che si
sono via via succedute, non esenti da repentini cambiamenti di strategia, fino a giungere alla versione Java SE 8, il
cui rilascio è stato fissato per l’estate del 2013. Gli articoli centrali della serie entreranno nel dettaglio delle feature
introdotte a partire dalla versione Java SE 7.
Agli albori c’era la "quercia"
Oak (in italiano "quercia") è il nome del linguaggio di programmazione che ha dato il via a Java, linguaggio di cui
James Gosling è considerato il "padre". È risultato di un progetto interno, il famoso Green Project, in quella che fu
Sun Microsystem (chi lo avrebbe mai immaginato che un giorno avremmo parlato della "mitica" Sun Microsystem
come di un’azienda estinta?). Il nome di questa versione embrionale di Java fu dovuto a un albero di quercia, "oak"
appunto, situato fuori all’ufficio su Sand Hill Road, Menlo Park, California, dove una elite di 14 professionisti della
Sun Microsystem si riunì nell’aprile 1991 per ideare il linguaggio che avrebbe dovuto rimpiazzare il C++.
Figura 1 - Una immagine di James Gosling, considerato il "padre" di Java.
Il tutto ebbe inizio nel lontano dicembre 1990 quando importanti ingegneri della Sun Microsystem, tra cui Patrick
Naughton, erano sempre più frustrati per via dell’utilizzo del linguaggio C++ e del suo predecessore C, per la
programmazione di dispostivi elettronici intelligenti. Per evitare che Naughton lasciasse l’azienda (aveva già
instaurato trattative con la NeXT), nel gennaio del 1991 gli fu offerto di lavorare a un nuovo progetto, lo Stealth
Project, nome deciso da McNealy, presidente della Sun Microsystem. In gergo aziendale, i progetti "stealth" sono
quelli creati dalle aziende in segreto per evitare la "fuoruscita" di informazioni sullo stato, mission, membri, etc. del
progetto.
Da "stealth" a "green"
James Gosling e Mike Sheridan si unirono a Naughton poche settimane dopo,il 1 febbraio 1991, e il progetto fu
rinominato in un meno "spionistico" Green Project [3]. Secondo Gosling [11] la mission di questo progetto doveva
essere di pensare, comprendere e quindi indirizzare e sfruttare il prossimo trend tecnologico (the "next wave").
Secondo gli studi iniziali del team, l’evoluzione tecnologica avrebbe dovuto investire la logica di gestione dei
dispositivi di largo consumo. Naughton, Gosling e Sheridan, membri dell’original Green Team, si organizzarono
come segue:
Gosling si dedicò al linguaggio di programmazione; in particolare, aveva l’incarico di coniare nuove idee e
sperimentare possibili soluzioni;
Naughton si occupava della parte grafica;
2/16
MokaBy te 171 - Marzo 2012 - L’ev oluzione di Jav a: v erso Jav a 8
Sheridan aveva la responsabilità di pianificare e gestire gli sviluppi business.
Inizialmente, Gosling considerò l’utilizzo del C++; tuttavia questa idea fu respinta senza indugio per via di una serie
di considerazioni, tra cui le più importanti erano la necessità di disporre di un linguaggio capace di funzionare in
ambienti embedded, caratterizzati da un’endemica scarsità di risorse, senza dover richiedere particolari sofismi agli
sviluppatori; la mancanza di un dispositivo automatico di allocazione/deallocazione della memoria (Garbage
Collector), problema considerato cardine e generatore di bug nei programmi scritti in C; la mancanza di abilità
native di networking, threading, e soprattutto di trasporto su diverse piattaforme. Scartata l’opzione C++, il tentativo
successivo consistette nel cercare di modificare il C++, rimuovendo alcune parti e introducendone altre. La versione
che ne doveva nascere fu ribattezzata C++ -- ++" [4], dove "++" indicava le nuove feature da aggiungere, mentre il "--"
rappresentava quelle da rimuovere.
Anche questo tentativo fallì dopo qualche iterazione, cosicche’, nel Giugno 1991, Gosling iniziò a lavorare a un nuovo
linguaggio: Oak, con l’obiettivo di sfruttare il meglio dei linguaggi OO esistenti (Cedar-Mesa, SmallTalk, Objective
C, C++ ed Eiffel). In particolare, gli sforzi si concentrarono nello sviluppo dell’interprete Oak, scritto in C.
Nell’agosto del 1991, il Green Team tenne una prima dimostrazione ai co-fondatori di Sun Microsystem, Scott
McNealy e Bill Joy, riuscendo a mostrare alcune idee base e feature della GUI. Si trattava della prima applicazione
funzionante (o quasi) scritta in Oak.
Tabella 1 - I membri del Green Team, in ordine alfabetico.
L’estate del 1992 fu caratterizzata da uno sviluppo forsennato. Naughton dichiarò [15] che si trattò di "massive
amounts of hacking on Oak, the Green OS, the UI, and the hardware" che permise al team di mettere insieme
diverse componenti della nuova piattaforma, incluso il Green Operating System, il linguaggio Oak, varie librerie e
l’hardware. Il primo tangibile risultato fu dimostrato il 3 settembre 1992 con la costruzione di un PDA (Personal
www2.mokaby te.it/cms/article.run?permalink=mb171_jav aev olution-1
3/16
04/10/12 MokaBy te 171 - Marzo 2012 - L’ev oluzione di Jav a: v erso Jav a 8
Digital Assitant) chiamato star7 o *7, basato su SPARC, il quale disponeva di un’interfaccia grafica e di un agente
intelligente denominato Duke, ideato da Joe Palrang, con l’incaricato di assistere l’utente nell’utilizzo del dispositivo.
Figura 2 - Il membri del team Java al barbeque organizzato da Gosling [11] per celebrare il quinto anno dalla
creazione della prima versione funzionante di Oak. Da sinistra a destra e dall’alto verso il basso: Al Frazier, Joe
Palrang, Mike Sheridan, Ed Frank, Don Jackson, Faye Baxter, Patrick Naughton, Chris Warth, James Gosling,
Bob Weisblatt, David Lavallee e Jon Payne.
Nuove direzioni: TV e Internet
Qualche tempo dopo, arrivò il primo cambio di direzione di Oak (e non sarà l’unico!): la Sun Microsystem decise di
crare una "spin-off" company denominata FirstPerson dove confluirono diversi dipendenti della NeXT, con l’obiettivo
di conquistare, attraverso la piattaforma Oak, il mercato della TV interattiva. Quindi l’obiettivo primario non era più la
logica di controllo degli elettrodomestici di largo consumo, ma la TV interattiva via cavo. Questa nuova strategia fu
largamente influenzata dalla decisione di Time Warner di avviare una serie di sperimentazioni di TV interattiva via
cavo.
Un evento importante che indubbiamente segnò la storia di Java, e che ha cambiato il nostro stile di vita, fu il
rilascio nel 1993 del primo browser internet grafico: NCSA Mosaic 1.0 (aprile 1993). La disponibilità di un browser
Internet grafico relativamente user-friendly, che nascondeva la sequenza di oscuri comandi Unix, è da molti
considerata tra le ragioni alla base dell’esplosione di Internet negli anni seguenti. Ma è anche uno degli eventi che
favorì il grande successo di Java.
Nel giugno del 1994, un fulmine si abbattè sulla quercia. La cronaca riporta che ci fu una lunga serie di trattative e
negoziazioni, di positivi test tecnici che portarono al riconoscimento della superiotà tecnica della piattaforma Oak.
Ciò nonostante, per lo sviluppo della propria piattaforma di TV interattiva via cavo, la Time Warner optò per l’utilizzo
della piattaforma proposta dalla SGI, Silicon Graphics Inc, anche denominata Silicon Graphics Computer System
SGCS (l’azienda produttrice di soluzioni hardware e software ad alta prestazione che inizialmente si rivolgeva
primariamente al mercato della grafica 3D).
A questo punto veniva a mancare il primo importante cliente per la piattaforma Oak; pertanto, Naughton diede luogo
www2.mokaby te.it/cms/article.run?permalink=mb171_jav aev olution-1
4/16
04/10/12
a una lunghissima serie di "perigrinaggi" in giro per il mondo per cercare clienti interessati alla piattaforma Oak. A
questo grande dispiego di energie, ahime’, non corrisposero significativi risultati, almeno in termini commerciali.
Ecco quindi che si rendeva necessaria l’eleborazione di una nuova strategia. Nel giugno e luglio 1994, dopo tre
giorni di brainstorming, a cui parteciparono John Gage, direttore del Science for Sun Microsystem, Gosling, Joy,
Naughton, Wayne Rosing, e Eric Schmidt, il team decise si cambiare nuovamente gli obiettivi decidendo di
muovere verso una piattaforma per il World Wide Web. Ritennnero che grazie all’avvento dei browser web grafici,
come Mosaic, Internet era ormai nel suo cammino verso il grande successo.
E dalla quercia venne il caffè
Nel settembre del 1994, Jonathan Payne e Naughton scrissero (in un weekend di hacking ispirato) un prototipo di
browser denominato WebRunner (dal nome del film Blade Runner), ribattezzato in seguito in HotJava.
Nell’autunno del 1994 Arthur von Hoff implementò il primo compilatore Java scritto interamente in Java,
sostituendo la versione precedente scritta da Gosling in C. Van Hoff era entrato nel team nel settembre del 1993
con l’obiettivo di sviluppare software per la TV interattiva, finendo invece per dedicare la quasi totalità del suo tempo
al disegno di Oak. Nello stesso periodo, Sami Shaio iniziò a lavorare alla libreria GUI Abstract Window Toolkit.
(AWT). A questo punto l’intera piattaforma, a parte il solo interprete, era scritta in Java.
Oak fu poi ribattezzato in Java nel 1994: il nuovo nome fu ideato dalla responsabile marketing del "prodotto", Kim
Polese [10]. A seguito degli esiti di una ricerca sui marchi di fabbrica registrati, si apprese che il nome Oak era già
stato utilizzato da un’altra azienda IT: la Oak Technology.
La versione Java 1.0a fu resa disponibile per il download nel 1994. La prima release pubblica di Java fu la 1.0a2
accompagnata dal browser HotJava il 23 maggio 1995 come annunciato da Gage nella conferenza SunWorld.
Questo annuncio fu accompagnato da un comunicato a sorpresa da parte di Marc Andreessen, vice presidente
esecutivo di Netscape Communications Corporation, il quale dichiarò che Netscape avrebbe incluso Java.
Nel settembre del 1995 Sun Microsystem sponsorizzò quella che può essere considerata la prima conferenza sullo
sviluppo in Java a New York City. Nel dicembre del 1995 importanti gruppi come Borland, Mitsubishi Electronics,
Sybase e Symatec, ai quali più tardi si aggiunse anche Adobe, seguirono l’esempio della Toshiba, decidendo di
voler supportare Java. Il 9 gennaio 1996, la Sun Microsystem decise di formare il gruppo JavaSoft per continuare lo
sviluppo della tecnologia Java. Il resto è storia, ed è argomento del prossimo articolo, in cui vedremo le
caratteristiche delle varie versioni della piattaforma.
www2.mokaby te.it/cms/article.run?permalink=mb171_jav aev olution-1
5/16
04/10/12 MokaBy te 171 - Marzo 2012 - L’ev oluzione di Jav a: v erso Jav a 8
Tabella 2 - La cronologia degli eventi principali che portarono alla nascita di Java.
www2.mokaby te.it/cms/article.run?permalink=mb171_jav aev olution-1
6/16