Suche
Interview mit Stephen Colebourne

Java 9 und darüber hinaus: „Module sind durchaus ein Langzeit-Feature“

Gabriela Motroc

Stephen Colebourne, Java Champion und JAX London Speaker, ist von dem anstehenden Java 9 Release und der damit einhergehenden, modularen Zukunft fasziniert. Project Jigsaw hätte ein Hauptmerkmal von Java 8 sein sollen, ist allerdings erst jetzt zum Release bereit. Es ist daher an der Zeit, darüber nachzudenken, wie es sich auf bestehende und neue Codebases auswirken könnte. Wir haben uns mit Stephen über das neue Java 9 und den Star des Releases, Projekt Jigsaw, unterhalten.

JAXenter: George Saab, Vorsitzender des OpenJDK-Governing Board und Vice President of Development der Java Platform Group bei Oracle, vermutete Anfang Juni, dass viele Entwickler zu Anfang wahrscheinlich ohne Module mit JDK 9 arbeiten werden. Was halten Sie vom modularen Ökosystem?

Stephen Colebourne: Das Java Platform Module System (JPMS) ist nicht perfekt, aber ist an einem Punkt, an dem sich das Release lohnt. Die meisten Entwickler können weiter mit Klassenpfaden arbeiten und werden daher von den Moduländerungen unbeeinflusst bleiben. Dodgy-Reflexion-Practices werden das Hauptproblem sein und es werden einige Bibliothek-Upgrades nötig sein, um es zu lösen. Ich bin froh, dass sich die Arbeit am Modulsystem dem Ende zuneigt, da ich persönlich denke, dass es einige größere Sprachherausforderungen gibt, die zu lange hinausgezögert wurden.

JAXenter: Das große neue Feature (Jigsaw) ist längst überfällig. Wie wird es sich auf bestehende und neue Codebases auswirken, da es nun endlich veröffentlicht wird?

Stephen Colebourne: In beiden Fällen gibt es wenig, was Entwickler tun können, bis die von ihnen genutzten Abhängigkeiten zumindest teilweise modularisiert wurden. Während uns automatische Module theoretisch erlauben das Modulsystem sofort zu nutzen, ist es in der Praxis besser zu warten bis die Abhängigkeiten modularisiert sind. Für neue Codebases ist es wichtig, über einen Modularisierungsplan zu verfügen. Den Code in Maven-ähnliche Projekte zu strukturieren und sicherzustellen, dass kein Package in zwei Module aufgeteilt ist, wird den Weg bereiten, später module-info.java-Dateien hinzuzufügen.

Jigsaw auf existierende Codebases anzuwenden wird vermutlich recht schwierig sein.

JAXenter: Es wird ohne Zweifel Java 9 Features geben, die eine Herausforderung für Entwickler darstellen werden – Ist Jigsaw eins davon? Welche Features finden Sie besonders herausfordernd?

Stephen Colebourne: Jigsaw auf existierende Codebases anzuwenden wird sich vermutlich recht schwierig gestalten. Es könnte durchaus so schwer sein, dass sich die Arbeit nicht lohnt. Module sind durchaus ein Langzeit-Feature.

Zum weiterlesen: “Java 9 is much bigger than Jigsaw”

JAXenter: Können Sie uns einige Beispiele geben, wie das Java 9-Erlebnis durch Module verbessert werden kann?
Stephen Colebourne: Gelingt es, ein System zu kreieren, wo der Code und sämtliche Abhängigkeiten modularisiert sind, wird der Code automatisch stabiler und besser gekapselt sein. Nach 20 Jahren wird die JVM endlich die Grenzen der jar-Datei (Modul) verstehen und respektieren/erzwingen. Das ist zwar „tough love“, wird aber letztendlich in besseren Ergebnissen resultieren.

JAXenter: Obwohl Mark Reinhold in der letzten JavaOne-Keynote sagte, dass Java 9 viel größer als Jigsaw ist, ist das zweifelsfrei der Star des Releases. Was ist aber mit den anderen JEPs? Welches davon gefällt Ihnen am besten?

Stephen Colebourne: Private Methoden in Interfaces. Die Möglichkeit statische und default Methoden zu Interfaces hinzufügen zu können, hat die Art und Weise, wie ich APIs designe deutlich verändert. Die Existenz von privaten Methoden wird es noch weiter verbessern. Gleichzeitig ermutige ich Leute immer wieder „public static“, „public abstract“ oder „public default“-Methoden in Interfaces zu schreiben, da dies die Verständlichkeit erhöht.

JAXenter: Es gibt ein neues Projekt von Nicolai Parlog, namens „WTF, Java 9“, in dem er kurze, eigenständige, korrekte (oder unkorrekte) Beispiele sammelt, die zeigen, was [in Java 9] nicht funktioniert und wie man dagegen vorgeht. Welche Probleme sind Ihnen persönlich beim Experimentieren mit Java 9 aufgefallen und wie haben Sie sie behoben?

Stephen Colebourne: Ich habe einige sehr frühe Versionen getestet und vieles hat dort nicht funktioniert. In letzter Zeit konnte ich allerdings keine nennenswerten Probleme feststellen.

Zum weiterlesen: Java 9 misconceptions & Java 10 wish list: A tell-it-all interview with Java influencers

JAXenter: Was ist bedeutendste Missverständnis im Bezug auf Java 9? Was ist mit Jigsaw?

Stephen Colebourne: Ein Großteil des aktuell existierenden Java-Codes wird auch weiterhin in Java 9 funktionieren. Der Klassenpfad existiert noch und Module sind Opt-in. Meiner Meinung nach sollten die meisten Anwendungsentwickler das Modulsystem gänzlich ignorieren, bis ihre Abhängigkeiten zumindest teilweise modularisiert wurden. Das größte Missverständnis besteht also in der Ansicht, dass alles plötzlich nicht mehr funktionieren wird, obwohl das Upgrade in der Tat nicht schlimmer sein wird als die anderen Java-Version-Upgrades.

JAXenter: Ist Jigsaw ein würdiger Gegner zu JBoss Modules und OSGi? Warum sollten Entwickler Jigsaw anstelle der beiden bereits bekannten Alternativen wählen?

Stephen Colebourne: Das Java Platform Module System hat nicht wirklich viel mit OSGi gemein. Letzteres eignet sich am besten für dynamische Module – also beispielsweise für Ökosysteme, in denen Module zur JVM-Laufzeit auftauchen und wieder verschwinden können. Das OSGi Module System behandelt zudem auch komplexe Fälle, etwa wenn zum Beipsiel zwei Versionen der gleichen Jar zur gleichen Zeit im Speicher sind. Komplexitäten dieser Art werden von den meisten Systemen nicht benötigt und es ist gut, dass das Platform Module System nicht derart weit greift. JBoss Modules habe ich noch nicht verwendet, daher kann ich dazu nichts sagen.

Das größte Missverständnis ist die Ansicht, dass alles plötzlich nicht mehr funktionieren wird, obwohl das Upgrade in der Tat nicht schlimmer sein wird als die anderen Java-Version-Upgrades.

JAXenter: Was würden Sie gerne in Java 10 sehen?

Stephen Colebourne: Ich hoffe, dass Java 10 viel schneller fertig wird als Java 9. Dementsprechend erwarte ich auch, dass es deutlich weniger Änderungen enthalten wird. Was ich in einer zukünftigen Version (nicht Java 10) erwarte, ist die Erweiterung von Datenklassen, sodass sie Use-Cases umfassen, für die heutzutage POJOs/beans genutzt wird. Das wäre eine sehr nützliche Entwicklung für Java.

JAXenter: Was werden die Teilnehmer aus Ihrem Vortrag mitnehmen können?

Stephen Colebourne: In meinem Vortrag zu Java SE 9 Modules, erläutere ich das Design des Modulsystems, erkläre wie man den eigenen Code modularisiert und weise auf etwaige Fallstricke hin. Ich finde, dass diese „gotchas“ immer am interessantesten und nützlichsten für die Teilnehmer sind.

Stephen Colebourne wird einen Vortrag auf der diesjährigen JAX London halten, der sich auf die Grundlagen des Java Platform Module Systems und dessen Auswirkungen, insbesondere auf Reflection, konzentrieren wird.

Lesen Sie mehr zum Thema in der aktuellen Ausgabe des Java Magazins 

In unserer Titelgeschichte erfahren Sie unter anderem, welche Neuerungen Java 9 mitbringt. Zusätzlich werfen die Autoren Angelika Langer und Klaus Kreft natürlich auch einen Blick auf den „Star“ in Java 9: das Modulsystem. Um zum Artikel zu gelangen, klicken Sie bitte hier: Das Wichtigste in Java 9: Die Highlights

Stephen Colebourne arbeitet seit Version 1.0 mit Java. Er ist ein Java Champion und JavaOne Rock Star Speaker. Bei OpenGamma produziert er Open Source Software für die Finanzindustrie, ist aber vor allem für seine Arbeit an Datum und Zeit in Java bekannt.

Verwandte Themen:

Geschrieben von
Gabriela Motroc
Gabriela Motroc
Gabriela Motroc ist Online-Redakteurin für JAXenter.com. Vor S&S Media studierte Sie International Communication Management an der The Hague University of Applied Sciences.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.