Dopu à sei mesi di sviluppu, Oracle liberatu piattaforma JavaSE 14 (Java Platform, Standard Edition 14), u prughjettu open-source OpenJDK hè utilizatu cum'è implementazione di riferimentu. Java SE 14 mantene a cumpatibilità retrocede cù e versioni precedenti di a piattaforma Java tutti i prughjetti Java scritti prima funzionanu senza cambiamenti quandu eseguite sottu a nova versione. Build Java SE 14 pronte per l'installazione (JDK, JRE è Server JRE) preparatu per Linux (x86_64), Windows è macOS. Implementazione di riferimentu sviluppata da u prughjettu OpenJDK Java 14 hè cumplettamente open source sottu a licenza GPLv2, cù eccezzioni GNU ClassPath chì permettenu ligami dinamichi cù i prudutti cummerciale.
Java SE 14 hè classificatu cum'è una versione di supportu generale è continuarà à riceve l'aghjurnamenti finu à a prossima versione. A filiera di Support Long Term (LTS) deve esse Java SE 11, chì continuarà à riceve l'aghjurnamenti finu à u 2026. U ramu LTS precedente di Java 8 serà supportatu finu à dicembre 2020. A prossima versione LTS hè prevista per settembre 2021. Ricurdemu chì, cuminciendu cù a liberazione di Java 10, u prugettu hà cambiatu à un novu prucessu di sviluppu, chì implica un ciculu più curtu per a furmazione di novi versioni. A nova funziunalità hè issa sviluppata in un ramu maestru constantemente aghjurnatu, chì include cambiamenti pronti è da quali rami sò ramificati ogni sei mesi per stabilizzà e novi versioni.
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° currispundenza di mudellu in l'operatore "instanceof", chΓ¬ permette di definisce immediatamente una variabile locale per accede Γ u valore verificatu. Per esempiu, pudete scrive immediatamente "se (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" senza definisce esplicitamente "String s = (String) obj".
Era:
if (obj instanceof Group) {
Group group = (Gruppu) obj;
var entries = group.getEntries();
}
AvΓ pudete fΓ senza a definizione "Group group = (Group) obj":
if (obj instanceof Group Group) {
var entries = group.getEntries();
}
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Β«discugrΓ fica", chΓ¬ furnisce una forma compacta per definisce e classi, chΓ¬ permette di evitΓ di definisce esplicitamente diversi metudi di livellu bassu cum'Γ¨ equals (), hashCode () Γ¨ toString () in i casi induve i dati sΓ² almacenati solu in campi chΓ¬ u cumpurtamentu ΓΉn cambia micca. Quandu una classa usa implementazioni standard di i metudi equals(), hashCode() Γ¨ toString(), pΓ² fΓ senza a so definizione esplicita:
Questa dichjarazione aghjunghje automaticamente implementazioni di i metudi equals(), hashCode() Γ¨ toString() in piΓΉ di i metudi di custruttore Γ¨ getter.
var log = switch (event) {
case PLAY -> Β«User has triggered the play buttonΒ»;
case STOP, PAUSE -> Β«User needs a breakΒ»;
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield Β«Unknown event Β» + message +
Β» logged on Β» + now;
}
};
Exception in thread Β«mainΒ» java.lang.NullPointerException: Cannot invoke Β«Location.getCity()Β»
because the return value of Β«User.getLocation()Β» is null
at NullPointerExample.main(NullPointerExample.java:5):5)