Speciale Java Conference: Java parte per l’ultima frontiera

Workspace

Secondo il creatore di Java, James Gosling, il linguaggio di programmazione potrà offrire il meglio di sé alle estremità della rete. In esclusiva su Vnunet

Tom Sanders, Menlo Park, California In occasione del decimo anniversario del lancio ufficiale di Java, Vnunet ha intervistato James Gosling, creatore del linguaggio e vice president di Sun Microsystems. In particolare, gli abbiamo chiesto quali sono le sfide presenti e passate che il linguaggio ha dovuto affrontare e quali sono i suoi piani personali. Quale sarà l’argomento dominante della conferenza Java One che si terrà in giugno a San Francisco? Sarà la rete e ciò che vi è connesso: il tipo di sinergie che si possono sfruttare quando le estremità della rete diventano insolite. Proprio come è possibile installare dei sensori sul fondo della baia di San Francisco per creare dei modelli predittivi, oppure come il sistema di controllo di un aereo. Il codice Java sta incominciando ad arrivare anche qui e viene connesso alla rete. La direzione in cui sta andando il mondo è costituita da una combinazione tra infrastrutture con server e reti e altri elementi che si collegano all’estremità della rete. Questi elementi potrebbero essere dei desktop e laptop convenzionali, che però mi sembrano le cose più noiose in assoluto da collegare a una rete. Il collegamento di un telefono cellulare è senz’altro un po’ più divertente. Ancora più divertente è collegare alla rete un’automobile. Se i punti di estremità sono realmente diversi, è possibile fare cose interessanti nel settore dei servizi finanziari o dell’assistenza sanitaria. Per esempio, si potrebbero fornire dei servizi finanziari ai poveri che vivono nelle campagne dell’Uganda e vorrebbero avere un prestito di 300 dollari. Devono potersi connettere alle banche. Oppure si potrebbe creare un sistema di assistenza sanitaria dove tutte le risorse vengono utilizzate nel modo appropriato; in questo modo non ci si mette semplicemente in coda al servizio di radiografie più vicino, ma si allocano delle risorse globali. Se il vostro medico vi chiede una radiografia, potete scegliere un servizio di radiografie gratuito invece di mettervi in coda presso quello più vicino. Pensava a questo quando ha creato Java 14 anni fa? No. Tutti gli esempi che ho indicato si riferiscono alla situazione attuale, ma non ho mai pensato che sarebbero potute emergere possibilità come queste. È più difficile creare qualcosa non sapendo come verrà usato dalla gente? Prima di creare Java ho sviluppato molti altri strumenti e ho visto che la gente li usava per cose alle quali non avevo mai pensato. È impossibile prevedere per cosa la gente userà il vostro software. A volte può capitare di pensare che siano semplicemente pazzi, ma in altri casi sembrano incredibilmente brillanti. Uno degli aspetti a cui ho prestato maggiore attenzione durante le prime fasi dello sviluppo di Java è stata la consapevolezza che, pur avendo ben chiaro il modo in cui certe cose avrebbero dovuto funzionare, non volevo limitare il linguaggio a causa di questa visione. È questo che ha portato al successo di Java? Credo di sì. Storicamente, nella progettazione dei sistemi informatici, se è possibile ottenere un miglioramento delle prestazioni compromettendo un po’ la sicurezza o l’affidabilità, spesso si decide di seguire questa strada. Oggi non è più possibile scendere a questi compromessi. Un sistema che può rompersi o che non è sicuro non si può semplicemente usare. Per me, la differenza principale è stata arrivare a rendermi conto che [il prodotto] potrebbe essere usato da mia mamma o dai miei bambini. In questo caso, la sicurezza e l’affidabilità diventano più importanti di molte altre caratteristiche dei normali sistemi informatici. Esiste qualche applicazione che attualmente non è possibile creare usando Java? Dov’è la frontiera? Non credo che esista una frontiera nel senso di ciò che non si può fare. Le cose sono difficili per motivi che non hanno niente a che fare con Java. Come si sviluppa il software che controlla l’avionica in un aereo, oppure il software in un’automobile? Qui Java funziona molto bene, ma esiste un’intera area relativa all’affidabilità e al testing di un software. Soprattutto quando un bug può portare alla morte di 600 persone. La FAA (Federal Aviation Authority) adotta uno schema di testing estremamente costoso e complesso. Come si può fare per semplificare il testing fino ad arrivare a un livello di fiducia ben superiore a quello che [caratterizza ciò che] la gente fa su un sito Web? Uno dei motivi per cui mi piace lavorare con i ragazzi del JPL (jet propulsion labs) è che hanno a che fare con qualcosa che semplicemente non si può sottoporre a testing. Deve semplicemente funzionare, e basta. Si può fare qualsiasi tipo di simulazione, ma niente può essere uguale a un vero atterraggio su Marte. Inoltre non c’è una seconda possibilità, dal momento che avete già bruciato i vostri 100 milioni di dollari. La maggior parte dei loro insuccessi dipendono dal fatto che, in realtà, su Marte le cose sono diverse. Quali tipi di progressi possiamo aspettarci da Java nel prossimo futuro? Tutto è già stato definito. C’è una parte del linguaggio che stiamo cercando di mantenere stabile. Buona parte dei nostri sforzi sono dedicati alle librerie e alla macchina virtuale. Negli ultimi dieci anni, le librerie sono cresciute con una velocità straordinaria e non c’è nessun segno di rallentamento. Nell’implementazione della macchina virtuale, le questioni relative a prestazioni, affidabilità e scalabilità rappresenteranno sempre un problema importante per noi. Attualmente siamo focalizzati soprattutto sulla porzione delle prestazioni relativa alla capacità di scalare; per esempio, in che modo il software viene eseguito sui sistemi multiprocessore veramente grandi. Se si guarda il mondo desktop, si può vedere che i desktop multiprocessore stanno diventando piuttosto standard. Gli schemi dei chip previsti per i prossimi anni sono tutti multiprocessore. Java è stato ottimizzato piuttosto bene per i sistemi multiprocessore simmetrici a 2-4-8 [vie]. In ogni caso, quando si usano [i sistemi multiprocessore] più grandi bisogna affrontare ogni tipo di difficoltà; per esempio, come renderli gestibili e ‘strumentabili’. È realmente necessario fare il debugging del codice nel momento in cui viene implementato attivamente. La parte più difficile è fare in modo che la strumentazione sia sempre disponibile. Stiamo introducendo proprio questo nel Java Development Kit 5.1. Abbiamo attivato le funzionalità di tracing e di profiling a un costo molto contenuto. La funzionalità di debugging è la più richiesta? Il debugging ormai c’è. In ogni caso, la gente chiede prestazioni sempre migliori e più testing. C’è da portare a termine molto lavoro sui protocolli WS-*. Immagino che finiranno per diventare degli elementi centrali dell’engineering. Che cosa farebbe adesso se in precedenza non avesse lavorato a Java? Probabilmente mi dedicherei alla grafica: rendering, animazione, modellazione 3D. L’ho fatto per parecchi anni. Mi sono occupato molto di queste cose prima di arrivare in Sun. Mi dedicavo amorevolmente all’anti-aliasing dei font e a questo tipo di problemi. Nessuna intenzione di riprendere questa attività? Per un certo tempo continuerò a essere concentrato su Java. È difficile prevedere quali future direzioni potrà prendere la mia strada, ma per adesso Java è troppo divertente. C’è della gente che lo usa per fare cose assolutamente inverosimili. L’aspetto più divertente in assoluto è quando incontro qualcuno che sviluppa cose che sono veramente il massimo. Vorrebbe poter fare di più? Sì, vorrei fare di più ma purtroppo non è possibile, dal momento che in un giorno ci sono soltanto 24 ore. Ma come si potrebbe mai decidere cosa fare? C’è ogni sorta di cose di cui bisognerebbe occuparsi. In ogni caso, io mi dedico a un bel po’ di programmazione. In genere mi occupo delle cose piccole, perché a mio parere non è una buona idea arrivare alla linea critica per qualsiasi prodotto. Evito di fare altro perché non riuscirei a rispettare le scadenze.

Autore: ITespresso
Clicca per leggere la biografia dell'autore  Clicca per nascondere la biografia dell'autore