GraphQL startet nun auch im Java-Ökosystem durch

Seite 3: GraphQL in Jakarta – das Urgestein

Inhaltsverzeichnis

Jakarta EE ist ein Open-Source-Projekt unter dem Dach der Eclipse Foundation und ersetzt seit 2020 das große Java EE Enterprise Framework, das Oracle 2017 aufgegeben hatte. Auch wenn das Java EE Framework seit Ende der 2010er-Jahre an Bedeutung verloren hat, spielt es neben dem Spring weiterhin eine wichtige Rolle. Vor allem dann, wenn es um die Wartung und Pflege älterer Java-Anwendungen geht.

Jakarta EE vereint eine Menge von Jakarta-Spezifikationen und deren Referenzimplementierungen, die von unterschiedlichen Organisationen bereitgestellt werden. GraphQL sucht man in der Liste der Spezifikationen jedoch vergeblich. Allerdings ist das Jakarta-EE-Ökosystem dafür bekannt, neue Trends und Technologien wie GraphQL erst mit einiger Verzögerung aufzunehmen. Bis die Jakarta EE Working Group ein neues GraphQL-Spezifikationsprojekt aufgesetzt hat, der Jakarta EE Specifications Process (JESP) für GraphQL durchlaufen ist und eine Referenzimplementierung bereitsteht, vergeht geraume Zeit.

Ein Spezifikationsprojekt und eine Aufnahme in die Roadmap von Jakarta EE 10 wäre allerdings wichtig, damit GraphQL auch aus dem Java EE-Ökosystem Unterstützung erfährt und sich dort in der Breite einsetzen lässt.

Das auf renommierte Anbieter von Application-Servern zurückgehende Open-Source-Projekt MicroProfile liegt ebenfalls in der Verantwortung der Eclipse Foundation. Es spielt in der Java-Welt eine bedeutende Rolle und erfreut sich einer großen Fangemeinde. Wie Jakarta setzt auch MicroProfile auf Spezifikationen und Referenzimplementierungen (siehe "Eclipse MicroProfile", Thilo Frotscher, Java aktuell 2019). Allerdings ist das Projekt wesentlich schneller unterwegs und hat innovative Trends und Technologien im Blick. Daher startete bereits 2019 eine GraphQL-Initiative und eine GraphQL-Spezifikation 1.0 mit MicroProfile 4.0 erschien im Jahr 2020. Allerdings läuft die GraphQL-Spezifikation noch unter "Standalone – Outside Umbrella", ist also nicht Bestandteil der offiziell unterstützten und ausgelieferten Spezifikationen. Auf der MicroProfile-Roadmap für 2022 steht die Entscheidung noch aus, ob die bereits in der Version 1.1 verfügbare GraphQL-Spezifikation aufgenommen wird oder nicht. Eine positive Entscheidung würde GraphQL sicherlich spürbaren Schub verleihen.

Eine Implementierung gibt es bereits: das herstellerunabhängige SmallRye GraphQL. Es unterstützt die untersuchten Enterprise-Features und ist qualitativ gut umgesetzt. Das liegt im Wesentlichen daran, dass sich SmallRye GraphQL mit den Implementierungen der Spezifikationen aus MicroProfile und Jakarta EE kombinieren lässt. Damit steht eine Vielzahl von Enterprise-Features zur Verfügung. Doch die Kombination hat auch ihren Preis: Die Integration müssen Entwicklerinnen und Entwickler nämlich selbst vornehmen. Auch lässt die Qualität der Dokumentation zu wünschen übrig. Um bestimmte Enterprise-Features prüfen zu können, ist ein Studium der Issues, bisweilen sogar des Sourcecodes notwendig.

Ein entscheidender Vorteil von SmallRye GraphQL ist die Unabhängigkeit von Herstellern, wie das bei den GraphQL-Implementierungen von Open Liberty oder Wildfly der Fall ist. Zudem implementiert SmallRye nicht nur die GraphQL-Spezifikation, sondern auch viele andere Spezifikationen aus MicroProfile. Das ist bei der Kombination von GraphQL mit anderen Implementierungen aus MicroProfile ein nicht zu unterschätzender Vorteil.

Prominente javabasierte Microframeworks sind Quarkus, Micronaut oder Helidon. Die Microframeworks folgen jeweils einer eigenen Vorgehensweise, um schlank und schnell zu bleiben. Quarkus setzt auf MicroProfile und unterstützt die Implementierung der GraphQL-Spezifikation von SmallRye GraphQL. Damit sind die Anforderungen an die Enterprise-Features erfüllt und eine gute Qualität der Implementierung sichergestellt. Micronaut und Helidon bauen auf eigene Implementierung der GraphQL-Spezifikation (siehe "MicroProfile GraphQL Supports Now Available in Helidon MP", Tim Middleton, Medium 2020). Deren Qualität wurde allerdings aufgrund geringer Verbreitung nicht geprüft.

Die Dokumentation ist in beiden Fällen recht kurz und beschreibt im Wesentlichen den Umgang mit GraphQL-Queries und -Mutations – Themen zu Enterprise-Features wie Security und anderen lässt sie aus. Lösungen aus dem Spring-Ökosystem sind bei den Microframeworks nicht so beliebt, denn das Spring-Framework ist den "Micronauten" zu monolithisch.