Microservice-Entwicklung mit Java EE – eine Einführung in Eclipse MicroProfile

Für die Entwicklung von Microservices gilt Java EE in der Community häufig als zu schwergewichtig. Und das, obwohl mit CDI, JAX-RS, JSON-P und JPA eigentlich seit Jahren alle benötigten Werkzeuge für die Implementierung von RESTful-Webservices zur Verfügung stehen.

Sprachen  –  51 Kommentare
Microserviceentwicklung mit Java EE – Eine Einführung in Eclipse MicroProfile

Unter Java-Entwicklern war Java EE in der Vergangenheit häufig kein Thema, wenn es um Microservices ging. Denn Java EE hat, aus meiner Sicht meist zu Unrecht, den Ruf zu schwergewichtig und damit für Microservices ungeeignet zu sein. Die Herausforderung haben viele Anbieter von Applikationsservern bereits vor Jahren angenommen und ihre Server modularer und schlanker gemacht. Den Erfolg dieser Bemühungen zeigte Antonio Goncalves bereits 2016 in einem Blogartikel, in dem er unter anderen die Startzeiten und den Speicherbedarf verschiedener Java-EE-Applikationsserver ermittelte. In seinem Benchmark starten moderne Applikationsserver innerhalb von etwa zwei Sekunden und benötigen zur Laufzeit lediglich 30 bis 40 MByte RAM. Moderne Server lassen sich somit auch für kleinere, horizontal skalierte Anwendungen verwenden, wie sie in Microservice-Architekturen häufig zu finden sind.

Damit bietet Java EE die grundlegenden Werkzeuge für die Entwicklung einzelner Microservices. Um ein ganzes System skalierbarer Services zu betreiben, gilt es allerdings, zusätzliche Themen, wie Fault Tolerance, Monitoring und Metriken, sowie die Konfiguration von Services zu adressieren. Für alle diese Fragestellung gibt es außerhalb von Java EE bereits erprobte Frameworks, die sich in die Anwendung integrieren lassen.

Eclipse MicroProfile

Der Anspruch vieler Anbieter von Applikationsservern geht allerdings weiter. Sie möchten eine Plattform für die Entwicklung von Microservices bieten, die die Frameworks bereits mit ausgewählten Java-EE-Spezifikationen integriert. Mit dieser Zielsetzung entstand Eclipse MicroProfile, das aktuell in der Version 2.0 vorliegt.

Dabei verfolgt das Projekt einen ähnlichen Ansatz wie Java EE und stellt lediglich die Spezifikationen, APIs und TCKs bereit. Darauf aufbauend können unabhängige Entwicklungsteams ihre eigenen Implementierungen und Server bereitstellen. Darüber hinaus können sie zusätzliche Funktionen entwickeln, die zu einem späteren Zeitpunkt Bestandteil des MicroProfile oder einer darin enthaltenen Spezifikation werden können. Somit fungieren die Implementierungen der MicroProfile-Spezifikation sowohl als Produkt und Plattform für die Anwendungsentwicklung, als auch als Innovationsmotor für die Weiterentwicklung der Spezifikationen.

Die Auswahl an MicroProfile-Implementierung ist vielseitig und umfasst neben Communityprojekten wie Hammok auch Varianten bekannter Anbieter von Java-EE-Applikationsservern wie Red Hats Wildfly Swarm, Open Liberty und WebSphere Liberty von IBM, Tomitribes TomEE sowie Payara Micro.

Vergleichbar mit den bekannten Applikationsservern, die bestimmte Versionen des Java-EE-Standards implementieren und es dadurch ermöglichen, dieselbe Applikation auf Servern unterschiedlicher Hersteller zu betreiben, implementieren die zuvor genannten Projekte die MicroProfile-Spezifikation. Diese besteht aus verschiedenen Teilspezifikationen, die entweder Bestandteil von Java EE sind oder durch eine der Arbeitsgruppen des MicroProfile-Projekts entwickelt werden.