Suche
Interview mit Marcus Biel

Java 9 Release: „Jigsaw liefert den dringend benötigten Sicherheitsgurt für Java“

Gabriela Motroc

Marcus Biel

Oracle veröffentlichte vor Kurzem nach langen Jahren des Wartens endlich Java 9. Obwohl über 150 neue Features inbegriffen sind, redet die Community vor allem über ein ganz bestimmtes: Project Jigsaw, das Modulsystem für die Java-Plattform. Marcus Biel, Software Craftsman, CleanCode Evangelist und Mitglied des JCP, spricht im Interview mit uns über die Features, die ihm in Java 9 am besten gefallen und welche er nach wie vor schmerzlich vermisst. Auch auf die Frage, wie er das geplante Schema für die zukünftigen Versionsnummern von Java findet, gibt er Antwort.

Wir sprechen mit Marcus Biel, CleanCode Evangelist und Mitglied des JCP, über seine Lieblingsfeatures in Java 9, die Vorteile der Modularisierung in Java und das geplante Veröffentlichungsschema.

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


JAXenter: Das Warten hat ein Ende – Java 9 ist veröffentlicht worden. Was ist dein Lieblingsfeature und warum?

Marcus Biel: Ich finde die JShell ziemlich cool, auch wenn ich sie jetzt nicht gleich mein Lieblingsfeature nennen würde. Wenn ich wirklich wissen möchte, wie eine Klasse oder Methode funktioniert, experimentiere ich am liebsten einfach direkt mit dem Code. Im Gegensatz zu Dokumentationen lügt Code nie. Und Programmieren lässt sich nun mal am besten durch Programmieren erlernen, dafür ist die JShell optimal. Mich hat immer der Overhead genervt, der nötig war, um „nur mal eben kurz“ ein paar Codezeilen laufen zu lassen. Mit JShell geht das jetzt viel einfacher – am besten jeder probiert es gleich einfach einmal selbst aus!

JAXenter: Gibt es Features, die du gerne in Java 9 gesehen hättest, die aber diesmal nicht enthalten sind?

Marcus Biel: Ich bin eher daran interessiert, falsche Entscheidungen der Vergangenheit zurückzunehmen, als ständig neue Features zu Java hinzuzufügen. Java hat schon einige Jahre auf dem Buckel – da wird es wirklich Zeit mal „durchzulüften“. Auf der @JcreteUnconf haben wir hierzu gemeinsam ein paar ungeliebte Entscheidungen zusammengetragen, die es wert wären, entfernt beziehungsweise angepasst zu werden. Zum Beispiel:

  • Checked Exceptions
  • Serializable
  • Primitive Types
  • Cloneable
  • Vector and Hashtable
  • Null Referenzen

JAXenter: Projekt Jigsaw, das Modulsystem für die Java-Plattform, ist als Teil von Java 9 ebenfalls nun endlich verfügbar. Wie stehst du zu dem modularen System? Wirst du gleich mit den Modulen durchstarten oder eher nicht?

Marcus Biel: Die Modularisierung unter Jigsaw ist ein großer und richtiger Schritt, aber die Migration auf das modulare System wird zunächst einmal weh tun. Ein großes Projekt sauber(!) zu modularisieren, ist nicht einfach und kostet viel Zeit. In den Kundenprojekten, in denen ich selbst aktuell arbeite, steht überhaupt zunächst einmal der Umstieg auf Java 8 an. Der Umstieg auf Jigsaw hat dort also noch ein bisschen Zeit.

JAXenter: Projekt Jigsaw hätte eines der Hauptfeatures von Java 8 sein sollen, aber Oracle entschied sich, es zu verschieben. Stattdessen wurde es ein Kernfeature von Java 9 – hat sich in deinen Augen das Warten gelohnt?

Marcus Biel: Ein modularisiertes Java ist eine sehr tiefgreifende Änderung. Kein Feature sollte aus der Tür getreten werden, bevor es bereit ist. So gesehen hat sich das Warten gelohnt! Die eigentliche Frage für mich ist aber: War es wirklich sinnvoll, für die Entwicklung von Jigsaw die generelle Entwicklung von Java immer wieder nach hinten zu verschieben? Die Arbeit an Jigsaw begann bereits 2008, also vor fast zehn Jahren, denn Jigsaw war ursprünglich bereits für Java 7 geplant gewesen.

Wenn man sich nun die Abstände zwischen den einzelnen Java Releases ansieht, wird man feststellen: Bis zur Veröffentlichung von Java 7 dauerte es bis zum nächsten Release immer ein bis zwei Jahre. Dann aber wurden die Abstände plötzlich immer größer – was nicht zuletzt auch mit Jigsaw zu tun hatte. Als Reaktion darauf wechselt Oracle jetzt von seinem bisherigen Feature-getriebenen Release-Plan zu einem strikten, Zeit-getriebenen Release-Plan. In Zukunft wird es also alle sechs Monate eine neue Java-Version geben, ohne sich dabei auf bestimmte Features festzulegen. Oracle meint also offenbar, dass ein einzelnes Feature nicht den gesamten Release-Plan durcheinander bringen können sollte. Dem kann ich mich persönlich anschließen.

JAXenter: Oracle hat ein neues Versionierungsschema vorgeschlagen. Was heißt das für dich? Hältst du es für eine gute Idee, das herkömmliche zu ändern?

Ein halbjährlicher Release-Zyklus bietet die Chance, die Entwicklung von Java wieder zu beschleunigen, es zu entschlacken und zu modernisieren.

Marcus Biel: Prinzipiell halte ich es für begrüßenswert, in kurzen, regelmäßigen Zyklen eine neue Version von Java zu veröffentlichen. Es besteht gerade ein regelrechter Hype zu neuen, „hippen“ JVM-Sprachen wie Groovy, Clojure oder Kotlin. Warum? Aus meiner Sicht, weil die Weiterentwicklung von Java in den letzten Jahren möglicherweise ein wenig ins Stocken geraten war. Der geplante halbjährliche Release-Zyklus bietet die Chance, die Entwicklung von Java wieder zu beschleunigen, es zu entschlacken und zu modernisieren.

Allerdings hat mich das zugehörige neue Schema zur Versionsnummerierung noch nicht so ganz überzeugt. „18.3“, „18.9“, „19.3“ usw., das klingt für mich nach „klein und unbedeutend“. Außerdem birgt es für mich das Risiko, sich in einem „Versionswirrwarr“ zu verirren. Steige ich als Entwickler in ein neues Projekt ein, muss ich mich in kurzer Zeit mit einer großen Vielzahl verschiedener Versionen zurecht finden: 18.3, 18.9, 19.3, 19.9, 20.3 … Welche Version wird nun tatsächlich genutzt und wo liegen die Unterschiede? Welche Java Features werden im Projekt unterstützt und welche nicht? Und wie wird es mit den zahlreichen Java Frameworks aussehen? Werden auch sie auf halbjährliche Release-Zyklen umsteigen?

Nicht zuletzt sehe ich Risiken, was die Akzeptanz bei Firmen betrifft. Vor allem große Firmen sind eher träge, was Softwareupdates betrifft. Oracle hat deshalb alle drei Jahre ein Long Term Support Release (LTS) geplant. Die meisten Firmen werden daher vermutlich alle Short Term Releases ignorieren und lediglich alle drei Jahre ein LTS Release Update durchführen – was ich sehr bedauern würde!

JAXenter: Oracle hat den Wunsch geäußert, zukünftige OpenJDK Builds unter der GPL-Lizenz zu veröffentlichen. Das Unternehmen erklärte zudem, es werde zukünftig keine technischen Unterschiede zwischen OpenJDK Builds und Oracle JDK Binaries mehr geben. Was bedeutet das und warum sollten User die kommerzielle Lösung wählen?

Marcus Biel: Mit JDK 9 hat Oracle begonnen, Java direkt als OpenJDK unter GPL-Lizenz zu veröffentlichen. Es kann direkt heruntergeladen werden, ohne dafür eine bestimmte Lizenz akzeptieren zu müssen. Wenn man bisher ein Docker Image heruntergeladen hat, dass das Oracle JDK enthielt, konnte man sich dadurch (unwissentlich) die Lizenzvereinbarung von Oracle verletzen und sich damit strafbar machen. Dadurch, dass Oracle jetzt das OpenJDK frei verfügbar macht, wird das alles viel einfacher werden. Dies wird der gesamten Java-Community – und damit auch Oracle selbst! – nutzen und die Verbreitung von Java weiter fördern. Als Java-Entwickler freut mich das sehr!

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

Aktuell gibt es aber noch einige (wenige) Unterschiede zwischen dem OpenJDK und dem Oracle JDK. Zum Beispiel bringt das Oracle JDK aktuell noch zusätzliche Tools wie den Java Flight Recorder oder Mission Control. Bis Ende 2018 soll es aber keinerlei Unterschiede mehr zwischen dem OpenJDK und dem Oracle JDK geben. Das OpenJDK wird dann der De facto Standard sein. Neben dem OpenJDK wird es allerdings weiterhin das Oracle JDK geben, für das Oracle seinen Kunden Long Term Support anbieten möchte. Darüberhinaus wird es getrennt vom JDK weiterhin kommerzielle Features wie die Advanced-Management-Konsole geben.

JAXenter: Ist Java 9 aus Entwicklersicht genauso interessant wie Java 8? Warum ja, warum nein?

Mehr PS gelten in der Regel als cool und sexy, Sicherheitsgurte nicht. Schade eigentlich!

Marcus Biel: Die bedeutendsten Features von Java 8 sind zweifellos Lambdas und Streams. Es hat die Art und Weise geändert, wie wir Code schreiben; ein sehr mächtiges Werkzeug. Damit ist es aber auch automatisch ein sehr gefährliches Werkzeug, mit dem man schwer wartbaren Code schreiben kann. Das bedeutendste Feature von Java 9 ist Jigsaw. Jigsaw bedeutet zunächst einmal jede Menge zusätzlicher Aufräumarbeit für uns alle. Für mich als Clean-Code-Enthusiast sehe ich in Jigsaw aber ein großes Potenzial hin zu besser wartbarem, wiederverwendbarem und strukturierterem Code.

Dennoch bezweifle ich, dass Java 9 ähnlich großen Anklang bei Entwicklern finden wird, wie Java 8. Pla­ka­tiv ausgedrückt: Lambdas und Streams lieferten uns mehr PS für die Softwareentwicklung mit Java. Mit einigen Jahren Verspätung liefert uns Jigsaw jetzt endlich den dringend benötigten Sicherheitsgurt für Java. Mehr PS gelten in der Regel als cool und sexy, Sicherheitsgurte nicht. Schade eigentlich!

Marcus Biel ist Software Craftsman, JCP-Mitglied und CleanCode Evangelist. Auf Twitter findet man Marcus Biel unter dem Handle @MarcusBiel
 
 
 
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.