Zurück zu Blogs
Blog Img

Die besten Features von Java 17 für Developer

Im September 2021 lancierte Oracle die Java-Version 17. Wer mitzählt, stellt fest: Das sind 6 neue Versionen in weniger als 3 Jahren. Man fragt sich schon fast, ob es bei so vielen aufeinanderfolgenden Releases überhaupt noch Neues gibt. Die kurze Antwort lautet: Die Version Java Development Kit 17 bietet tolle neue Optionen. Zudem ermöglicht sie einen Blick in die Zukunft. Sind Sie neugierig, welche Möglichkeiten JDK 17 bietet? Wir zeigen es Ihnen.

Schnellere Entwicklung von Java Development Kits

Die Entscheidung für einen Rückblick über 6 Versionen ist nicht aus der Luft gegriffen. Die Beta-Version von JDK wurde 1995 lanciert und alle paar Jahre aktualisiert. Zur Beschleunigung dieser Entwicklung bringt Oracle seit 2018 alle 6 Monate eine neue Version heraus. Geplant ist, jeweils nach zwei Jahren ein LTS-Release (Long Term Support) zu veröffentlichen. Das läuft noch nicht ganz nach Plan. Die letzte LTS-Version war Java 11 im Jahr 2018 (deshalb gehen wir 6 Versionen zurück). Die vorletzte war Version 8 (2014). Auf Java 17 als LTS-Version würde laut Plan 2023 Java 21 folgen.

Neue Features vs. Preview Features

So viel zur Versionierung. Was ändert sich für Developer? Eine ganze Menge. Die Straffung der Release-Planung bietet Oracle den Freiraum, neue Features vor der offiziellen Aufnahme in die Version zu testen und Entwickler damit arbeiten zu lassen. So kann man ein oder zwei Releases lang mit Previews dieser Features arbeiten. JEP 359 Records zum Beispiel waren in JDK 14 und 15 ein Preview Feature, bevor sie in JDK 16 standardmäßig aktiviert waren. Preview Features lassen sich durch Hinzufügen des Arguments -enable-preview zum Compiler aktivieren.

Die drei besten Features von JDK 17

Da Java 17 ein LTS-Release ist, wird wahrscheinlich ein Großteil der Unternehmen darauf upgraden. Das macht ein LTS interessanter als Zwischen-Updates. Drei Features in dieser Version verdienen Ihre besondere Aufmerksamkeit, und zwar:

  1. Local Variable Type Inference

  2. Verbessertes switch

  3. Pattern Matching bei instanceof

Local Variable Type Inference

Schon wenig Java Code artet schnell in Sprachbrei aus. Local Variable Type Inference leistet einen Beitrag zur Abhilfe. In älteren Java-Versionen müssen Sie den Typ einer Variablen zweimal deklarieren. Angenommen Sie verwenden <> (in Version 7 hinzugefügt), dann wird ein einziger Satz an Parametern benötigt (wenn diese auf beiden Seiten der Gleichung identisch sind). Danach müssen Sie dieselbe Variable in der HashMap wiederholen. In Version 17 deklarieren Sie ein Schlüsselwort als Variable und überlassen den Rest dem Compiler. Das spart wieder einige Zeilen Code ein.

Zwei wichtige Details beim Deklarieren einer Variablen

Es klingt einfach, aber Sie sollten beim Deklarieren einer Variablen zwei Dinge berücksichtigen. Erstens: Sie können den Variablentyp nicht dynamisch anpassen. Ein String bleibt ein String. Sie können ihn nicht spontan in einen Int oder Float umwandeln. Zweitens: Sobald Sie die Variable aufrufen, müssen Sie ihr einen Typ geben. Der Compiler geht nicht Ihren Code durch, um herauszufinden, was die Variable letztlich tun wird.

Verbessertes switch

In den Vorgängerversionen von JDK waren wir alle schon einmal auf der Suche nach diesem einen fehlenden break in einem Switch-Statement. Sogar ein einfaches switch führt zu einer Menge Codezeilen und jedes Statement muss auch noch mit einem break abgeschlossen werden. Vergessen Sie das break, führt der Compiler den Code in der nächsten Zeile aus, als ob er zur vorigen gehörte (und verbringen Sie den Abend mit Fehlersuche). JDK 17 bereitet diesem Problem ein Ende, und zwar durch die Erweiterung unseres Arsenals an Switch Expressions.

Switch Expression

In einer Switch Expression wird kein break benötigt, um anzugeben, dass die auszuführende Zeile endet. Stattdessen verwenden Sie -> für die Erstellung von Zeilen. Links vom Pfeil definieren Sie das case, rechts die auszuführende Aktion. Das spart jede Menge Codezeilen ein und beugt (beim Vergessen eines break) unerwarteten Ergebnissen vor. Hinzu kommt, dass Ihnen innerhalb der Switch Expression return oder yield als Operator zur Auswahl stehen. Return gibt den zur Variablen gehörenden Wert zurück. Mit yield können Sie zuerst noch eine Bearbeitung dieses Werts ausführen.

Pattern Matching bei instanceof

Pattern Matching war ein Preview Feature in Java 14 und Java 15. In Java 16 wurde es offiziell hinzugefügt. Da Java 17 die LTS-Version ist, erhalten jetzt mehr Entwickler Zugriff auf diese Neuerung. Instanceof verwenden wir schon länger, um zu kontrollieren, ob eine Variable einen bestimmten Typ hat. In den Vorgängerversionen ließen sich anschließend auf Grundlage von true oder false andere Aktionen definieren. Pattern Matching ermöglicht es, direkt auf das Ergebnis des instanceof-Operators hin eine Aktion auszuführen. Das reduziert die Anzahl der benötigten Codezeilen.

In ein und derselben Zeile Typ bestimmen und Aktion ausführen

Bei der traditionellen Verwendung von instanceof deklarieren Sie zuerst, dass Sie den Typ einer bestimmten Variable bestimmen werden. Danach können Sie auf Grundlage des Ergebnisses den Inhalt dieser Variablen abrufen und damit irgendetwas tun. Bei der neuen Version von instanceof haben Sie die Möglichkeit, in einer Zeile anzugeben, dass Sie den Typ bestimmen wollen und – in derselben Zeile – gleich definieren, was Sie bei einem bestimmten Ergebnis mit diesem Inhalt tun möchten. Wenn die Variable den Typ String hat und als Inhalt „Hund“, können Sie direkt den Auftrag erteilen, „wuff“ auf dem Bildschirm anzuzeigen. In älteren Versionen sind dafür mehrere Codezeilen erforderlich.

Pattern Matching für switch

Ein Preview Feature in Java 17 ist Pattern Matching für den switch-Operator. Damit können Sie in einer switch-Anweisung mit instanceof nach einem bestimmten Variablentyp suchen und auf dieser Grundlage eine Aktion ausführen. Sie haben zum Beispiel die Möglichkeit, mit switch einen Binärbaum zu durchsuchen und den Inhalt eines bestimmten Knotens mit dem return-Operator zurückgeben zu lassen. Mit diesem Feature können Sie in Java 17 bereits experimentieren, indem Sie im Compiler -enable-preview als Argument hinzufügen.

Einsteigen als Java Developer?

Java 17 enthält vielfältige Neuerungen. Das waren nur einige Beispiele. Sind Sie Java Developer und wollen mit der neuesten und besten Version von JDK arbeiten? Wir suchen Fachleute, die in der Lage sind, aus dieser Software das Optimum herauszuholen.

MEHR ÜBER JAVA-ENTWICKLUNG