Interview mit Markus Günther

Java 14: „Sinnvollen Regressions- und Kompatibilitätstests sind wichtig – bei jedem Upgrade“

Dominik Mohilo

Pünktlich zum Erscheinen von Java 14 haben wir uns mit Markus Günther, Java-Experte und freiberuflicher Softwareentwickler und -architekt, über die Features der neuen JDK-Version unterhalten, die ihm besonders gut gefallen. Im Interview gibt er zudem Auskunft über seine Wünsche für Java 15 und Antwort auf die Frage, ob Java anderen JVM-Sprachen wie Kotlin und Scala mittlerweile ähnlicher wird.

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

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.

Lesen Sie auch: Java 14 ist da! Stimmen zum Release & Infografik

JAXenter: Anschließend an die erste Frage: Welches Feature vermisst du in Java 14?

Markus 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.

JAXenter: Wirst du bzw. deine Kunden sofort auf das neue Release updaten oder lohnt sich das für dich bzw. deine Kunden nicht?

Es ist unabdingbar, ein Upgrade auf eine neue Java-Version mit sinnvollen Regressions- und Kompatibilitätstests zu begleiten.

Markus Günther: Meine Kunden arbeiten hauptsächlich noch mit Java 8. Stellenweise beobachte ich das selbst bei der technologischen Auswahl innerhalb von Greenfield-Projekten: Manch einer nutzt die Chance und steigt auf Java 11 um, andere dagegen nutzen weiterhin Java 8 als Basis. Bei der zuletzt genannten Gruppe geht das in der Regel damit einher, dass der Anwendungsentwurf ohne Blick auf künftige Migrationen (beispielsweise Modularisierung mit dem JPMS) stattfindet. Bei älteren Systemen auf Basis von Java 8 mit monolithischer Struktur ist eine Migration auch durchaus nicht trivial, wenn der Monolith nicht bereits eine strikte Trennung in fachliche Module aufweist. Diesen Invest muss man irgendwann tragen, aber nach meiner Wahrnehmung scheuen sich die Kunden insbesondere bei Bestandsprojekten davor. Und wenn nicht, dann wäre mein Ratschlag, sich zunächst dem Sprung auf eine LTS-Version (Java 11) zu widmen und sich erst danach – sofern die Kosten/Nutzen-Rechnung das rechtfertigen – auf die kürzeren Releasezyklen einzustellen.

JAXenter: Welche Schwierigkeiten siehst du dabei, die neuen Java-Versionen gleich in Produktion einzusetzen?

Markus Günther: Selbst bei Releases, die, gemessen an ihrem Featureumfang, einen eher evolutionären Charakter haben, kann sich das Verhalten der Anwendung nach dem Versionsupgrade im Produktivbetrieb anders zeigen als gewohnt. Es ist daher unabdingbar, ein solches Upgrade mit sinnvollen Regressions- und Kompatibilitätstests zu begleiten.

JAXenter: Nähert sich Java durch Features wie JEP 358 Helpful NullPointerExceptions „modernen“ Sprachen wie Kotlin an?

Markus Günther: Den Trend, sich an guten und etablierten Features aus anderen Programmiersprachen zu orientieren, kann man seit längerer Zeit beobachten. Insbesondere Scala hat gezeigt, dass ein objektfunktionales Programmiermodell durchaus Stärken hat. Und es ist sicher auch ein Inkubator dafür gewesen, dass mit Java 8 Lambdaausdrücke Einzug in die Sprache gehalten haben. Mit JEP 305: Pattern Matching for instanceof (Preview), mit JEP 359: Records, JEP 361: Switch Expressions und mit JEP 368: Text Blocks, die uns Java 14 bringt, setzt sich dieser Trend – ungeachtet dessen, aus welcher Ecke die Inspiration stammt – fort und reduziert die Lücke zu anderen Programmiersprachen.

JAXenter: Welche Wünsche bzw. Präferenzen hast du für das ebenfalls noch in diesem Jahr erscheinende Java 15?

Mit Spannung beobachte ich den Fortschritt der Arbeit an Pattern Matching for Switch.

Markus Günther: Mit Spannung beobachte ich den Fortschritt der Arbeit an Pattern Matching for Switch, das sich aktuell noch im Status eines JEP Draft befindet. Insbesondere eine sinnvolle Kombination mit den in Java 14 eingeführten Records kann die Art und Weise (Stichwort: Deconstruction Patterns), wie wir künftig Java-Code formulieren, beeinflussen. Aber so sehr ich mir das wünsche, für das noch in diesem Jahr erscheinende Java 15 ist die Verfügbarkeit dieses Features doch eher unrealistisch.

JAXenter: Was hältst du generell von der Beschleunigung, die Java durch den sechsmonatigen Releasezyklus erlebt?

Markus Günther: Ich bin zwiegespalten. Zum einen ermöglicht der beschleunigte Releasezyklus die zeitnahe Veröffentlichung wichtiger Features. Das gibt uns das Gefühl, mit einer lebendigen und modernen Sprache zu arbeiten, und ist absolut zu begrüßen. Zum anderen stelle ich aber fest, dass Non-LTS-Releases in der Regel keine besondere Rolle spielen.

Markus Günther ist freiberuflicher Softwareentwickler und -architekt. Er beschäftigt sich aktuell mit Fast-Data-Architekturen und unterstützt seine Kunden bei der Umsetzung robuster, skalierfähiger Systeme.
 
 
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: