Interview mit Benedikt Ritter

Java-Release-Zyklus: „Im Moment zeichnet sich ab, dass die meisten Organisationen auf Java 8 stehen bleiben“

Katharina Degenmann

Mit Java 13 ist bereits das dritte Release nach dem neuen Veröffentlichungsschema erschienen. Nun ist es soweit, dass die Auswirkungen auch für die meisten Projekte spürbar werden. Wir sprachen mit Benedikt Ritter (Software Craftsman, Open Development Enthusiast, Apache Member) über seine Erfahrungen zur halbjährlichen Release-Kadenz von Java. Zudem verrät er Tipps und Tricks, die beim Umgang mit den schnelleren Java-Updates helfen können.

JAXenter: Hallo Benedikt, vielen Dank, dass du dir Zeit genommen hast. Du beschäftigst Dich unter anderem damit, was der neue Java-Release-Zyklus für Java-Bibliotheken und damit für das Apache Commons Project bedeutet. Zum Einstieg: Was genau verbirgt sich hinter Apache Commons bzw. was ist die Idee dahinter?

Benedikt Ritter: Apache Commons ist ein Top Level Projekt der Apache Software Foundation und kümmert sich um die Weiterentwicklung und Pflege von wiederverwendbaren Java-Bibliotheken. Für viele Entwickler ist Apache Commons so was wie das Schweizer Taschenmesser, da man Bibliotheken wie Commons Lang oder Commons IO eigentlich in jedem Projekt einsetzt. Hervorgegangen ist Apache Commons aus dem früheren Apache-Jakarta-Projekt, welches ein Sammelprojekt für alle Java Projekt bei Apache war. Daher kennt der eine oder andere Apache Commons vielleicht noch unter dem alten Namen Jakarta Commons.

JAXenter: Welche Herausforderungen bringt der neue Java-Release-Zyklus bezogen auf Apache Commons mit sich?

Benedikt Ritter: In meinem Vortrag arbeite ich drei zentrale Herausforderungen heraus. Häufigere Java-Releases machen es schwerer, Schritt zu halten: Auf der einen Seite möchte man als Autor einer Bibliothek möglichst viele Nutzer bedienen, also auch kompatibel älteren Java-Versionen sein. Auf der anderen Seite möchte man aber auch sicher gehen, dass die Bibliothek mit den neuesten Java-Releases funktioniert.

Häufigere Java-Releases machen es schwerer, Schritt zu halten.

Ein weiterer Aspekt sind binäre Inkompatibilitäten: In der Vergangenheit waren neue Java-Releases immer abwärtskompatibel. Ab Java 9 kann es allerdings auch binär inkompatible Änderungen geben – also zum Beispiel das Entfernen einer Methode. Das erschwert die Unterstützung möglichst vieler Java-Versionen.

Auch das Java-Modul-System: Mit Java 9 wurde das Modulsystem eingeführt. Es stellt spezielle Anforderungen an eine Bibliothek, damit diese sich als Modul laden lässt. Es gibt einige Workarounds, um auch ältere Bibliotheken kompatibel zu machen (z.B. den Automatic-Module-Name Manifest Header), allerdings ist voller Support mit module-info.java schwierig zu machen, wenn die Bibliothek auch gegen Java 8 kompiliert werden soll.

JAXenter: Welche Vorteile siehst Du bei Apache Commons gegenüber Googles Guava?

Benedikt Ritter: Ich mag den Vergleich Apache Commons vs. Google Guava nicht besonders gerne. Auch wenn es Überschneidungen in der Funktionalität gibt, haben beide Projekte ihre Daseinsberechtigung. Ich benutze in meinem Projekte sowohl Apache Commons als auch Google Guava.

W-JAX 2019 Java-Dossier für Software-Architekten

Kostenlos: Java-Dossier für Software-Architekten 2019

Auf über 30 Seiten vermitteln Experten praktisches Know-how zu den neuen Valuetypes in Java 12, dem Einsatz von Service Meshes in Microservices-Projekten, der erfolgreichen Einführung von DevOps-Praktiken im Unternehmen und der nachhaltigen JavaScript-Entwicklung mit Angular und dem WebComponents-Standard.

 

JAXenter: Als Senior Software Engineer bei Gradle Inc. stehst Du sicherlich viel mit Unternehmen und IT-Abteilungen in Kontakt. Was sind hier Deine Erfahrungen – wie gehen Unternehmen mit den schnelleren Java-Updates um?

Benedikt Ritter: Das ist ganz unterschiedlich. Es gibt Organisationen, die immer am Zahn der Zeit sind und gar nicht schnell genug neue Updates bekommen können. Das betrifft in dem Fall aber nicht nur Java Updates, sondern Software Updates im Allgemeinen. Wer seine Prozess so aufgesetzt hat, dass ein Update einfach getestet und integriert werden kann, profitiert von Bugfixes und Security Updates sowie von neuen Features.

Andere Organisationen stellt dies vor große Herausforderungen, da ein Rollout einer neuen Java-Version teilweise länger dauert, als der Zeitraum bis zur nächsten Java-Version. Die Gründe dafür sind verschieden und reichen von unzureichender Testabdeckung über mangelnde Build- und Deployment-Automatisierung bis hin zu organisatorischen Hürden und gesetzlichen Regularien, die schnelle Adaption verhindern.

Wenn wir allerdings mal bei Java 9 und danach bleiben, dann zeichnet sich im Moment ab, dass die meisten Organisationen auf Java 8 stehen bleiben. Selbst die, die schon Java 11 nutzen, machen einen Bogen um das Modulsystem.

Der Schlüssel ist eine gute Testabdeckung sowie ein hoher Automatisierungs- grad.

JAXenter: Wenn eine neue Version ansteht – wie bereitet man sich am besten darauf vor? Hast Du Tipps oder Tricks für uns?

Benedikt Ritter: Der Schlüssel ist aus meiner Sicht eine gute Testabdeckung sowie ein hoher Automatisierungsgrad. Im Idealfall muss ich nur in einer Konfigurationsdatei eine Zahl ändern, um meine Test Pipeline mit dem nächsten Java-Release zu testen. Wie ich schon angedeutet habe, steht man nicht nur bei neuen Java-Releases vor dieser Herausforderung, sondern bei Software Updates generell. Deshalb macht es auch meiner Sicht Sinn, in Automatisierung zu investieren.

Noch besser ist es, frühzeitig mit dem Testen zu beginnen. Den neuste Early Access Build gibt es zum Download. Wer erfolgreich gegen die EA Builds testet, der braucht vorm nächsten Java-Release keine Sorge haben.
JAXenter: Zum Schluss: 20 Jahre Apache Software Foundation – was ist für Dich der Benefit an der Arbeit bei Apache?

Benedikt Ritter: Ich habe bei Apache unglaublich viel gelernt, sowohl über Software Entwicklung als auch über den Umgang mit Menschen mit den verschiedensten Hintergründen. Speziell bei der ApacheCon kommt man auch schnell mit total interessanten Leuten ins Gespräch. Nach meinem Talk z.B. habe ich erst mit Leuten vom Apache Lucene Projekt gesprochen, dann dabei geholfen, eine Änderung am Gradle Build von Apache JMeter zu machen und später war ich mit dem Apache Tomcat Team zum Abendessen aus. Sowas passiert einem nur auf der ApacheCon.

Benedikt Ritter is a Software developer from the Ruhr area in Germany. Member of the Apache Commons PMC working mostly on Apache Commons Lang, Apache Commons CSV and Apache Commons Collections. I work as a Senior Software Engineer for Gradle Inc.
Geschrieben von
Katharina Degenmann
Katharina Degenmann
Katharina Degenmann hat Politikwissenschaft und Philosophie studiert. Seit Februar 2018 arbeitet sie als Redakteurin bei der Software & Support Media GmbH und ist nebenbei als freie Journalistin tätig.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: