Blog image

Evoluția JDK (de la 9 la 24)

🔹 JDK 9 (2017) față de JDK 8

  • Project Jigsaw (Module System) – introducerea modulelor (module-info.java), pentru a organiza aplicațiile mari.
    ➝ Exemplu: requires java.sql; în fișierul module-info.java.

  • JShell (REPL) – primul „laborator” Java direct în terminal, unde poți testa cod rapid fără clasă main.

  • API Stream îmbunătățit – metode noi ca takeWhiledropWhileiterate.

  • Interfața Collection → metodă of() pentru a crea colecții imutabile.


🔹 JDK 10 (2018)

  • Local-variable type inference (var) – poți scrie:

    var list = new ArrayList<String>();
  • Garbage Collector Improvements – introducere G1 GC ca default.

  • Application Class-Data Sharing → pornește aplicațiile mai rapid.


🔹 JDK 11 (2018, LTS)

  • String API nou – metode: isBlank()lines()repeat().

  • HTTP Client API (standard, finalizat după preview în JDK 9/10).

  • Eliminări: JavaFX și JEE modules (mutate în afara JDK).

  • Nest-based access control → pentru acces între clase „interioare”.


🔹 JDK 12 (2019)

  • Switch Expressions (preview) – switch poate returna valori:

    int num = switch(day) { case MONDAY -> 1; default -> 0; };
  • Shenandoah GC (experimental) – GC cu pauze foarte scurte.


🔹 JDK 13 (2019)

  • Text Blocks (preview) – scrii stringuri multiliniar:

    String html = """ <html> <body>Hello</body> </html>""";
  • Switch expressions îmbunătățite.


🔹 JDK 14 (2020)

  • Records (preview) – clase simple pentru date:

    record Point(int x, int y) {}
  • Pattern Matching pentru instanceof (preview):

    if (obj instanceof String s) { System.out.println(s.length()); }
  • JEP 358: Helpful NullPointerExceptions (arată exact unde a fost null).


🔹 JDK 15 (2020)

  • Sealed Classes (preview) – controlezi ce clase pot extinde o clasă:

    sealed class Shape permits Circle, Square {}
  • Text Blocks devin standard.

  • Hidden Classes – utile pentru frameworks.


🔹 JDK 16 (2021)

  • Records devin oficiale.

  • Pattern Matching instanceof devine standard.

  • Vector API (incubator) – performanță pentru calcule numerice.


🔹 JDK 17 (2021, LTS)

  • Sealed Classes oficiale.

  • Pattern Matching pentru switch (preview).

  • JEP 356: Pseudo-Random Number Generators – API nou pentru RNG.

  • Noi GCs: ZGC și Shenandoah devin „production-ready”.

  • Security: Strong encapsulation pentru JDK internals.


🔹 JDK 18 (2022)

  • Simple Web Server pentru prototipuri (linie de comandă).

  • UTF-8 by default → standardizarea encodării.

  • Code snippets în JavaDoc.


🔹 JDK 19 (2022)

  • Virtual Threads (preview, Project Loom) – mii/milioane de fire ușoare.

  • Record Patterns (preview).

  • Pattern Matching for switch (preview).

  • Foreign Function & Memory API (preview, Project Panama).


🔹 JDK 20 (2023)

  • Scoped Values (preview) – alternativă modernă la ThreadLocal.

  • Record Patterns îmbunătățite.

  • Continuare la Loom și Panama.


🔹 JDK 21 (2023, LTS)

  • Virtual Threads oficiale.

  • String Templates (preview) – interpolare stringuri:

    String name = "Ana"; String msg = STR."Hello \{name}";
  • Pattern Matching pentru switch oficial.

  • Sequenced Collections – colecții ordonate cu API unificat.

  • Generational ZGC.


🔹 JDK 22 (2024)

  • Statements before super(...) în constructor.

  • Unstoppable threads improvements.

  • Vector API și Foreign Function & Memory API continuă.


🔹 JDK 23 (2024)

  • Stream Gatherers API (incubator) – extinde Stream cu operații noi.

  • Class-file API (preview) – manipulare ușoară a bytecode-ului.

  • Primul preview al Value Objects (Valhalla).


🔹 JDK 24 (2025)

  • Valhalla Progress – value objects continuă în preview.

  • String Templates îmbunătățite (preview 2/3).

  • Performance improvements la virtual threads.

  • API-uri mai stabile pentru Panama (Foreign Memory/Function).