Write Once, Run Anywhere

Java 9

di

thumbnail

23

ott

2017

Anno dopo anno continua a restare sulla cresta dell’onda tra i linguaggi di programmazione. Un’intervista per capire.

Parliamo del linguaggio di programmazione che più ha rivoluzionato il mondo dell’informatica ed è oggi presente in ogni settore tecnologico, software e hardware. L’autore di Java 9 ha preparato un corposo manuale che ne insegna le caratteristiche fondamentali e l’utilizzo. Sentiamo il suo parere sulla situazione odierna di Java nel mondo della programmazione.

Apogeonline: Nona versione… Java ha davvero una lunga storia. Era nato come la realtà del sogno Write Once, Run Anywhere, programmi che girano su qualunque piattaforma. Si persegue ancora quel sogno o l’identità di Java è cambiata?

Pellegrino Principe: Sì, hai ragione, Java ha davvero una lunga e gloriosa storia; ne è infatti passata di acqua sotto i ponti da quando nel lontano 1991, presso la mitica Sun Microsystems, un team di wizard del codice veniva ispirato dalla quercia che si vedeva dalla finestra dell’ufficio di James Gosling (il papà di Java) e davano inizio alla straordinaria rivoluzione del poter scrivere il codice di un programma una sola volta (Write Once) con la “certezza” che lo stesso avrebbe girato in egual modo su tutti i dispositivi hardware (Run Anywhere) dotati di un’apposita virtual machine in grado di capirlo.

Oggi, a distanza di ben 26 anni da quei giorni pionieristici, credo che quel sogno sia diventato un’assoluta realtà, come dimostrano dati che si commentano da soli: Java è il motore di miliardi di device hardware, ha oltre dieci milioni di sviluppatori in tutto il mondo, è la piattaforma principale scelta per la nuova frontiera del cloud development.

Di sicuro Java è oramai un apparato software imponente. Quanto ci è voluto per portare a termine il libro? Quale è stata la difficoltà maggiore?

Per portare a termine il libro su Java 9 ho speso circa dieci mesi di duro lavoro, soprattutto perché ho deciso di rielaborare e dunque riscrivere la parte core del linguaggio al fine di renderla più ricca e approfondita (questo anche grazie ai feedback ricevuti, molti dei quali da tanti studenti universitari che hanno deciso di adottare il mio testo). Per darti un’idea del lavoro svolto: il libro attuale è di circa 850 pagine, un tomo di quasi 200 pagine in più rispetto ai miei libri precedenti su Java. Difficoltà ce ne sono state molte… ma quella maggiore è stata sicuramente legata alla scrittura del capitolo sui moduli, un big topic che mi sono sforzato, in sole 50 pagine, di rendere agevole nella comprensione e snello nella struttura.

E a proposito di imponenza… che cosa ce lo fa preferire a linguaggi almeno in apparenza più snelli e approcciabili, Ruby, Python, Scala…?

Rispetto a Ruby e Python? Le parentesi graffe. Rispetto a Scala? È lui l’originale. Scherzi a parte, senza redigere sterili tabelle di confronto con i predetti linguaggi laddove ciascuno di essi ha di sicuro dei punti di interesse, si può però di sicuro dire che la conoscenza adeguata e professionale di Java è ancora oggi un must imprescindibile per l’accesso al mondo del lavoro nel settore dello sviluppo software (basti pensare, a titolo di esempio, alla notevole quantità di richieste di sviluppatori di app per il sistema operativo Android che, come è noto, si programma tipicamente in Java).

Nel libro è presente ovviamente un capitolo espressamente dedicato ai moduli, la grande novità di questa versione. Di che cosa si tratta, nella versione da un paragrafo, massimo due?

Finalmente ci siamo! È proprio il caso di enfatizzarla, dopo aver aspettato questa importante aggiunta di sostanza rimandata negli anni davvero troppe volte. Grazie ai moduli, in breve, possiamo strutturare un’applicazione Java in modo modularizzato, ossia decomporla in un insieme di componenti software (per l’appunto, in moduli) contenenti codice, dati e soprattutto delle informazioni (sorta di metadati di configurazione) che descrivono le API pubblicamente utilizzabili da altri moduli ma anche le API necessarie al funzionamento dei moduli stessi.

Java 9

Si parla dei nuovissimi moduli. E di tutto il resto.

 

L’indicazione di questa sinergia di API (esportate / richieste) permette, dunque, di progettare un’applicazione Java in modo più robusto, affidabile e scalabile (addio classpath hell!) perché essa sarà costituita solo da moduli tra di loro interagenti e che dovranno sottostare a precise regole così come descritte nei predetti metadati.

Come siamo messi con il reparto mobile per lo sviluppo di app per
iOS e Android? È possibile, comunque, usare il linguaggio Java per
produrre app per smartphone?

Nel reparto mobile in realtà Java la fa da padrone; esso è infatti il linguaggio di elezione utilizzato per sviluppare app native per Android che, ricordiamo, è il sistema operativo per smartphone più diffuso al mondo. Per iOS, beh, il discorso è diverso in quanto per sviluppare app native sono utilizzati tipicamente i linguaggi Objective-C e Swift. Comunque, oggi, anche per iOS è possibile scrivere app utilizzando Java, grazie a framework particolari come, per esempio, l’innovativo Multi-OS Engine ideato addirittura da Intel…

Che cosa apprezzi maggiormente in questo linguaggio? Hai trovato in Java 9 novità particolari che hai gradito in particolar modo? Qual è il tuo stile di utilizzo del linguaggio, tra i vari oramai possibili?

Sono tante le cose che apprezzo di Java e del suo ecosistema e te ne elenco alcune in ordine casuale: una sintassi chiara e semplificata; un modello di OOP robusto e collaudato; la gestione automatica della memoria; il suo interfacciamento con un set impressionante di API; una comunità di sviluppatori immensa cui confrontarsi.

Delle novità di Java 9, mi ha ovviamente entusiasmato l’introduzione dei moduli. Infine, per i miei progetti adotto primariamente lo stile di programmazione proprio del paradigma a oggetti (OOP) con tocchi di programmazione funzionale laddove sia conveniente e opportuno utilizzarla.

Meglio avvicinarsi a Java come primo linguaggio di programmazione, o come non-primo? Hai consigli particolari da dare a chi vuole approcciare Java 9, a parte naturalmente procurarsi il tuo libro?

Questa domanda è per me difficile dato che il mio primo linguaggio di programmazione è stato C… Sarei dunque tentato di dire di approcciare la montagna prima in salita, ma i tempi sono cambiati! Quindi sì, Java è utilizzabile senza problemi come primo linguaggio di programmazione grazie alla sua semplicità e bassa curva di apprendimento iniziale.

Ricordiamo anche che nei principali corsi universitari di informatica di tutto il mondo è insegnato come primo linguaggio per imparare a programmare. Per avvicinarsi a questo linguaggio, infine, oltre alla lettura di un libro serio, rigoroso e scritto con competenza, il consiglio che do sempre, anche quando lo insegno nei corsi, è avere pazienza nella lettura della teoria (quella serve sempre) e fare poi tanta pratica col codice iniziando a scrivere programmi anche banali e di poche righe.

Trovi più comodo lo sviluppo Java su una piattaforma desktop più che su un’altra? È veramente equivalente programmare Java su Windows, macOS o Linux?

Java gira senza problemi su tutte le piattaforme desktop per cui è previsto il relativo JDK. Se a questo aggiungiamo anche la possibilità di usare IDE cross-platform open source potenti e ricchi di feature (per esempio NetBeans o Eclipse) il dado è presto tratto…

Qual è un progetto software realizzato in Java da portare come esempio delle potenzialità del linguaggio? Ci sono progetti open source basati su Java e particolarmente meritevoli?

Ci sono svariati progetti/librerie scritte in Java che meriterebbero di essere menzionate. Provo comunque a elencartene alcune: l’IDE NetBeans, l’application server Tomcat, il build tool Maven, il framework Spring, il tool ORM Hibernate, il framework di unit testing JUnit.

Quanto tempo occorre ragionevolmente per prendere la mano con le novità di Java 9 per un programmatore già esperto? E uno alle prime armi?

Se sei un programmatore esperto, il tempo di apprendimento delle novità di Java 9, soprattutto la modularizzazione, è di sicuro ridotto rispetto a un programmatore novello che dovrà profondere un maggiore impegno e sforzo per cercare di comprenderle e inquadrarle nella giusta prospettiva.

Comunque, quando ci sono novità che impattano in profondità su un linguaggio (ricordiamo l’introduzione dei generici in Java 5 o delle lambda expression in Java 8?), è normale che capiti un attimo di smarrimento; ma non deve spaventare, è il prezzo da pagare – sia per l’esperto che per il neofita – per avere un linguaggio di programmazione sempre moderno, ricco di feature e al passo con i tempi.




Pellegrino Principe (@thp1972) è un programmatore con una profonda passione per tutti quei linguaggi con una sintassi “C-like” e in particolar modo per Java, C/C++, C# e JavaScript. Scrive articoli e tutorial sui più svariati argomenti di programmazione per le principali riviste e siti web del settore IT. È Senior Developer e Docente in Linguaggi di Programmazione presso la Sezione Sviluppo Software del Servizio Informatica del Comando Generale della Guardia di Finanza di Roma. Per Apogeo è autore di C guida alla programmazioneC# 6.0Java 8 e HTML5, CSS3 e JavaScript, editi nella collana Guida completa.

In Rete: www.pellegrinoprincipe.com

Letto 1.411 volte | Tag: , , , , , , ,

Lascia il tuo commento