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