Come anticipato, le espressioni Lambda sono probabilmente la novità più interessante di questa Major Release; si tratta di una feature, che (a large linee) mette a disposizione la possibilità di manipolare le funzionalità come argomenti dei metodi. Questo tipo di costrutti permettono di definire istanze di interfacce caratterizzate da metodi singoli dette anche interfacce funzionali.

Nel contesto delle interfacce funzionali i metodi predefiniti consentono a nuove funzionalità di prendere parte alle interfacce delle librerie assicurando un buon livello di compatibilità con le versioni più datate delle interfacce stesse; sarà possibile applicare il medesimo tipo di annotation più di una volta nella stessa dichiarazione, inoltre, si potrà impiegare un'annotation ovunque venga utilizzato il tipo ad essa associato e non soltanto in una dichiarazione.

Per quanto riguarda le Collections, cioè gli oggetti per l'aggregazione di dati in unità, Java 8 introduce il nuovo package java.util.stream che fornisce una Stream API per il supporto di operazioni in stile funzionale; l'interfaccia per la programmazione Stream è integrata a sua volta in una Collections API con cui poter effettuare operazioni complesse (ad esempio map-reduce transformations) a carico delle collections stesse.

Ciò non significa naturalmente che, da linguaggio ispirato al paradigma orientato agli oggetti, Java sia diventato ora un linguaggio di tipo funzionale; con la versione 8 esso diventa per alcuni aspetti più simile a soluzioni come Scala, ma dovrebbe garantire comunque retrocompatibilità con le release rilasciate in precedenza e, di conseguenza, con le applicazioni basate su di esse.

Dal punto di vista della sicurezza, con questa nuova versione si ha, tra le altre novità, TLS 1.2 abilitato in modalità predefinita, l'implementazione di algoritmi più efficaci per la criptazione basata su password, il supporto per l'estensione SSL/TLS Server Name Indication in JSSE Server, il supporto per gli algoritmi AEAD (Authenticated Encryption with Associated Data), una maggiore compatibilità con la crittografia NSA Suite B, il supporto per 64-bit PKCS11 in Windows e per il protocollo di rete Kerberos 5. I tipi per la criptazione debole in Kerberos sono invece disabilitati di default.

JavaFX è ora disponibile per le piattaforme ARM; JDK 8 presenta anche l'implementazione del tema Modena, la nuova classe SwingNode per l'embedding di contenuti Swing nelle applicazioni JavaFX, i nuovi controlli UI DatePicker e TreeTableView, (numerose) nuove features per la grafica tridimensionale, un maggior supporto per le features di HTML5 (Web Sockets, Web Workers, Web Fonts..), una migliore gestione dei testi ivi compresi quelli bidirezionali, la trasformazione in un'API pubblica di javafx.css e la classe ScheduledService per il riavvio automatico dei servizi.

Da segnalare anche il Javascript Engine Nashorn, le nuove features per l'internazionalizzazione tra cui il supporto per Unicode 6.2.0, il package Date-Time per la gestione del date-time model, l'implementazione degli strumenti per javadoc con il supporto di una nuova Javadoc Access API, le novità introdotte in JDBC, Java DB (ora in versione 10.10) e per il networking e la concorrenza.

Per una panoramica generale delle nuove funzionalità ufficiali di JDK 8 è possibile consultare l'apposito comunicato di Oracle.

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *