Interview mit Rabea Gransberger zu Java 9

Java 9 Release: „Ich kann nur empfehlen, sich mit Modulen vertraut zu machen“

Dominik Mohilo

Rabea Gransberger

Das Modulsystem Jigsaw ist eines der wichtigsten Features von Java 9. Wir haben uns im Zuge des neuen Releases mit Rabea Gransberger, Softwareentwicklerin bei MEKOS und Organisatorin der JUG Bremen, über das Modulsystem von Java unterhalten. Im Gespräch gab sie zudem einen Einblick, welche Features noch fehlen, und wie sie die derzeitigen Entwicklungen im Java- und Java-EE-Ökosystem bewertet.

Wir sprechen mit Rabea Gransberger, Softwareentwicklerin, Projekt- und Abteilungsleiterin bei MEKOS und Gründerin der JUG Bremen, über die Vorteile der Modularisierung in Java und das geplante Veröffentlichungsschema.

PS: Verpassen Sie nicht unsere Infografik zu Java 9 & Project Jigsaw!


JAXenter: Welches Feature ist für dich das wichtigste in Java 9?

Rabea Gransberger: In Java 9 ist viel mehr enthalten als Jigsaw. Die kleinen API-Anpassungen für die Collection Factories, an Streams, Optional sowie Process und die Sprachanpassungen für try-with-resource, private Methoden in Interfaces und Diamond für anonyme Klassen werden Entwickler im täglichen Leben deutlich häufiger weiterhelfen. Ansonsten stehen mit REPL und Mission Control/Flight Recorder (zuvor nicht frei nutzbar) neue Tools zur Verfügung, die den Alltag weiter erleichtern werden. Ich stelle mir gerade die Frage, wann mein Check-In für einen Flug verfügbar ist. Die Webseite sagte nur „In 44 Tagen“. Welches Datum ist dies?

jshell
jshell> java.time.LocalDate.now().plusDays(44) 
$1 ==> 2017-11-08

Sehr praktisch!

JAXenter: Projekt Jigsaw bringt das Modulsystem für Java. War Jigsaw das lange Warten wert?

Ein neues, unverständliches und schwer nutzbares Feature wäre eine kürzere Wartezeit nicht wert.

Rabea Gransberger: Im Grunde mag ich es, dass neue Java Features keine Schnellschüsse sind, sondern wohl überlegt. Dafür muss man manchmal ein wenig länger warten als bei anderen Sprachen. Ein neues, unverständliches und schwer nutzbares Feature wäre eine kürzere Wartezeit nicht wert.

Ich denke die Möglichkeit, unterschiedlichen Code für unterschiedliche Java-Versionen in einem JAR bereitzustellen, wird die Rückwärtskompatibilität für Bibliotheken verbessern, ohne auf neue performantere Features verzichten zu müssen.

Mit JLink kann man in seinen eigenen Projekten von der Modularisierung des JDKs profitieren. Es müssen nur noch die Module in einer eigenständig lauffähigen Version mit ausgeliefert werden, die auch vom Projekt benötigt werden und kein vollständiges JRE mehr. Dies reduziert die Größe der Images.

JAXenter: Wirst du gleich mit Jigsaw durchstarten, oder siehst du die Modulsache eher skeptisch?

Rabea Gransberger: Für unsere Projekte auf der Arbeit verwenden wir OSGi, da es sich um Eclipse-RCP-Anwendungen handelt. Dadurch bin ich schon lange mit Modulen vertraut und benötige Jigsaw momentan nicht. Module bieten die Möglichkeit, die Architektur, die man auf dem Papier mal entworfen hat, deutlich besser im Code abzubilden.

Man kann den Zugriff auf public-Klassen, die nur für interne Zwecke gedacht sind, endlich verbieten oder nur für bestimmte andere Module namentlich erlauben. Dies verhindert, dass jeglicher Code jeden anderen Code aufrufen darf und ein „Big Ball of Mud“ entsteht.

Lesen Sie auch: Java 9 ist da! Project Jigsaw & die neuen Features auf einen Blick

Wir haben vor sechs Jahren damit angefangen, unser damals monolithisches Hauptprojekt in OSGi Bundles (wie Module) aufzuteilen. Daraus sind mittlerweile über 150 Bundles entstanden. Wenn einem die Module den Zugriff auf die gewünschte API verbieten, fängt man an darüber nachzudenken, ob es eigentlich sinnvoll ist, was man gerade versucht hat zu machen. Oft gehört die API aus Modul A, die man von Modul B aufrufen wollte, doch eher in ein neues Modul C, weil Module B und A eigentlich nichts mit einander zu tun haben.

Es ist ein Umdenken für die Entwickler erforderlich, aber ich kann nur empfehlen, sich mit Modulen vertraut zu machen, um diese nach und nach in den eigenen Projekten zu verwenden. Leider müssen wir noch einige Zeit darauf warten, bis alle benötigten Libraries ebenfalls als Modul verwendbar sind. Ist dies nicht der Fall, kann man mit einem Pull Request oder Bug Report ein wenig Hilfestellung geben.

JAXenter: Welche Features fehlen deiner Meinung nach?

Rabea Gransberger: Aus OSGi bin ich es gewohnt, dass Packages nicht nur exportiert werden, sondern auch importiert. Man verwendet also keine Abhängigkeiten auf ganze Module/Bundles, sondern auf einzelne Packages. Dies bringt den Vorteil, dass der eigene Code weiter kompiliert, auch wenn die Entwickler einer Bibliothek, die man verwendet, den Code in mehrere Bundles aufgeteilt, die Packages aber intakt gelassen haben. Schön ist in OSGi auch die Versionierung von Bundles und die Möglichkeit, für Abhängigkeiten Versionsbereiche anzugeben. So wird man schnell darauf hingewiesen, dass eine Bibliothek in neuerer Version auf dem Classpath ist, die man ggf. noch nicht getestet hat. Ob diese Features in Jigsaw wirklich fehlen, wird die Zeit zeigen. Wer Buildtools wie Maven oder Gradle verwendet, um Java 9 Module zu bauen, dem reichen vielleicht die dort angebotenen Werkzeuge zur Versionskontrolle.

JAXenter: Java soll bald in regelmäßigen Abständen releast werden, eine gute Idee?

Ich stehe dem Vorhaben, eine neue Java-Version alle sechs Monate zu releasen, momentan noch sehr skeptisch gegenüber.

Rabea Gransberger: Ich stehe diesem Vorhaben momentan noch sehr skeptisch gegenüber, vielleicht aber auch nur weil ich es bisher gewohnt bin, dass es nur alle paar Jahre ein neues Release gibt. Leider erlebe ich es schon heute häufig bei Bewerbern im Vorstellungsgespräch, dass diese überhaupt nicht wissen, mit welcher Java Version sie arbeiten. Bei der Verwendung von neuen Sprachfeatures und APIs ist es für mich jedoch ein großer Unterschied, ob sich ein Entwickler mit der bei uns verwendeten Version auskennt oder nicht.

Viele Projekte benötigen heute sehr viel Zeit, um von einer Java Version auf die nächste umzustellen. Dies liegt jedoch vielleicht auch an der großen Zahl an Veränderung, die ein Major Release bisher mit sich brachte. Handelt es sich nur um einzelne Features, geht die Adaption vielleicht deutlich schneller voran. Für meine Desktop-Projekte bedeutet dies, dass wir dringend damit anfangen sollten, unser eigenes JRE mit auszuliefern, statt die auf den Client PCs installierte Java-Version zu verwenden.

JAXenter: Was ist deine Meinung zu Oracles aktuellen Bemühungen, Java und Java EE offener zu machen?

Rabea Gransberger: Die Meldungen haben sich in den letzten zwei Wochen ja fast überschlagen. Den Anfang machten das aufgewertete OpenJDK und der Java Flight Recorder, dann folgte der Umzug von Java EE zur Eclipse Foundation und die Bereitstellung der IBM J9 VM (ebenfalls bei Eclipse). Ich freue mich einerseits, dass mehr und mehr von Java Open Source bereitgestellt wird. Man kann sehr viel von diesen Projekten lernen und sogar selbst mithelfen.

Solange Oracle oder eine andere Firma/Person sich weiter hauptberuflich um diese Projekte kümmert, sehe ich auch keine Probleme. Wenn ein Open-Source-Projekt keinen Projektleiter hat, machen die Entwickler, die sich in ihrer Freizeit darum kümmern, jedoch häufig nur das, was sie gerade interessiert, und behalten die Gesamtheit des Projektes nicht mehr im Auge. Dies soll absolut keine Kritik an den Entwicklern sein, diese Handlungsweise ist nur verständlich. Die Projekte leiden jedoch aus Nutzersicht teilweise unter der mangelnden Führung.

Rabea Gransberger hat Informatik an der Universität Bremen studiert und das Studium 2008 mit einem Diplom abgeschlossen. Seitdem arbeitet sie als Softwareentwicklerin, Abteilungsleiterin und Projektleiterin bei MEKOS. Ihr ist es besonders wichtig, qualitativ hochwertigen Code zu schreiben und die Entwickler in ihrem Team entsprechend fortzubilden. Dieser Bereich zählt auch zu ihren Hauptthemen für Vorträge auf diversen Konferenzen und an User-Group Abenden. Hauptsächlich programmiert Rabea an dem auf Eclipse RCP/RAP basierenden Projekt OTIS. Im Jahr 2012 hat Rabea die Java User Group Bremen gegründet und ist seitdem an der Organisation beteiligt. Neben der Softwareentwicklung ist Rabea leidenschaftlicher Fußballfan und beim jede Spiel im heimischen Weserstadion zu finden.
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

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: