Java 10: Neue Features, Release-Modell & OpenJDK-Fokus im Überblick
Neues Release-Modell: 6-Monate-Zyklus & LTS
Java 10 (erschienen 20. März 2018) markiert den Übergang zu einem zeitbasierten Release-Modell: alle 6 Monate ein neues Feature-Release (März & September). Alle 3 Jahre (ab Sept. 2018) erscheint ein LTS-Release (Long Term Support) mit 3 Jahren Support – primär für Produktionseinsätze. Java 11 war das erste LTS nach diesem Modell.
Oracle JDK vs. OpenJDK
- Oracle JDK: Proprietär, Lizenzbeschränkungen, LTS-Versionen erscheinen verzögert (nach 3 Jahren).
- OpenJDK: Offizielles Referenz-Implementierung, Community-getrieben, alle 6 Monate neue Builds, Cloud/Container-freundlich (frei redistribuierbar).
Ab Java 10 fördert Oracle OpenJDK als primäre JDK. Java 9 & 10 sind Non-LTS.
Wichtigste neue Features (JEPs)
| JEP | Feature | Beschreibung |
|---|---|---|
| JEP 286 | Local Variable Type Inference | var für lokale Variablen mit Typinferenz. |
| JEP 322 | Time-Based Release Versioning | Neues Versionsschema $FEATURE.$INTERIM.$UPDATE.$PATCH. |
| JEP 304 | Garbage-Collector Interface | Pluggable GC-Implementierungen, saubere Code-Isolation. |
| JEP 307 | Parallel Full GC for G1 | G1 nutzt parallele Threads für Full GC (Fallback). |
| JEP 316 | Heap Allocation on Alternative Memory Devices | -XX:AllocateHeapAt=<pfad> für NV-DIMM u. ä. |
| JEP 296 | Consolidate JDK Forest into Single Repository | Ein Repository statt acht (root, corba, hotspot, …). |
| JEP 310 | Application Class-Data Sharing (AppCDS) | Anwendungs-Klassen in Shared Archive für schnelleren Start. |
| JEP 314 | Additional Unicode Language-Tag Extensions | Locale-Erweiterungen: cu (Währung), fw (Wochentag), rg (Region), tz (Zeitzone). |
| JEP 319 | Root Certificates | OpenJDK enthält nun Standard-Root-CAs (TLS funktioniert out-of-the-box). |
| JEP 317 | Experimental Java-Based JIT Compiler (Graal) | Aktivierbar via -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler. |
| JEP 312 | Thread-Local Handshakes | Einzelne Threads anhalten ohne globalen Safepoint (x64/SPARC). |
| JEP 313 | Remove Native-Header Generation Tool (javah) | javah entfernt; javac -h nutzen. |
Zusätzlich wurden 70+ APIs erweitert, veraltete APIs/Optionen entfernt (siehe separate Artikel).
Java
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
- Java Programmiersprache: Evolution, Versionen und Anwendungen