Java 10 ist fertig und im Zeitplan

Im Gegensatz zu den letzten Versionen ist Java 10 pünktlich erschienen, bringt aber auch deutlich weniger Neuerungen mit als die beiden Vorgänger. Die Ergänzungen verschaffen diesmal vor allem mehr Klarheit.

In Pocket speichern vorlesen Druckansicht 325 Kommentare lesen
Java 10 ist fertig
Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Planmäßig zum gestrigen Frühlingsanfang ist Java 10 erschienen. Damit legt es anders als die Vorgänger eine Punktlandung hin, was angesichts der überschaubaren Neuerungen jedoch wenig verwundert. Zumindest bedeutet die Pünktlichkeit einen guten Start für die im Herbst 2017 angekündigte Roadmap für Java, die deutlich kürzere Zyklen mit halbjährlichen Releases vorsieht.

Die technischen Neuerungen in Java 10 sind im Vergleich zum Modulsystem von Java 9 und den Lambda-Ausdrücken in Java 8 eher überschaubar. Letzteres verzögerte das Release um acht Monate, ersteres sorgte dafür, dass Java 9 ganze eineinhalb Jahre nach dem ursprünglich vorgesehenen Zeitpunkt erschien. Das aktuelle Release enthält vor allem Ergänzungen, die für kompakteren und aufgeräumteren Code sorgen sollen.

So beschreibt das JEP 296 (JDK Enhancement Proposal) "Consolidate the JDK Forest into a Single Repository" das Konsolidieren der JDK-Repositories in ein zentrales. Das betrifft die Repos root, corba, hotspot, jaxp, jaxws, jdk, langtools und nashorn. Die FX-Sourcen sind explizit ausgenommen. Anfang März hatte Oracle angekündigt, JavaFX ab Java 11 aus dem JDK ausgliedern zu wollen.

JEP 304 "Garbage Collector Interface" soll eine saubere Schnittstelle zum Garbage Collector (GC) einführen, um die Sourcecode-Isolierung für unterschiedliche GCs zu verbessern. Das soll für eine bessere Modularität für den Code von Oracles Java Virtual Machine (JVM) HotSpot führen und das Hinzufügen eines GC vereinfachen. Außerdem lässt sich ein Garbage Collector damit einfacher von einem JDK-Build ausschließen. Das Proposal beschreibt jedoch explizit nicht das Hinzufügen oder Entfernen eines GC. Außerdem soll der seit JDK standardmäßige Garbage Collector G1 dank dem JEP 307 "Parallel Full GC for G1" auch in ungünstigen Fällen aufgrund vollständiger Parallelisierung geringere Latenzen aufweisen.

Das JEP 286 "Local-Variable Type Inference" sorgt für kompakteren Code, indem es Typinferenz für lokalen Code vorsieht. So lässt sich künftig

ArrayList<String> list = new ArrayList<>();

verkürzt als

var list = new ArrayList<String>();

schreiben. Dabei ersetzt var den Typnamen, gilt aber nicht als Keyword. Folgerichtig funktioniert Code weiterhin, der var als Methoden-, Paket- oder Variablennamen benutzt. Als Name für Klassen oder Interfaces darf var jedoch nicht mehr verwendet werden, was aber, wie das Proposal wohl zu Recht bemerkt, kaum vorkommen dürfte.

Die Typinferenz ist nur für lokale Variablen möglich und benötigt den entsprechenden Initializer beziehungsweise Indizies in for-Schleifen. Sie ist unter anderem nicht für Method Formals, Constructor Formals und Rückgabetypen von Methoden integriert.

Darüber hinaus enthält Java 10 folgende weiteren JEPs

  • JEP 310 : Application Class-Data Sharing
  • JEP 312 : Thread-Local Handshakes
  • JEP 313 : Remove the Native-Header Generation Tool (javah)
  • JEP 314 : Additional Unicode Language-Tag Extensions
  • JEP 316 : Heap Allocation on Alternative Memory Devices
  • JEP 317 : Experimental Java-Based JIT Compiler
  • JEP 319 : Root Certificates
  • JEP 322 : Time-Based Release Versioning

Erwähnenswert ist unter anderem, dass JEP 319 vorsieht, die Root-Zertifikate in Oracles Programm für Java SE Root CAs als Open Source bereitzustellen, um OpenJDK-Builds für Entwickler attraktiver zu gestalten und die Unterschiede zwischen Oracle-JDK- und OpenJDK-Builds zu reduzieren.

Mit dem JEP 322 ist die Anfang Februar vorgeschlagene Versionierung mit Jahreszahl und Monat vom Tisch, nach der das frische Release nicht Java 10, sondern Java 18.3 und das für September geplante statt Java 11 Java 18.9 heißen würde.

Oracle bietet das Java SE Development Kit 10 zum Download an. Auf der OpenJDK-Site war das endgültige Release von Java 10 beim Schreiben dieser Meldung noch nicht zu finden, dürfte aber in Kürze verfügbar sein. (rme)