GraphQL für Java-Anwendungen
24. März 2021, 9-17 Uhr (online)
Effizient Daten austauschen und gleichzeitig auch noch einfach in der Entwicklung sein – all das verspricht die Abfragesprache GraphQL!
Eine Kern-Idee von GraphQL ist, dass Clients je nach Use-Case selbst bestimmen können, welche Daten sie von einem Server abfragen und somit nie zu wenig oder zu viele Daten in einem Request lesen. Das soll auch die Entwicklung des Backends einfach und flexibel halten, da der Server nicht auf die konkreten Anforderungen eines konkreten Clients achten muss, denn jeder Client fragt einfach selbst individuell die für ihn relevanten Daten ab. GraphQL bricht dabei mit vielen erlernten und vertrauten Konzepten aus der REST-Architektur und gilt deshalb den einen als Teufelszeug und anderen gerade deshalb als Heilsbringer.
In diesem Workshop werden uns die Grundlagen und Konzepte von GraphQL ansehen, die programmiersprachenunabhängig sind. Anhand einer Beispielanwendung sehen wir uns an, was zu tun ist, um eine GraphQL-API für dein Java-Backend zu entwickeln und zu veröffentlichen.
Dabei überprüfen wir kritisch, inwiefern gängige Aussagen über GraphQL ("REST-Alternative", "SQL für APIs") zutreffend sind, sodass Teilnehmer hinterher entscheiden könnt, ob GraphQL für ihr Projekt eine gute oder schlechte Wahl ist.
Vorkenntnisse
Der Workshop richtet sich an Software-Entwickler*innen und -Architekt*innen, die mit Schnittstellen zu tun haben und offen für neue Konzepte und Ideen außerhalb ausgetretener Pfade sind. Um an dem Workshop erfolgreich teilzunehmen, solltest sie sich mit den zeitgemäßen Konzepten zur Entwicklung von Java-basierten Backend-Anwendungen auskennen (insb. Dependency Injection, JPA, REST).
Die Beispielanwendung und die Übungen sind mit Spring Boot implementiert. Die spezifischen Spring-Boot-Features, die wir nutzen, sollten aber auch für jene verständlich sein, die Java-EE/Jakarta-EE-Anwendungen bauen, und sind auch auf entsprechende Umgebungen übertragbar. Die GraphQL Frameworks, die wir uns ansehen, laufen sowohl mit Spring Boot als auch Java EE/Jakarta EE (und anderen Server-Frameworks).
Lernziele
* Was ist GraphQL und wofür kann man es einsetzen?
* Wie werden mit GraphQL Schnittstellen definiert und Abfragen dagegen abgesetzt?
* Wie können GraphQL-APIs mit Java implementiert und für eigene Anwendungen bereitgestellt werden?