© StunningArt / shutterstock.com
Ein Blick auf die wichtigsten Entwicklungen im Java-Umfeld

Quo vadis, Java?


In diesem Artikel schauen wir uns die vier bekanntesten Projekte an, in denen an der Zukunft von Java gearbeitet wird: Amber, Loom, Panama und Valhalla. Was beinhalten sie, welche Anteile von ihnen findet man schon in den aktuellen Java-Versionen und auf was können wir uns noch freuen? Dabei werden wir die Features nicht technisch betrachten und erläutern – das haben in diesem Magazin schon andere Autoren sehr detailliert und umfassend getan. Das Ziel ist vielmehr, einen Überblick über die großen Ziele für das Java-Ökosystem über den nächsten LTS-Release hinaus zu schaffen.

Java 16 ist veröffentlicht, und mit Java 17 steht die nächste Java-Version mit Langzeitsupport vor der Tür, die weltweit in vielen Unternehmen Java 11 ablösen wird. Zwischen Java 11 und Java 17 liegen fünf Releases, veröffentlicht im schnellen Sechsmonatsrhythmus, mit großen und kleinen Änderungen: Preview-Features, finale Features, kleine Verbesserungen und größere API-Ergänzungen. Obwohl viele der kleineren Änderungen für sich unspektakulär wirken, zahlen sie auf große Ziele ein, die in kleinen Schritten stetig verfolgt werden. Das macht es nicht immer einfach, den Überblick zu behalten, wo die Reise für Java hingeht.

Project Amber

Amber [1] ist für viele Java Entwickler wahrscheinlich aktuell das greifbarste der Projekte, da jede Java-Version seit Java 10 JEPs beinhaltete, die im Project Amber gereift sind. Der Fokus liegt und lag hierbei, so kann man es auf dem Projekt-Wiki sehr bescheiden formuliert lesen, auf dem Erarbeiten kleinerer Java-Sprachfeatures, die die Produktivität der Sprache verbessern sollen. Dass diese kleineren Sprachfeatures einen immensen Einfluss haben, sieht man an den bereits bis Java 16 umgesetzten JEPs:

  • Local-Variable Type Inference (JEP 286)

  • Pattern Matching for Instanceof (JEP 305, JEP 375, JEP 394)

  • Local-Variable Syntax for Lambda Parameters (JEP 323)

  • Switch Expressions (JEP 325, JEP 354, JEP 361)

  • Text Blocks (JEP 355, JEP 368, JEP 378)

  • Records (JEP 359, JEP 384, JEP 395)

  • Sealed Classes Preview (JEP 360, JEP 397)

Dabei stehen die Sprachfeatures nicht für sich isoliert, sondern greifen ineinander: Besonders Records, Sealed Classes und Pattern Matching ergänzen sich gegenseitig hervorragend und ermöglichen Konstrukte, die noch vor einigen Releases in Java nicht denkbar waren. Von den aufgezählten Features sind lediglich die Sealed Classes noch im Preview-Status, d. h. nicht final in der Sprache enthalten. Das bedeutet aber nicht, dass Project Amber seine Arbeit bereits verrichtet hat. Mit Draft Proposals zu „Nested Record and Array Patterns“ und „Pattern Matching for Switch“ stehen schon die nächsten beiden Kandidaten in der Warteschlange. „Nested Record and Array Patterns“ sollen bei verschachtelten Datenstrukturen und Arrays vermeiden, dass instanceof auf jede Ebene einzeln angewandt werden muss. „Pattern Matching for Switch“ ermöglicht, das bereits enthaltene Pattern Matching auf Switch Statements anzuwenden – mit einem kleinen Zusatz. Da der Compiler bei Sealed Classes genau bestimmen kann, welche Implementierungen einer Klasse existieren können, kann das Switch Statement erschöpfend sein. Sind alle vorhandenen Klassen überprüft, entfällt die Default Clause am Ende des Blocks. Fügt nun ein Entwickler eine neue Implementierung einer Sealed Class hinzu, wird der Compiler so lange einen Fehler produzieren, bis auch sie dem Switch Statement hinzugefügt wurde.

Bei aller Produktivität von Project Amber zeigt es sich dennoch, dass es sich hier um einen Inkubator für Ideen handelt – und nicht alle Ideen sich bewähren. Vor der Einführung von Text Blocks war angedacht, Java um „Raw Strings“ (JEP 326) zu bereichern. Bei Raw Strings hätte es sich um spezielle, mit Backquotes (`) begrenze Strings gehandelt, in denen das Escapen von speziellen Zeichen nicht nötig gewesen wäre. Sie hätten sich, ähnlich wie heute die Text Blocks, über mehrere Zeilen erstrecken können. So wäre ein neuer Literal für Strings eingeführt worden, der im Gegensatz zu herkömmlichen Strings über mehrere Zeilen ausgedrückt werden könnte – ein Ungleichgewicht, da dies bedeuten würde, dass jeder mehrzeilige String ein Raw String sein müsste. Dieser Grund und negatives Feedback zur Wahl des Backquotes als Begrenzungszeichen sorgten dafür, dass der JEP zugunsten von Text Blocks zurückgezogen wurde. Darüber hinaus umfasst Project Amber noch drei weitere JEPs, die momentan pausieren:

  • Enhanced Enus (JEP 301)

  • Lambda Leftov...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang