JavaRush /Java-Blog /Random-DE /Java-Trends im Jahr 2022: JDK 18 und 19, Project Loom und...

Java-Trends im Jahr 2022: JDK 18 und 19, Project Loom und Data Mesh

Veröffentlicht in der Gruppe Random-DE
Nun, das Jahr 2022 hat begonnen. Während die meisten Menschen noch mit Champagner und Olivier in den Neujahrsurlaub gehen, sprechen wir über Trends in der Welt von Java. Vielleicht hilft Ihnen dies dabei, Ihre Karriere zu analysieren, eine neue Technologie zu erlernen oder einen Entwicklungsplan für das kommende Jahr zu erstellen. Java-Trends im Jahr 2022: JDK 18 und 19, Project Loom und Data Mesh – 1Der Java-Sprachspezialist und Dozent Andrey Rodionov sowie der Lösungsarchitekt bei EPAM und Leiter des Devoxx Ukraine-Programmkomitees Oleg Tsal-Tsalko sprachen darüber, was Java im Jahr 2022 und in der nahen Zukunft erwartet.

Wie sind die Aussichten für Java im Jahr 2022?

Java-Trends im Jahr 2022: JDK 18 und 19, Project Loom und Data Mesh – 2In diesem Jahr erwarten wir die Veröffentlichung der nächsten beiden Versionen: JDK 18 (im März) und JDK 19 (im September). Potenziell interessant für die meisten Java-Entwickler in JDK 18 könnten sein:
  • Integrierter einfacher Webserver ohne Unterstützung für einen Servlet-Container, der für schnelles Prototyping und Testen verwendet werden kann, ähnlich wie ähnliche Mini-Webserver in Python, Ruby, PHP.
  • Der Mustervergleich verbessert sich weiter.
Für JDK 19 gibt es bereits einen Early-Access-Build, es gibt jedoch noch keine offizielle Liste dessen, was darin enthalten sein soll. Ich würde gerne glauben, dass JDK 19 zumindest den ersten stabilen Prototyp von Project Loom enthalten wird, für das kürzlich Entwurfsspezifikationen erschienen sind und dessen neuester Build auf JDK 19 basiert. Auf Project Loom werden wir weiter unten ausführlicher eingehen.

Für welche Bereiche bleibt Java die einzige Lösung und wo ist es vorzuziehen?

Andrey Rodionov:

Glücklicherweise können wir nicht sagen, dass es für keinen der Bereiche eine Alternative zu Java gibt, aber wir können von Java als einer Art goldenem Mittel für die Entwicklung von Unternehmensanwendungen, Backends und Microservices sprechen. Erwähnenswert ist auch die zunehmende Zahl verschiedener JDK-Distributionen verschiedener Anbieter (außer Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (gegründet von Mitarbeitern des Oracle Development Center in St. Petersburg) und andere. Die vollständigen Distributionen finden Sie hier . Java-Trends im Jahr 2022: JDK 18 und 19, Project Loom und Data Mesh – 3Es gibt immer Alternativen, aber Java findet seinen größten Einsatz im Backend der Unternehmensentwicklung. Die meisten großen Unternehmen entscheiden sich für Java für ihre großen und komplexen Systeme. Die Gründe sind dieselben: die Anzahl der Entwickler und das Fachwissen auf dem Markt, ein riesiges Ökosystem und eine leistungsstarke JVM-Plattform.

Welche Aussichten haben andere JVM-Sprachen, insbesondere Kotlin, im Vergleich zu Java?

Andrey Rodionov:

Um zu verstehen, welche JVM-Sprachen beliebt sind, öffnen Sie einfach die Dokumentation für Spring, Micronaut, Vert.x und sehen Sie, in welchen Sprachen die Codebeispiele angegeben sind – Java und Kotlin werden häufig vorkommen. Man kann nicht sagen, dass es einen massiven Übergang von Projekten zu Kotlin gibt, aber seine Popularität für das Backend wächst weiter und viele Frameworks versuchen, es in ihr Ökosystem einzubinden. Was Scala betrifft, werden neue Versionen veröffentlicht und es wird weiterhin aktiv für ML, Datenverarbeitung und dort eingesetzt, wo das Paradigma der funktionalen Programmierung bequemer ist.

Oleg Tsal-Tsalko:

Andere JVM-Sprachen sind recht attraktiv und heutzutage ist es ganz normal, dass ein Projekt mehrere Programmiersprachen verwendet. Mir scheint, dass die Gründe, warum neumodische JVM-Sprachen Java nicht ersetzen können, folgende sind:
  • Sie sind nicht so cool, dass jeder sie einfach nehmen und darauf umsteigen würde.
  • Sie werden im gleichen Segment wie Java verwendet.
  • Java übernimmt nach und nach das Beste aus anderen Sprachen und wird besser.

Wird es aufgrund kürzerer Release-Intervalle zu einem Qualitätsverlust bei Java kommen?

Oleg Tsal-Tsalko:

Ich denke nicht. Zumindest kann ich den häufigen Veröffentlichungen jetzt mehr Positives entnehmen. Wir sehen, dass neue coole Features viel häufiger auftauchen. Jetzt müssen Sie nicht mehr 5 Jahre warten, bis etwas Neues in der Sprache erscheint. Natürlich sollten Sie jetzt keine so grandiosen Veröffentlichungen wie Java 8 erwarten, da die Funktionen jetzt in kleinen Iterationen erscheinen.

Gibt es Funktionen in neuen Java-Versionen, die für Entwickler besonders wichtig sind?

Oleg Tsal-Tsalko:

Neuere Java-Versionen haben mehrere interessante Funktionen wie Mustervergleich, versiegelte Klassen und Datensätze eingeführt. Ich würde empfehlen, sich ihre Fähigkeiten anzusehen. Natürlich sind die wichtigsten und am meisten erwarteten Features für Project Loom und Project Valhalla geplant, aber ich denke, dass Features innerhalb dieser Projekte auch nach und nach veröffentlicht werden.

Spring Framework: Wird es sein Ökosystem weiter ausbauen, um den unterschiedlichen Bedürfnissen gerecht zu werden?

Andrey Rodionov:

Was das Spring Framework betrifft, so konzentrierte sich seine Entwicklung auf die Unterstützung verschiedener Funktionen von Spring Cloud und die Möglichkeit, Spring Boot in native Binärdateien zu kompilieren – das Spring Native-Projekt, das in Zukunft Teil von Spring Core sein soll. In dieser Hinsicht blieb Spring aufgrund des aktiven Einsatzes von Reflexion und dynamischer Codegenerierung hinter Micronaut und Quarkus zurück. Bezüglich Spring Framework 6 empfehle ich Ihnen, sich den Bericht „Spring 6 and Beyond“ anzusehen. Was ist neu in Spring Framework 6? von der Joker-Konferenz (von Oleg Dokuka und Alexey Nesterov). Die wichtigsten sind der Übergang zu JDK 17, der Verzicht auf XML-Konfiguration und Autowire durch Setter, die Weiterentwicklung der Kotlin-Unterstützung und das Spring-Fu-Projekt.

Oleg Tsal-Tsalko:

Spring, als derzeit beliebteste Java-FW, will die Palme nicht abgeben. Ich bin sicher, dass das Entwicklungsteam sein Bestes in die Spring-Entwicklung stecken wird. Der Frühling füllt immer mehr Nischen. Beispielsweise hat Spring mit seinem Project Reactor viel im Bereich Reactive Streams/Reactive Programming geleistet. Jetzt fördern sie das RSoket-Protokoll, das ebenfalls vielversprechend aussieht.

Erzählen Sie uns etwas über das Loom-Projekt: Wozu dient es, welche Probleme löst es?

Andrey Rodionov:

Project Loom ist wahrscheinlich die interessanteste Innovation, die zu einer neuen tektonischen Verschiebung für die gesamte JVM-Plattform und alle Sprachen auf der JVM werden könnte. Project Loom wirkt sich möglicherweise nicht so stark auf normale Entwickler aus, aber es wird sich definitiv auf das gesamte Ökosystem, Bibliotheken, Frameworks und andere JVM-Sprachen auswirken, die Multithreading verwenden. Project Loom führt eine neue Thread-Abstraktion ein – virtuelle Threads (analog zu Coroutinen). Wenn zuvor ein Java-Thread direkt an einen Betriebssystem-Thread gebunden war und die Erstellung eines neuen Threads in Java zur Erstellung eines neuen Betriebssystem-Threads führte, ist diese Eins-zu-eins-Beziehung bei virtuellen Threads unterbrochen. Beim Erstellen eines neuen virtuellen Threads wird kein neuer Betriebssystem-Thread erstellt, sondern einer der sogenannten Träger-Threads (eine Art Analogon eines Betriebssystem-Thread-Pools) wird für die Durchführung direkter Berechnungen wiederverwendet. Somit können mehrere virtuelle Threads auf einem Betriebssystem-Thread ausgeführt werden. Für Rechenaufgaben bietet dieses Modell virtueller Threads keine Vorteile und verlangsamt eher die Berechnungsgeschwindigkeit. Für Blockierungsvorgänge wie die Verarbeitung von HTTP-Anfragen, das Warten auf Antworten aus der Datenbank oder von Mikrodiensten ist dieses Modell jedoch ein Problem erheblicher Vorteil. Tatsache ist, dass beim aktuellen Threading-Modell das Blockieren/Warten auf einen Java-Thread zu inaktiven Betriebssystem-Threads führte – dies war eine Verschwendung von Ressourcen und erforderte die Erstellung weiterer Betriebssystem-Threads. Im virtuellen Thread-Modell führt das Blockieren/Warten auf einen virtuellen Thread dazu, dass der Träger-Thread, auf dem der virtuelle Thread ausgeführt wurde, freigegeben wird und ein anderer virtueller Thread darauf ausgeführt wird. Auf diese Weise werden Betriebssystem-Threads optimaler genutzt und es werden weniger Threads benötigt, um ähnliche Aufgaben auszuführen. Dementsprechend müssen Hersteller von Bibliotheken, Frameworks und JVM-Sprachen ihren Code für virtuelle Threads anpassen. Deshalb steht ihnen eine große Neufassung bevor :) Neben dem virtuellen Thread-Modell ist auch die Einführung einer neuen API zur Vereinfachung der Thread-Orchestrierung geplant – die sogenannte strukturierte Parallelität. Mittlerweile wird strukturierte Parallelität beispielsweise aktiv in Kotlin-Coroutinen und Scala ZIO eingesetzt. Leider sind die JDK-Version und sogar das Erscheinungsjahr von Project Loom noch unbekannt. Auf die Frage nach dem Veröffentlichungsdatum antwortet der Chefarchitekt der Java-Plattform, Brian Goetz, mit einem philosophischen Satz: „Es wird fertig sein, wenn es fertig sein wird.“ Daher warten wir ab und können experimentelle Builds von Project Loom ausprobieren .

Oleg Tsal-Tsalko:

Loom ist ein großes Dachprojekt, in dessen Rahmen das OpenJDK- und Oracle-Team an Parallelitätsinnovationen in Java und JVM arbeitet: virtuelle Threads, Fasern und Fortsetzungen. Höchstwahrscheinlich wird die Veröffentlichung dieser Funktionen schrittweise erfolgen. Im Moment gibt es nur Early Access-Builds für die Unterstützung virtueller Threads. Insbesondere bei virtuellen Threads besteht das Hauptziel darin, das Multithread-Entwicklungsmodell in Java zu vereinfachen, indem Millionen von leichtgewichtigen Threads mit derselben Semantik wie reguläre Plattform-Threads verwendet werden. Unter der Haube werden diese Threads im ForkJoinPool verwaltet und von Plattform-Threads wiederverwendet.

Wie lauten die Prognosen für die Entwicklung von Java in der Welt der globalen Trends – Microservices, Cloud-Architektur, Blockchain, KI?

Andrey Rodionov:

Wenn wir über globale Trends sprechen, haben sich daran nicht viel geändert. Der Haupttrend liegt nach wie vor bei Kubernetes und der Infrastruktur drumherum in Form von Service Mesh . Auch als eine Art Abstraktion zur Verwaltung verteilter Datenquellen und -speicher erfreut sich Data Mesh zunehmender Beliebtheit.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION