Suche
Unser Experten-Check zu Java 10 – Teil 4

11 Expertenmeinungen zu Java 10: Wie steht es mit dem neuen Release-Zyklus und der Legacy?

Gabriela Motroc
Jaxenter

Im vierten Teil unserer Interviewserie zu Java 10 geht es um den verkürzten Release-Zyklus und die Legacy. Was halten unsere Experten vom neuen Release-Zyklus? Ergibt es wirklich Sinn, alle sechs Monate eine neue Java-Version zu veröffentlichen? Und wie steht es mit der Legacy von Java 10? Wird es überhaupt eine geben?

Nach den ersten drei Teilen unserer Interviewserie geht es dieses Mal ans Eingemachte: Wie sieht es mit der vielleicht wichtigsten Neuerung bei Java 10 aus – dem neuen Release-Zyklus? Und wird sich für Java 10 ein Legacy Guide lohnen? Oder werden die Neuerungen womöglich Teil der regulären Code-Basis und als solche mit der Zeit einfach integriert? Vor allem bei der zweiten Frage herrscht diesemal Einigkeit.

Glaubst du, dass es nach all den Verzögerungen in der Vergangenheit nicht etwas zu viel ist, jedes Jahr zwei Feature Releases herauszubringen? Bewegt man sich hier nicht von einem Extrem zum anderen?

Die Java-Experten

Donald Smith ist Senior Director des Produktmanagements bei Oracle.

Dr. Wayne Citrin ist CTO und Co-Founder von JNBridge, LLC.

Greg Luck ist CEO und CTO von Hazelcast.

Lukas Eder ist Gründer und Leiter der Forschung und Entwicklung bei der Data Geekery GmbH, dem Unternehmen hinter jOOQ und Java-Champion.

Marcus Biel ist Software-Handwerker, JCP-Mitglied und CleanCode-Prediger.

Markus Eisele ist Leiter der Developer Advocacy bei Lightbend und Java-Champion.

Nicolai Parlog ist Entwickler (vor allem Java), Blogger bei CodeFX, Autor, YouTuber und Trainer.

Richard Gall ist Communications Manager bei Packt.

Simon Ritter ist der Vize-CTO von Azul Systems.

Trisha Gee ist Developer Advocate bei JetBrains, ein Key-Member der Londoner Java Community und Java-Champion.

David Heffelfinger ist Java-Champion und Jakarta EE Consultant und Ausbilder.

Donald Smith: Es wird zwar Zeit brauchen, bis das Ökosystem mit der neuen Release-Kadenz und deren Bedeutung vertraut ist. Aber wir sind zuversichtlich, dass der neue Release-Zyklus es den Entwicklern letztendlich erleichtern wird, von einer Version zur nächsten zu wechseln.

Die Migration von Java 9 auf Java 10 wird nicht wie die Migration von 7 auf 8 sein. Die Menge der gelieferten Innovationen bleibt gleich, aber die Geschwindigkeit, mit der sie geliefert werden, steigt, ohne die Erfahrung der Entwickler zu stören.

Die moderne Anwendungsentwicklung erwartet eine einfache, offene Lizenzierung und eine vorhersehbare, zeitbasierte Frequenz – und das neue Modell bietet beides.

Wayne Citrin: Ich habe schon zu Protokoll gegeben, dass es zu früh für ein neues Feature Release ist und dass zwei Releases im Jahr einfach zu viel sind. Hier besteht die sehr reelle Gefahr, dass die Java-Gemeinschaft eine „Release-Müdigkeit“ entwickelt, da ihre Begeisterung durch zu viele Releases verschwendet wird.

Simon Ritter: Ich denke, dass wir das abwarten müssen! Die Release-Kadenz ist schnell, was großartig ist, weil es Entwicklern ermöglicht, schneller an neue Features zu kommen. Das ist etwas, worum viele Entwickler gebeten haben. Für die Bereitstellung und den Zugriff auf Bugfixes und Sicherheitspatches wird das jedoch eine größere Herausforderung sein. Wir bei Azul bemühen uns sehr, das mit unseren Zulu Builds von OpenJDK einfacher für die Anweder zu machen.

Richard Gall: Es ist nur ein anderer Ansatz. Feature-Releases kommen auf jeden Fall. Auch wenn es nur kleine Neuerungen gibt: Es wird veröffentlicht. Wichtige, neue Features sind deswegen immer noch nicht zwangsläufig verfügbar. Entwicklung hat ein gewisses Tempo, das sich daraus definiert, wie oft man ein Release vom aktuellen Stand der Entwicklung veröffentlicht. Das ist Business. Ein Release bringt Kosten mit sich. Aber je schneller ein Feature verfügbar ist, desto schneller kann es in der Produktion Wert generieren.

Trisha Gee: Es hört sich jedenfalls sehr ambitioniert an! Doch viele Anwendungen, Tools und Produkte veröffentlichen heute mehrere Releases pro Tag. Im Vergleich dazu sind zwei Releases für Java pro Jahr immer noch sehr „langsam“. Natürlich unterscheiden sich Sprachupdates ein wenig von den kleineren Änderungen, die z.B. die Funktionsweise von Facebook verändern.

Es ist aber aus zwei Gründen vorteilhaft: Erstens gibt es nun regelmäßige vorhersehbare Aktualisierungen der Sprache (anstatt einer undefinierten Wartezeit, die es etwa für Java 9 gab), was die Planung innerhalb einer Organisation wesentlich leichter macht. Zweitens kann ich mich als Entwicklerin jetzt gleich mehrfach auf Verbesserungen (sei es in der Performance, Syntax oder was auch immer) innerhalb eines Jahres freuen, was sehr aufregend ist. Es hilft, dass diese Releases auch in Zukunft viel kleiner sein werden, denn als Entwickler muss ich mich nur mit einem kleinen Satz von Änderungen auseinandersetzen, anstatt mit einem massiven Release.

David Heffelfinger: Ich denke, es ist noch zu früh, um das zu sagen. Wir haben uns daran gewöhnt, alle paar Jahre eine neue Java-Version zu bekommen. Die neue Release-Kadenz wird sicherlich einige Anpassungen erfordern. Es gibt noch einige offene Fragen darüber, wie sich die neue Release-Kadenz auf Java IDEs und Schulungsmaterialien (Bücher, etc.) auswirken wird. Einige befürchten, dass IDEs nicht mit der Änderungsrate Schritt halten können und dass Schulungsmaterialien zu früh veraltet sein könnten.

Lukas Eder: Ich sehe da kein Problem, ehrlich gesagt. Aus Sicht der Anbieter von Bibliotheken wird zwar ein wenig mehr Arbeit nötig, aber sobald Java 9 nicht mehr unterstützt wird (noch in diesem Monat), interessiert sich keiner mehr für Java 9.

Markus Eisele: Hier schlagen zwei Herzen in meiner Brust. Einerseits glaube ich schon, dass jeder Java-Entwickler gespannt auf eine schnellere Weiterentwicklung der Runtime wartet. Neue Features, die aktuelle Bedürfnisse besser reflektieren und bedienen sind heutzutage ein Muss, um produktiv zu bleiben und Kunden wertvolle Produkte zu liefern.

Auf der anderen Seite ist es für Unternehmen keine leichte Aufgabe, dieser beschleunigten Release-Kadenz nachzukommen. Das offizielle Fenster für die Unterstützung muss ebenfalls schrumpfen. Ich bin in dem Zusammenhang auf die Berichte von Nutzern über deren Erfahrungen und Prozesse zur Anpassung an die neue Release-Kadenz gespannt.

Aber selbst für Unternehmen könnte sich das Ganze lediglich als neuer und beschleunigter Prozess herausstellen, für Library-Entwickler und Open-Source-Projekte wird es eine größere Herausforderung. Die recht große Anzahl unterstützter Java-Versionen erfordert, dass sie verschiedene Versionen beibehalten und eine sinnvolle Zahl von JDK-Versionen unterstützen, die von ihren Kunden verwendet werden. Das Stichwort hier ist Multi-Release JAR. Ob dies für alle Anwendungsfälle geeignet ist, ist eine Frage, die im Laufe der Zeit beantwortet werden wird.

Nicolai Parlog: Das ist eine gute Frage. Die neue Release-Kadenz hat das Potential, das Ökosystem in eine gigantische Anhäufung inkompatibler Versionen aufzusplittern, auch wenn ich nicht glaube, dass das sehr wahrscheinlich ist. Ich denke, wir müssen einfach abwarten und sehen, was dabei rauskommt.

Marcus Biel: Als waschechter Deutscher müsste ich wohl nun sagen, dass alles schrecklich ist und früher alles besser war 😉 Aber ernsthaft: Auch, wenn es etwas ungewohnt ist, neue Java-Releases so schnell zu bekommen, finde ich die neue und schnellere Release-Kadenz wirklich gut. Es ist definitiv ein Schritt in die richtige Richtung.

Greg Luck: Ja, das ist zu viel. Die Community will nur alle drei bis vier Jahre eine neue Version von Java. Oracle beschleunigt Java-Releases, kombiniert mit einer Verkürzung der Supportzeit für diese neuen Releases. Jedenfalls wenn man kein Kunde von Oracle ist. Java 9 und Java 10 werden nur für sechs Monate unterstützt! Java 9 wird also ab März 2018 nicht mehr unterstützt! Wenn Sie Kunde sind, können Sie mit einem „Long Term Support“ (LTS) Release besser abschneiden. Das erste LTS Release wird Java 11 sein, das im September dieses Jahres fällig wird. Oracle hat noch nicht angekündigt, wie lange öffentliche Updates verfügbar sein werden. Wenn Sie jedoch Supportkunde sind, können Sie Premier Support bis 2023 und Extended Support bis 2026 in Anspruch nehmen:

„Kunden, die längere Support- und Wartungszeiträume für Feature Releases wünschen, sollten auf die Oracle-Java-SE-Produktangebote (Oracle Java SE Advanced, Oracle Java SE Advanced Desktop und Oracle Java SE Suite) migrieren. Für Releases nach Java SE 8 werden Oracle-Java-SE-Produkt-Releases, die nicht als LTS-Releases bezeichnet werden, bis zum nächsten Release beibehalten. Siehe Oracle Java SE Roadmap.“

Warum sollte man eine Java-Version verwenden, für die man keine neuen Updates erhalten kann? Java 9 und Java 10 sollten aus produktionstechnischer Sicht als Beta-Versionen betrachtet werden. Und das Augenmerk liegt auf Java 11. Wenn Oracle aggressiv die Monetarisierung von Java verfolgt, dann wird Java 11 ein kurzes öffentliches (kostenloses) Wartungsfenster haben, danach wird es wohl auch als „non-production“ Version angesehen.

Ich denke, dass beinahe die gesamte Java-Anwenderbasis bei Java 8 bleiben und die endgültige Position von Oracle zu all dem abwarten wird, nachdem ihre Monetarisierungsstrategie aufgegangen ist. Darauf werden wir wahrscheinlich noch einige Jahre warten. In der Zwischenzeit sehen wir bereits, Azul Systems boomen, die eine Alternative zum Java Support von Oracle bieten. Dieser Bereich der Oracle-Alternativen wird in meinen Augen wachsen. Außerdem glaube ich, dass die aktuelle Situation bei Java die Entwicklung und das Wachstum anderer Programmiersprachen stärkt. Bei Hazelcast reagieren wir darauf etwa mit Clients für C++, .NET, Scala, Node.js, Python und (jetzt neu verfügbar) Go.

Sollten sich Legacy-Entwickler darüber Gedanken machen, wie sie die Vorteile von Java 10 nutzen können? Brauchen wir einen Legagcy Guide für Java 10 oder ist dieses Release einfach zu minimal bzw. unwichtig für so etwas?

Donald Smith: Die neue Frequenz soll das Innovationstempo beschleunigen und gleichzeitig die Disruption von Entwicklererfahrungen minimieren. Wir glauben, dass die in Java 10 eingeführten neuen Funktionen dazu beitragen werden, die Effizienz zu maximieren, anstatt die Nutzung von Java für Legacy-Entwickler zu erschweren.

Wayne Citrin: Das Thema ist von Bedeutung, wenn man ein Entwickler mit sehr speziellen Bedürfnissen ist, welche direkt von Java 10 gelöst werden können. Aber ansonsten ist dieses Release einfach zu unbedeutend für Legacy-Entwickler, als dass sie sich Sorgen machen müssten. Ich habe dennoch versucht, einen Leitfaden für Entwickler zusammenzustellen, da mein Leitfaden zu Java 9 sehr populär war. Aber ich konnte nicht viel dafür auftreiben, das erwähnenswert wäre.

Simon Ritter: Ich glaube nicht, dass das JDK 10 so viel Inhalt hat, um einen Legacy Guide zu rechtfertigen. Wenn es Entwickler jedoch erwägen, von JDK 8 (oder einer vorherigen Version) auf JDK 10 umzusteigen, müssen sie überlegen, wie sie auf das Java Platform Module System (JPMS) migrieren, das mit JDK 9 eingeführt wurde. Das ist immer noch da, sodass die Entwicklung für JDK 10 immer noch Entwickler benötigt, die sich mit JPMS-Problemen auseinandersetzen müssen.

Richard Gall: Definitiv ein kleines Release. Der Legacy Guide würde so aussehen: „Hey Leute! Ihr könnt var verwenden, wenn ihr den Typ einer lokalen Variable nicht explizit definieren wollt.“ Und das war es dann auch schon.

Trisha Gee: Das ist eine gute Frage. Ich denke, dass es mit der schnelleren Release-Zyklen mehr Sinn ergibt, einen lebendigen Guide zu erstellen, wie man modernes Java programmiert. Das ginge dann anstatt eines „Leitfadens für Java 10/11/12“. Der moderne Guide sollte beim Release relevanter Features aktualisiert werden.

David Heffelfinger: Die meisten Java-10-Änderungen sind „unter der Haube“ (verbesserte Garbage Collection, etc.). Die einzige benutzerfreundliche Funktion ist die Typinferenz für lokale Variablen, was ein relativ kleines Feature ist. Ein Legacy Guide zu Java 10 klingt ein wenig nach Overkill. Wahrscheinlich reicht ein Blog-Post oder ein Onlineartikel aus, damit kompetente Java-Entwickler mit neuen Java 10 Features auf dem Laufenden bleiben.

Lukas Eder: Soweit ich das beurteilen kann, ist das eher unnötig. Sogar JEP 286 sieht eher wie eine kleine Änderung aus, wenn man das mit Lambdas, Methodenreferenzen, Interface-Methoden usw. vergleicht.

Markus Eisele: Man sollte dieses spezielle Release nicht überbewerten. Das einzige neue Feature ist die Locale-variable Type Inference (JEP 286). Was das Ökosystem nun lernen kann, ist mit der Koexistenz verschiedener JDK-Versionen im Lebenszyklus der Entwicklung richtig umzugehen. Die Branche erwartet von uns, dass wir uns mit neuen Releases auf verschiedenste Weise zeitnah auseinandersetzen und für mich persönlich ist dies das Wichtigste.

Nicolai Parlog: Wer es schaffte, alles mit Java 9 zum Laufen zu bringen, wird mit Java 10 keinerlei Schwierigkeiten haben, ergo gibt es keinen Bedarf für eine Migrations- oder Legacy-Anleitung.

Das bedeutet übrigens nicht, dass das Release unwichtig sei. Jede neue Version von Java ist ein Schritt auf einem langen, andauernden Pfad. Manche Schritte sind größer, die Value Types beispielsweise, aber jeder einzelne Schritt ist wichtig.

Marcus Biel: Da dieses Release eher klein ist, erwarte ich keine wirklichen Probleme.

Greg Luck: Da fast niemand Java 10 verwenden wird, denke ich nicht, dass wir von einer Java 10 Legacy sprechen sollten. Stattdessen denke ich, dass wir es als Java 10 Sideshow bezeichnen können.

Die Änderungen sind so gering, dass sie schrittweise in die bestehende Code-Basis integriert werden können. Java 10 ist nicht so disruptiv wie Java 9 und das Modulsystem. Wenn eine Anwendung auf Java 9 läuft, wird sie wahrscheinlich auch auf Java 10 funktionieren.

Im letzten Teil unserer Interviewserie wird es noch einmal richtig spannend: Unsere Java-Experten geben ihre Meinung zum Modulsystem von Java 9 ab und erzählen, welche Wünsche sie für Java 11 haben.

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
  1. Christian2018-04-19 13:08:36

    Aktuell zeigt sich schon das Problem, dass Oracle Fehler lieber in künftigen Releases (in diesem Fall Java 11) behebt, als sie in der offiziellen aktuellen Version (10). Das ist äußerst ärgerlich!

  2. Sebastian2018-04-22 14:19:47

    @Christian:
    Interessehalber: um welche(n) Fehler handelt es sich dabei?

Schreibe einen Kommentar

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