Suche
Interview mit Uwe Schindler

Java 9 Release: „An der Sprache an sich hat sich eigentlich nichts geändert“

Dominik Mohilo

Uwe Schindler

Endlich! Java 9 ist nach jahrelanger Entwicklungszeit veröffentlicht worden. Doch hat sich das Warten auf Projekt Jigsaw und Co. wirklich gelohnt? Darüber sprechen wir mit Uwe Schindler, Mitglied des Project Management Committee im Apache-Lucene-Projekt. Im Interview erläutert er, welche Features im noch fehlen und was er von den plänen zu den neuen Versionsnummern hält.

Wir sprechen mit Uwe Schindler, Gründer und Managing Director bei der SD DataSolutions GmbH, über die Vorteile der Modularisierung in Java und das geplante Veröffentlichungsschema.

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


JAXenter: Hallo Uwe und danke, dass du dir die Zeit genommen hast. Java 9 wurde ja vor wenigen Wochen veröffentlicht. Welches Feature ist für dich das wichtigste der neuen Java-Version?

Uwe Schindler: Natürlich sehe ich Jigsaw als eines der sogenannten „Major Features“ an! Die neuen Sprach-Features wie private Interface-Methoden sehe ich etwas kritisch. Kurz: An der Sprache an sich hat sich eigentlich nichts geändert.

Auf der API-Seite finde ich die Factory-Methoden für Collections sehr wichtig. Sie machen es endlich überflüssig, Google Guava oder Commons Collections ausschließlich dafür zu benutzen. Ich habe viele Projekte gesehen, die nur aufgrund dieser Factories eine riesengroße Bibliothek wie Guava zu ihrem Projekt hinzufügen.

In den Internas finde ich es toll, dass der Java 9 Compiler nun anstatt von StringBuilder den sogenannten Indy String Concat (JEP 280) benutzt, um Strings mit + zu verketten. Das entlastet den Garbage Collector sehr. Die in diesem Umfeld genannten Compact Strings sind ebenfalls hilfreich, aber gerade bei internationalen Applikationen wie Apache Lucene, Apache Solr oder Elasticsearch nicht optimal.

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

Uwe Schindler: Ich denke das lange Warten war es insofern wert, als dass wir jetzt eine Lösung haben, die größtenteils kompatibel mit vielen bestehenden Anwendungen ist. Es mag vielleicht noch nicht perfekt sein, aber das ist für den normalen Entwickler nicht wirklich relevant. Wir haben dadurch ein Laufzeitplattform bekommen, die im Gegensatz zu vorherigen Java-Versionen deutlich schlanker und vor allem sicherer ist, sofern man illegal-access=deny benutzt, was leider (noch) nicht standardmäßig aktiviert ist.

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

Für Anwendungs- entwickler besteht derzeit noch nicht wirklich ein Grund, sich auf das Modulsystem zu stürzen.

Uwe Schindler: Wie ich schon auf der JAX 2017 in dem Panel über Java 9 dargelegt habe, sehe ich für den Anwendungsentwickler derzeit noch nicht wirklich einen Grund, sich auf das Modulsystem zu stürzen. Der Grund hierfür ist der Fakt, dass zahlreiche Bibliotheken auf Maven Central noch nicht modularisiert wurden und auch mit den sogenannten Automodules nicht wie erwartet einsetzbar sind. Daher ist es auch vollkommen ausgeschlossen, bestehende Projekte mit wenig Aufwand auf das Modulsystem umzustellen. Im Grunde genommen war das Modulsystem auch hauptsächlich für die Strukturierung des JDKs vorgesehen! Es soll unter anderem ermöglichen, dass man sein Produkt mit einem kleineren, gebundelten JDK ausliefern kann. Um dies zu erreichen, kann man auch einen ganz einfachen pragmatischen Ansatz benutzen: Die ganze Applikation als ein riesiges Modul zu definieren und nur dessen Abhängigkeiten von den JDK-Modulen zu deklarieren. Dieses ermöglicht es einem dann, genau so eine minimale Laufzeitumgebung mit dem JLINK-Werkzeug zu erzeugen.

Bisherige Anwendungsentwickler sollten glaube ich erstmal Systeme wie OSGi einsetzen, da dies eher für die Anwendungsentwicklung vorgesehen ist! Setzt man aber ein vollständig neues Projekt auf, darf man trotzdem schon mal damit starten, „modulorientiert“ zu denken.

JAXenter: Welche Features fehlen deiner Meinung nach?

Durch sinnlose jahres- und monatsbasierte Versionsnummern ist die Maintenance von Libraries auf Maven Central und die Produktwartung sehr viel schwieriger geworden.

Uwe Schindler: Als Entwickler in den Bereichen Apache Lucene/Solr und Elasticsearch fehlt mir leider mit Java 9 immer noch ein Bugfix bzw. Feature, dessen Tragweite einem erst bewusst wird, wenn man auf riesige Datenmengen – eben Suchindexe – performant zugreifen muss. Wir benutzen Memory Mapping, um den Index in das virtuelle Memory des Prozesses zu mappen. Leider hängt die Freigabe solcher gemappten Adressbereiche am Garbage Collector und nicht an der Aktion des „Datei Schließen“. Die Gründe dahinter sind in Problemen mit Concurrency zu sehen, aber um dies trotzdem in den Griff zu bekommen, müssen wir Hacks benutzen, die durch das Modulsystem immer schwieriger umzusetzen sind. Daher hoffe ich, dass JDK-4724038 baldmöglichst in Angriff genommen wird!

Ach ja – zuletzt fehlen mir in diesem Zusammenhang auch 64-bittige Indexe in Java Arrays oder ByteBuffern. Gerade in Zeiten des Big Data ist das wirklich dringend notwendig.

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

Uwe Schindler: Ich sehe dies im Zusammenhang mit der neuen Versionsnummerierung etwas kritisch. Früher konnte man aufgrund der seltenen Releases mit aussagekräftigen Versionsnummern besser seine Produkte anpassen, vor allem wenn „inkompatible“ Änderungen auftraten. Durch kürzere Entwicklungszyklen und meiner Meinung nach sinnlosen jahres-/monatsbasierten Versionsnummern ist die Maintenance von Libraries auf Maven Central und die Produktwartung sehr viel schwieriger geworden. Die nächste Version von Java 9 im nächsten Frühjahr soll ja Version 18.3 sein. Ist das dann ein Super-Major-Release (9 nach 18) oder ist das ein drittes Minor-Release einer niemals erschienenen Version 18?

JAXenter: Vielen Dank für das Interview!

Uwe Schindler ist Mitglied des Project Management Committee im Apache-Lucene-Projekt. Er ist mit seiner Consulting-Firma SD DataSolutions GmbH in Bremen ansässig und kümmert sich am Zentrum für Marine Umweltwissenschaften (MARUM) um die Suche nach geowissenschaftlichen Daten in der Umweltdatenbank PANGAEA.Blog: http://blog.thetaphi.de Twitter: @ThetaPh1

 
HINTERGRUND ZUM THEMA:

Java 9 ist da! Project Jigsaw & die neuen Features auf einen Blick

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

Schreibe einen Kommentar

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