Dal lento alla lambda

Il “nuovo Cobol” si leva da un letargo decennale

di

thumbnail

26

feb

2014

In arrivo un aggiornamento di Java che chiarirà il futuro e la vitalità di un linguaggio con molto seguito (e concorrenza).

18 marzo 2014. Se siete sviluppatori Java, segnatevi in agenda questa data perché è quella che vedrà, dopo dieci lunghi anni, il più importante aggiornamento finora rilasciato per il vostro linguaggio di riferimento.

Nel 2004 le grandi novità erano Annotations e Generics, mentre questa volta saranno le Lambda expression e, in generale, una timida transizione del linguaggio verso la programmazione funzionale a cambiare il vostro modo di scrivere codice. Ha dichiarato Mark Reinhold, chief architect per Java presso Oracle:

Qualcuno dirà che si aggiungono le espressioni lambda per stare dietro ai linguaggi di moda e in questo c’è della verità. Ma la ragione autentica è che le lambda sono il sistema migliore per maneggiare i processori multicore.

Dal 2005, con il raggiungimento del limite fisico di riduzione delle dimensioni dei transistor, è stato possibile aumentare la potenza di calcolo nelle CPU soltanto con la moltiplicazione dei core, che come conseguenza ha dato una spinta alla programmazione concorrente. I linguaggi funzionali per loro natura semplificano la scrittura di codice capace di sfruttare le CPU multicore eliminando errori tipici – ad esempio le race condition – e questo spiega l’esplosione della loro diffusione negli ultimi anni, tanto che linguaggi come Erlang, una volta relegati ad ambiti molto tecnici, adesso stanno attirando sempre più programmatori.

Java, da alcuni considerato il nuovo Cobol per la sostanziale immobilità e la forte penetrazione in mercati enterprise, con il rilascio di queste novità è quindi da considerarsi al riparo dalla minaccia dei suoi competitor? Difficile da dire, ma sicuramente queste aggiunte colmano almeno una parte della capacità espressiva dei cool kids, i linguaggi di tendenza di cui parla Reinhold in originale.

JVM in piena forma

In grande salute è invece la Java Virtual Machine (JVM). Originariamente pensata per eseguire bytecode generato dalla compilazione di codice Java, è stata poi sempre più utilizzata per bytecode generato da programmi scritti in altri linguaggi.

A riprova di quanto questo fosse importante, una delle più significative novità di Java 7 è stata l’introduzione di invokedynamic, che permette di creare forti ottimizzazioni anche nell’esecuzione di bytecode prodotto dalla compilazione di linguaggi con i tipi dinamici.

Ruby, Python, JavaScript, Clojure e Scala sono alcuni dei linguaggi eseguibili sulla JVM al posto di Java. Scala, in particolare, sta guadagnando importanti fette di mercato in uno dei segmenti tradizionalmente presidiati da Java.

Il nuovo ecosistema formatosi attorno alla JVM e che di fatto facilita il passaggio da un linguaggio a un altro mantenendo alcune caratteristiche comuni, sarà determinante per capire il futuro di Java. L’appoccio funzionale in Java 8 sicuramente sveglierà dal torpore una parte dei programmatori. Quelli che vorranno osare di più avranno un percorso di migrazione facilitato verso uno dei linguaggi moderni disponibili sulla JVM, e questo è un vantaggio non da poco. In tutti i casi Java e soprattutto la JVM sono destinati a rimanere per molti anni ancora.




Andrea C. Granata (@andreacgranata) ha pigiato i primi tasti su un bianco VIC20 quando ancora Internet era in fasce. Un po’ sistemista un po’ sviluppatore, ha una passione per FreeBSD, programmazione in Ruby, metodologie Agile e infrastrutture cloud. Si occupa di Enterprise Architecture e di DevOps per una delle più importanti banche italiane. Nel tempo libero si divide tra la passione per la cucina, il pattinaggio di figura e i viaggi in Oriente.

Letto 4.629 volte | Tag: , , , , , , , , , , , , ,

Lascia il tuo commento