Für eine kleine Ewigkeit

Java 11 – eine Einführung: Syntax-Erweiterung für var

Michael Inden

© Shutterstock / Profit_Image

Java 11 steht seit Ende September 2018 zum Download bereit und stellt nach Java 8 wieder ein sogenanntes LTS-Release (Long Time Support) dar. Das ist insofern erfreulich, da hier einige Jahre Support und Updates angeboten werden, wohingegen Java 9 und 10 durch die neue Release-Politik von Oracle jeweils lediglich für eine kurze Zeitspanne von 6 Monaten aktuell waren und auch keine Updates mehr erhalten. In seiner neuen Serie zu Java 11 gibt Michael Inden einen Einblick in die Features der neuen Java-Version.

Michael Inden hat bereits die Highlights von Java 9 in seiner Artikelserie Java 9 – Eine Einführung vorgestellt, in der Serie Best of Java 10 ging er auf die Neuerungen in Java 10 ein. Die vorliegende Artikelserie setzt sich aus Texten zusammen, die auch Teil seines neuen Buches zu Java 10/11 sein werden, das beim dpunkt.verlag erscheinen wird.

Bevor wir beginnen, beachten Sie unbedingt den nachfolgenden Praxishinweis zur neuen Lizenzpolitik von Oracle. Während Java 10 eher Änderungen kosmetischer Natur bietet, stellt Java 11 im Gegensatz dazu glücklicherweise ein paar mehr Neuerungen in den APIs bereit – noch immer empfinde ich jedoch die Notwendigkeit der dafür verwendeten Major-Version als fragwürdig.

Hinweis: Neue Lizenzpolitik bei Oracle

Sofern Sie planen, Ihre Software kommerziell zu vertreiben oder dies bereits tun, sollten Sie beim Herunterladen von Java 11 unbedingt die neue Release-Politik von Oracle beachten: Das bislang immer kostenfrei verwendbare Oracle JDK ist nun leider kostenpflichtig. Als Alternative können Sie auf das OpenJDK ausweichen. Während der Entwicklung kann das Oracle JDK allerdings weiterhin kostenfrei genutzt werden.

Hinweis auf neue Lizenzbedingungen

Syntax-Erweiterung für var

In Java 11 wurde eine kleine Anpassung bezüglich der Syntax vorgenommen: Man ist mit var nicht nur auf lokale Variablen beschränkt, sondern kann var nun auch zur Typangabe in Lambda-Ausdrücken verwenden. Das schauen wir uns nachfolgend etwas genauer an.

Local Variable Syntax for Lambda Parameters

Bis einschließlich Java 10 konnte man in einem Lambda-Ausdruck entweder alle Typen angeben oder alle weglassen. Jedoch war dort die Verwendung von var nicht möglich. Das wurde mit Java 11 geändert, sodass folgender Lambda-Ausdruck nun korrekt ist:

(var x, var y) -> x.doSomething(y)

Blicken wir kurz zurück – in Java 10 waren diese beiden Varianten erlaubt:

IntFunction<Integer> doubleItTyped = (final int x) -> x * 2;
IntFunction<Integer> doubleItNoType = x -> x * 2;

Nicht unterstützt wurde jedoch die Angabe von var:

IntFunction<Integer> doubleItWithVar = (var x) -> x * 2;

Warum sollte denn diese Variante überhaupt nützlich sein, wo man doch vollständig auf die Typangabe verzichten kann? Eine berechtigte Frage! Die Antwort ergibt sich aus dem Wunsch, zwar keinen Typ explizit angeben zu müssen, jedoch etwa den Parameter trotzdem final definieren oder Annotationen hinzufügen zu können. Das geht natürlich nicht, wenn die Lambda-Variante vollständig ohne Typ genutzt wird. Hier erlaubt var, auf die explizite Typangabe zu verzichten, jedoch weitergehende Informationen bereitstellen zu können. Das wird nachfolgend durch die Annotation @NonNull verdeutlicht:

Function<String, String> trimmer = (@NonNull var str) -> str.trim();

Diese Anpassung in der Syntax ist zwar nur klein, aber fein, weil dadurch mehr Konsistenz erreicht wird sowie – wie bereits im Beispiel demonstriert – die Möglichkeiten zur Angabe zusätzlicher Infos zu einer Variablen möglich wird.

Im nächsten Teil der Serie geht es dann um die API-Neuerungen in Java 11!

Der Weg zum Java-Profi

Michael Indens Buch bietet eine umfassende Einführung in die professionelle Java-Entwicklung und vermittelt Ihnen das notwendige Wissen, um stabile und erweiterbare Softwaresysteme auf Java-SE-Basis zu bauen. Praxisnahe Beispiele helfen dabei, das Gelernte rasch umzusetzen. Neben der Praxis wird viel Wert auf das Verständnis zugrunde liegender Konzepte gelegt.

Die Neuauflage wurde durchgehend überarbeitet, aktualisiert und erweitert. Auch Java 9 sind zwei Kapitel gewidmet. Eine neue Auflage des Buches mit Erweiterungen für aktuellere Java-Versionen ist für den Sommer bzw. Herbst 2019 geplant.

Weitere Informationenen zum Buch gibt es hier!

Verwandte Themen:

Geschrieben von
Michael Inden
Michael Inden
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen internationalen Firmen tätig und arbeitet derzeit als Teamleiter Softwareentwicklung in Zürich. Michael Inden hat rund 20 Jahre Erfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und an mehreren Java-One-Konferenzen in San Francisco teilgenommen. Sein Wissen gibt er gerne als Trainer in Schulungen und auf Konferenzen weiter. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen mit ergonomischen, grafischen Oberflächen sowie dem Coaching von Kollegen.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: