© Enkel/Shutterstock.com
Unter der Lupe: Java 14

Die Java-Elefantenrunde


Java Magazin: Java 14 ist gerade erschienen, daher die obligatorische Frage: Was ist euer Highlight des Releases?

Oliver B. Fischer: Das wohl bekannteste Feature der Textblöcke ist natürlich offensichtlich, weil es wesentlich zur positiven Developer Experience beitragen wird. Persönlich halte ich den Einstieg ins Pattern Matching mit JEP 303 Pattern Matching for instanceof für interessant, ebenso wie JEP 361 für Switch Expressions.

Dr. Heinz Kabutz: Vor einigen Monaten hat sich Brian Goetz auf der Java-Champion-Mailingliste darüber beschwert, dass sie bei Oracle nicht genug Feedback zu ihren Vorschaufunktionen seitens der Community bekommen. Daraufhin beschloss ich, meine Website [1] von nun an immer mit der neuesten Previewversion von Java zu betreiben. Wenn man sich die Website jetzt ansieht, sieht man oben „Running on Java 14-ea+29-1384 (Preview)“. Es ist ein bisschen Arbeit, das so zu machen. Neben meinem Master Branch habe ich drei weitere Branches für die Java-14-Funktionen: java14-preview, jep359 (Records) und jep368 (Text Blocks). Im Allgemeinen arbeite ich im Master, aber die drei anderen Branches werden dann davon abgeleitet.

Man könnte vermuten, dass JavaSpecialists.eu nur eine Hobbywebsite ist und dass es nicht viel Risiko bergen würde, wenn sie down wäre. Das ist jedoch nicht der Fall. Sie ist mein täglich Brot. Ohne sie hättet ihr nie etwas von mir gehört. Ich kann mir auf keinen Fall leisten, dass sie abgeschaltet wird, und setze also ein ständiges Monitoring ein, um zu überprüfen, ob alles noch funktioniert.

Aber zum Kern der Frage: Von allen Funktionen, die in Java 14 enthalten sind, gefallen mir Records (JEP359) am besten. Eine interessante Neuerung ist jedoch ebenfalls, dass ConditionNode innerhalb des AbstractQueuedSynchronizer jetzt auch ein ManagedBlocker ist. Das bedeutet, dass die Bedingung von ReentrantLock gut mit dem ForkJoinPool und damit mit parallelen Streams zusammenspielt. LinkedBlockingQueue basiert auf ReentrantLock, und so arbeitet auch das gut zusammen. Ich habe unter [2] über die Möglichkeiten geschrieben und schlage einen Hack vor, um LinkedBlockingQueue zu fixen. Mit Java 14 funktioniert es out of the box.

Markus Günther: Mein persönliches Highlight ist die Einführung des Record-Konzepts (JEP-359). Records sind zwar noch ein Previewfeature in Java 14 und man muss das Feature explizit aktivieren, um es zu verwenden. Sie fügen sich aber logisch konsistent in das etablierte Java-Typsystem ein und bieten großes Potenzial. Mit dem aktuellen Release bedeutet das, dass man für einfache Datenhaltungsklassen nicht länger ausschweifenden Boilerplate-Code schreiben muss. Stattdessen kapselt man alle relevanten Attribute in Form eines Records und lässt den Compiler einen sinnvollen Defaultkonstruktor, Zugriffsmethoden zum Lesen und Schreiben der Attribute und einen Vertrag für equals und hashCode etc. generieren. Auf den zweiten Blick erkennt man, dass Records den Weg für weitere interessante Features ebnen: Records könnten beispielsweise wunderbar mit Pattern Matching (JEP Draft: Pattern Matching for Switch [3]) in Form von Deconstruction Patterns zusammenspielen. Records sind also definitiv ein Konzept, das man im Auge behalten sollte.

Tim Riemer: Die Switch Expressions sind nun erwachsen, d. h. mit dem Java-14-Release vom Previewfeature zu einem Standardfeature erhoben worden. Ein weiteres Feature, von dem man als Entwickler in seiner täglichen Arbeit profitieren wird, ist JEP-358: Helpful NullPointerExceptions. Daneben sind Records und Pattern Matching for instanceof als interessante Previewfeatures dabei.

Jens Schauder: Java 14 ist ein echtes Feuerwerk in meinen Augen. Es ist schwierig, sich zwischen Pattern Matching for instanceof, besseren NPEs, Switch Expressions und Records zu entscheiden. Wenn ich mich entscheiden muss, wähle ich das Pattern Matching for instanceof.

Es ist etwas, was in der Codebasis von Spring Data wirklich praktisch wäre. Records finde ich eigentlich noch besser, aber sie sind als Preview gekennzeichnet.

Michael Vitz: Dieses Mal finde ich es schwer, ein einzelnes Highlight zu nennen. Für die Sprache selbst ist es wohl das Preview von Records, die die Erstellung von klassischen Java Beans extrem erleichtern. Abseits hiervon finde ich die neuen NullPointerExceptions super, da mich diese sehr unaufgeregt und ohne dass ich etwas tun muss, unterstützen.

JM: Anschließend an die erste Frage: Welches Feature vermisst ihr in Java 14?

Fischer: Ganz klar Stringinterpolation für Strings und Textblöcke.

Günther: Das ist jetzt nicht zwingend auf Java 14 bezogen, aber ich vermisse nach wie vor die Möglichkeit, lokale Variablen durch val (analog zu dem seit Java 10 existierenden var für veränderliche Variablen) als unveränderlich zu deklarieren.

Riemer: Eigentlich vermisse ich nichts, was aber auch damit zu tun hat, dass man bei einem sechsmonatigen Releasezyklus keine riesigen Neuheiten erwartet. Persönlich fände ich es schön, wenn man erste Ergebnisse von Project Loom und Valhalla sehen könnte.

Schauder: Ich bin ja kein Sprachdesigner. Daher kann ich gar nicht so recht beurteilen, was sinnvoll ist und was nicht. Ich bin immer beeindruckt, wenn ich mich mit Leuten unterhalte, die von so etwas Ahnung haben. Aber ich denke, ein Typsystem könnte mehr leisten, als das von Java es momentan...

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

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang