
Lo scorso 21 settembre è stato pubblicato Java 9, a tre anni di distanza dalla rivoluzionaria versione 8. Anche in questa edizione sono state molte le novità, alcune di rilevanza maggiore, altre consistenti per lo più in semplici modifiche al linguaggio: ne vediamo qui le principali, soprattutto quelle che influiscono maggiormente nella vita dello sviluppatore.
Tra le novità più importanti, si annovera senz’altro il sistema modulare. Sinora la maggiore struttura per raccogliere classi era il package utile sia per pianificare internamente i nostri progetti sia per suddividere la piattaforma Java in sezioni dedicate ognuna ad uno scopo (java.io per l’input/output, java.util per strutture dati e altro, etc.). I moduli nascono come una struttura di livello superiore ai package per fornire una nuova organizzazione interna ad applicazioni complesse ed una suddivisione più articolata del JDK stesso. Con i moduli si potrà specificare in ogni pubblicazione dell’applicazione quali componenti devono esser incluse per un build mirato: sia nella realizzazione di applicazioni web sia per la programmazione embedded di dispositivi con risorse limitate.
Un’altra novità molto interessante è la disponibilità ora di un ambiente REPL (Read-Eval-Print-Loop), una console interattiva in cui si può direttamente inserire un comando Java e farlo eseguire. Risponde al comando jshell già disponibile nella cartella bin del JDK ed è una caratteristica richiesta da anni dagli sviluppatori. Tra l’altro, è stato fatto notare, non di rado, che l’assenza di una console virtuale potesse limitare l’adozione di Java in contesti formativi e scolastici che sarebbero stati molto avvantaggiati da un ambiente per la prova immediata delle nozioni acquisite con il conseguente avvicinamento a tecnologie in cui una REPL è sempre esistita, pensiamo a Python.
Sul fronte delle tecnologie di Rete e comunicazione, si registrano diverse novità come:
- avvicinamento ai maggiori standard della rete con l’aggiornamento dei client HTTP per ospitare integrazioni con protocollo HTTP/2 e WebSocket e avanzamento del tool Javadoc che ora produce documentazione in markup HTML5;
- introduzione delle API per il protocollo DTLS (Data Transport Layer Security) nato per scambiare in sicurezza messaggi proteggendoli da contraffazioni ed intercettazioni;
- supporto per la codifica dei caratteri Unicode 8.0;
- classificazione deprecated per le Applet API, già cadute in disuso da molti anni.
Ancora miglioramenti sono stati apportati alle capacità di integrazione di Javascript in applicazioni Java. Il progetto Nashorn che si occupa di tale materia è già stato un’interessante integrazione di Java8 e nella versione 9 del linguaggio si è registrata l’apparizione di nuove parser API per permettere ad IDE ed ambienti esterni di analizzare ed interpretare codice ECMAScript (per interderci, la versione moderna del Javascript) nonché il supporto ad alcune caratteristiche di ECMAScript6 come il ciclo for…of, le parole chiave let o const, le strutture dati Map e Set ed altro ancora.
Inoltre, con Java9 si è avuta una serie di novità nel linguaggio, in settori diversi ma comunque finalizzati a raggiungere una maggiore sinteticità del codice, missione già intrapresa con Java8. Eccone alcune:
- le interfacce (costrutto già ampiamente modernizzato da Java8) ora possono ospitare metodi statici private;
- l’operatore diamond (le parentesi acute vuote <> tipiche dei Generics) può essere usato contestualmente alla creazione di un oggetto anonimo;
- il costrutto try-with-resources può gestire oggetti creati in precedenza senza doverne creare uno nuovo;
- le interfacce Set, List e Map, dedicate alla gestione di strutture dati, acquisiscono il nuovo metodo factory of che permette di creare in maniera agevole degli oggetti immutabili;
- metodo stream() per lavorare con gli Streams sugli elementi Optional.
Insomma, in Java9 di cose interessanti ce ne sono molte. Questa era una rapida carrellata ma non mancheremo di fornire maggiori informazioni con tutorial specifici.
Alla prossima!
No Responses to “Java9: le novità”