© StonePictures/Shutterstock.com
Wichtige JVM Microframeworks im Überblick

Alle neune!


Nachfolgend stellen Christian Schwörer und Carlos Barragan wichtige JVM-Microframeworks vor. Angesichts der Vielzahl der vorhandenen Microframeworks erhebt diese Liste keinen Anspruch auf Vollständigkeit, präsentiert aber wichtige Fakten zu einigen der prominentesten Microframeworks.

Diese JVM-Microframeworks stellen wir vor:

  • Micronaut

  • Quarkus

  • Javalin

  • Ktor

  • Eclipse Vert.x

  • http4k

  • Spring Fu

  • Ratpack

  • Helidon

schwoerer_steckbriefe_6.tif_fmt1.jpg

http4k

Slogan

http4k is a lightweight but fully-featured HTTP toolkit written in pure Kotlin that enables the serving and consuming of HTTP services in a functional and consistent way. http4k applications are just Kotlin functions which can be mounted into a running backend.

First-class Language

Kotlin

Eigenschaften

http4k bezeichnet sich selbst als „Server as a Function HTTP toolkit“. Hieraus wird schon ersichtlich, dass es zum Ziel hat, die Erstellung von kleinen, schnellen Applikationen zu ermöglichen.

Wie viele andere Frameworks nutzt es zur Anwendungskonfiguration eine Kotlin DSL. Darüber werden in erster Linie HttpHandler und Filter definiert. HttpHandler werden genutzt, um Requests auszulesen und in entsprechende Responses zu mappen. Mittels Filter können Pre- und Post-Processing-Aktionen hinzugefügt werden, beispielweise für Authentifizierung, Logging und Caching.

http4k unterstützt verschiedene Server wie Jetty (mit WebSocket-Support), Undertow, Netty und Ktor CIO. Es bringt zahlreiche Erweiterungsmodule mit, zum Beispiel für Micrometer-Metriken, Resilience4J und vorkonfigurierte OAuth-Provider. Auch verschiedene Templating Engines – unter anderem Dust, Freemarker und Thymeleaf – können konfiguriert werden.

Hello-World-Beispiel

fun main() { routes( "/hello" bind GET to { Response(OK).body("Hello World!") } ).asServer(Jetty(8080)).start() }

Starter-Klasse Application.kt

Einschätzung

Das Framework zeichnet sich durch seine konsequente Nutzung von Kotlin Functions aus. Dadurch wird ein sehr prägnanter, kurzer Codestil möglich. So wurde in einem http4k-Referenzbeispiel ein Dropbox-Clone mit nur 70 Zeilen Kotlin-Code realisiert.

Durch die starke Ausrichtung auf dieses Sprachfeature sind entsprechende Kotlin-Vorkenntnisse beim Einstieg hilfreich.

Astronaut.png
schwoerer_steckbriefe_2.tif_fmt1.jpg

Quarkus

Slogan

SUPERSONIC SUBATOMIC JAVA

A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.

Main Contributor/Sponsor

Red Hat, Inc.

First-class Languages

Java, Kotlin, Scala

Eigenschaften

Quarkus nutzt Ahead of Time (AoT) Compilation zur Realisierung der Framework-Logik. Dadurch erfolgt die Auflösung nicht zur Start- beziehungsweise Laufzeit, sondern bereits beim Kompilieren. Durch die AoT Compilation kann das Framework somit auf Reflection und Runtime Proxies verzichten, was sich positiv auf Startup Time und Memory Footprint auswirkt.

Das Framework verfügt über mehrere Extensions wie beispielsweise RESTEasy, Hibernate, SmallRye JWT und Kafka. Zudem bietet es ebenfalls Cloud-native Module für Service Discovery, die Umsetzung von Resilience Patterns wie Circuit Breakers und Distributed Configuration Management.

Quarkus ist größtenteils kompatibel zum Eclipse-MicroProfile-Programmiermodell. Zudem unterstützt Quarkus auch das Spring-Modell, sodass Spring Anwendungen mit überschaubaren Anpassungen auf Quarkus portierbar sind.

Das Framework legt viel Wert auf die Developer Experience und bietet beispielsweise einen Development Mode. In diesem Modus werden Codeänderungen sofort übernommen, ohne dass die Anwendung erneut kompiliert und gestartet werden muss.

Hello-World-Beispiel

@Path("/hello") class RestController { @GET @Produces(MediaType.TEXT_PLAIN) fun hello() = "Hello World!" }

Controller-Klasse RestController.kt

Einschätzung

Das Framework ist einfach zu verstehen und zu verwenden, insbesondere für Java-EE- bzw. MicroProfile-Entwickler. Aber auch Spring-Boot-Entwicklern fällt der Einstieg üblicherweise leicht.

Die Integration der GraalVM ist ein zentraler Aspekt von Quarkus. Daher werden angepasste Libraries von bekannten Frameworks wie Hibernate bereitgestellt. Diese Libraries wurden so verändert, dass Reflection beziehungsweise Proxies nur minimal verwendet werden und somit möglichst GraalVM-friendly sind.

Obwohl Quarkus aktuell noch nicht so viele Module und Erweiterungen wie Micronaut oder Spring bietet, holt es mit jedem Release auf. Es ist zu erwarten, dass das Framework bald Featureparität erreicht, sollte die aktuelle Entwicklungsgeschwindigkeit beibehalten werden.

Quarkus ist daher ein sehr vielversprechender Kandidat für die Zukunft Cloud-nativer Java-Anwendungen.

Planeten.png
schwoerer_steckbriefe_5.tif_fmt1.jpg

Eclipse Vert.x

Slogan

Eclipse Vert.x is a tool-kit for building reactive applications on the JVM.

Main Contributor/Sponsor

RedHat, Inc und Eclipse Foundation

First-class Languages

Java, Kotlin, Groovy, Scala, Ruby, JavaScript

Eigenschaften

Wie der Slogan schon verrät, handelt es sich bei Vert.x eher um ein Toolkit als um ein komplettes Framework. Folglich bietet Vert.x manche von anderen Frameworks gewohnte Features wie etwa Dependency Injection oder Convention over Configuration nicht. Dafür ist aber die Runtime sehr schlank: Vert.x verwendet kaum Reflection, Dynamic Proxies oder andere Techniken, die die Laufzeit negativ beeinflussen könnten, vor allem was Anwendungsstartzeit und Memory-Verbrauch angeht.

Vert.x startete bereits im Jahr 2011 und ist somit eines der ältesten beziehungsweise ausgereiftesten M...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang