JDK 1.0 (1996)
- Caratteristica principale: Rilascio iniziale.
- Novità: Introduzione delle basi del linguaggio, della JVM, del multithreading e delle primitive di I/O.
JDK 1.1 (1997)
- Caratteristica principale: Introduzione delle classi interne.
- Novità: Classi interne (inner classes), JavaBeans, la riflessione e l’API JDBC.
J2SE 1.2 (1998)
- Caratteristica principale: Il Java Collections Framework.
- Novità: Strutture dati standard (liste, mappe, insiemi) e compilazione JIT per migliorare le prestazioni della macchina virtuale.
J2SE 1.3 (2000)
- Caratteristica principale: Interfaccia JNDI.
- Novità: Supporto per RMI e introduzione dell’API JavaSound.
J2SE 1.4 (2002)
- Caratteristica principale: Logging API.
- Novità: Introduzione di
assert, espressioni regolari e pacchettojava.nioper l’I/O ad alte prestazioni.
Java 5 / JDK 1.5 (2004)
- Caratteristica principale: Riconfigurazione radicale del linguaggio.
- Novità: Generics, annotazioni, enumerazioni, ciclo for-each, autoboxing e varargs.
Java 6 (2006)
- Caratteristica principale: Ottimizzazione delle prestazioni.
- Novità: Miglioramenti nel compilatore JIT, supporto per script engine e aggiornamento dei Web Services.
Java 7 (2011)
- Caratteristica principale: Progetto Coin.
- Novità: Gestione automatica delle risorse nel blocco try-with-resources, stringhe negli
switch, e supporto per la concorrenza con il framework Fork/Join.
Java 8 (2014)
- Caratteristica principale: Programmazione funzionale.
- Novità: Espressioni Lambda, API Stream, metodi di default nelle interfacce e nuova API Date/Time.
Java 9 (2017)
- Caratteristica principale: Sistema di moduli (Project Jigsaw).
- Novità: Modularizzazione del JDK e della piattaforma, insieme alla JShell (REPL).
Java 10 (2018)
- Caratteristica principale: Inferenza dei tipi.
- Novità: Parola chiave
varper variabili locali.
Java 11 (2018)
- Caratteristica principale: Prima versione LTS dopo il cambio di ciclo di rilascio semestrale.
- Novità: Metodo
varanche nelle espressioni lambda e rimozione di moduli deprecati (come CORBA e Java EE).
Java 12 (2019)
- Caratteristica principale: Espressioni Switch (anteprima).
- Novità: Introduzione del Garbage Collector Shenandoah.
Java 13 (2019)
- Caratteristica principale: Blocchi di testo (anteprima).
- Novità: Raffinamento dell’espressione switch.
Java 14 (2020)
- Caratteristica principale: Record e Pattern Matching (anteprime).
- Novità: Gestione avanzata dei
NullPointerExceptionse rimozione del Garbage Collector CMS.
Java 15 (2020)
- Caratteristica principale: Classi sigillate (anteprima).
- Novità: Rimozione delle estensioni Nashorn JavaScript.
Java 16 (2021)
- Caratteristica principale: Record e Pattern Matching per
instanceofresi definitivi. - Novità: Pacchettizzazione con
jpackage.
Java 17 (2021)
- Caratteristica principale: Nuova versione LTS.
- Novità: Pattern Matching per
switch(anteprima), classi sigillate definitive e incapsulamento rigoroso delle API interne.
Java 18 (2022)
- Caratteristica principale: UTF-8 come set di caratteri predefinito.
- Novità: Server HTTP semplice integrato.
Java 19 (2022)
- Caratteristica principale: Progetto Loom (anteprime).
- Novità: Thread virtuali e pattern matching per
record.
Java 20 (2023)
- Caratteristica principale: Ulteriori affinamenti su pattern matching e thread virtuali.
- Novità: Vector API (quinta incubazione).
Java 21 (2023)
- Caratteristica principale: Nuova release LTS.
- Novità: Thread virtuali definitivi, pattern matching per
switchdefinitivo e sequenze di collezione.
Java 22 (2024)
- Caratteristica principale: Gestione della memoria e programmazione avanzata.
- Novità: Foreign Function & Memory API (per interagire con codice e memoria fuori dalla JVM in modo sicuro), espressioni e istruzioni prima di
this(...)(anteprima), e Stream Gatherers (anteprima per operazioni complesse sugli stream).
Java 23 (2024)
- Caratteristica principale: Semplificazione della scrittura del codice.
- Novità: Primitive nei pattern matching,
instanceofeswitch(terza anteprima), e classi di dichiarazione implicita e metodi principali di istanza (anteprima per rendere il codice iniziale molto più conciso).
Java 24 (2025)
- Caratteristica principale: Modernizzazione del codice e miglioramento delle prestazioni.
- Novità: Vector API (ottava incubazione) e consolidamento delle funzionalità introdotte nelle release precedenti, insieme a miglioramenti nelle prestazioni del Garbage Collector G1.
Java 25 (2025)
- Caratteristica principale: Nuova versione LTS (Long-Term Support).
- Novità: Stabilizzazione definitiva di numerose funzionalità sperimentali, miglioramenti di produttività per i thread virtuali e semplificazione della gestione dei moduli.
