© Excellent backgrounds/Shutterstock.com
Java Magazin
Microservices auf der JVM

Java und die Micronauten

Im März fand zum siebten Mal die Greach [1], eine dem Groovy-und-Grails-Ökosystem gewidmete Konferenz, in Madrid/Spanien statt. In einer Keynote verkündete Graeme Rocher, Leiter des Grails-Framework-Teams, eine Überraschung: das Micronaut-Framework [2].

Sergio del Amo, Ralf D. Müller


Micronaut ist ein neues JVM-Framework, das von Grund auf für Microservices und Serverless-Computing-Umgebungen entwickelt wurde. Bei der Entwicklung wurde großer Wert auf folgende Ziele gelegt:

Blitzschnelle StartzeitGeringer SpeicherbedarfExtrem kleine JAR-FilesKeine externen AbhängigkeitenTwelve-Factor App [3]

In der aktuellen Micronaut-Version ist das kleinste JAR einer „Hello World“-Anwendung gerade einmal 8 MB groß und begnügt sich mit nur 10 MB max. Heap. Da die Generierung aller Abhängigkeiten, AOPs und Proxies zur Kompilierungszeit erfolgt, liegt die resultierende Startzeit unter einer Sekunde. Aus dem gleichen Grund wachsen Startzeit und Speicherverbrauch auch nicht linear mit der Anzahl der Codezeilen.

Micronaut ist extrem leichtgewichtig und implementiert die Eigenschaften einer Reactive-App. Es basiert auf Netty und bietet out of the box sowohl einen HTTP-Client als auch -Server zur leichteren Implementierung der HTTP-Komponenten eines Microservice.

Der Code in Listing 1 zeigt ein einfaches Micronaut-Hello-World-Beispiel mit einem HTTP-Server-Endpunkt und einen Client, dessen Implementierung zur Compile Time generiert wird.

Listing 1: Hello World@Controllerclass HelloController { @Get("/hello/{name}") String hello(String name) { return "Hello $name!" } }// Client Generated at Compile Time@Client("/")interface HelloClient { @Get("/hello/{name}") String hello(String name)}

Am vorigen Beispiel zeigt sich das zu Spring Boot oder Grails ähnliche Programmiermodell. Wenn Sie als Entwickler schon mit diesen Frameworks gearbeitet haben und jetzt ein Framework für eine verteilte Architektur suchen, wird Ihnen der Umstieg leichtfallen. Auch der Umbau einer vorhandenen Applikation in eine Micronaut-Applikation fällt somit leichter.

Micronaut bringt einige Features mit, die speziell auf die Microservices- bzw. Cloud-Welt zugeschnitten sind, wie Service Discovery, Circuit Breaker, Configuration Sharing, Client-Side Load Balancing und Unterstützung für Serverless Computing mit AWS Lambda.

All diese Features stehen out of the box ohne weitere Abhängigkeiten zur Verfügung. So kann der Circuit Breaker mit einer einfachen @CircuitBreaker-Annotation konfiguriert werden – das wars:

@CircuitBreaker(attempts = '5', delay = '5ms', reset = '300ms')public List findBooks() {...}

Die Annotation konfiguriert einen Circuit-Breaker mit maximal fünf Wiederholungsversuchen im Abstand von 5 Millisekunden und 300 Millisekunden zum Reset des Circuit Breakers.

Diese Anno...

Java Magazin
Microservices auf der JVM

Java und die Micronauten

Im März fand zum siebten Mal die Greach [1], eine dem Groovy-und-Grails-Ökosystem gewidmete Konferenz, in Madrid/Spanien statt. In einer Keynote verkündete Graeme Rocher, Leiter des Grails-Framework-Teams, eine Überraschung: das Micronaut-Framework [2].

Sergio del Amo, Ralf D. Müller


Micronaut ist ein neues JVM-Framework, das von Grund auf für Microservices und Serverless-Computing-Umgebungen entwickelt wurde. Bei der Entwicklung wurde großer Wert auf folgende Ziele gelegt:

Blitzschnelle StartzeitGeringer SpeicherbedarfExtrem kleine JAR-FilesKeine externen AbhängigkeitenTwelve-Factor App [3]

In der aktuellen Micronaut-Version ist das kleinste JAR einer „Hello World“-Anwendung gerade einmal 8 MB groß und begnügt sich mit nur 10 MB max. Heap. Da die Generierung aller Abhängigkeiten, AOPs und Proxies zur Kompilierungszeit erfolgt, liegt die resultierende Startzeit unter einer Sekunde. Aus dem gleichen Grund wachsen Startzeit und Speicherverbrauch auch nicht linear mit der Anzahl der Codezeilen.

Micronaut ist extrem leichtgewichtig und implementiert die Eigenschaften einer Reactive-App. Es basiert auf Netty und bietet out of the box sowohl einen HTTP-Client als auch -Server zur leichteren Implementierung der HTTP-Komponenten eines Microservice.

Der Code in Listing 1 zeigt ein einfaches Micronaut-Hello-World-Beispiel mit einem HTTP-Server-Endpunkt und einen Client, dessen Implementierung zur Compile Time generiert wird.

Listing 1: Hello World@Controllerclass HelloController { @Get("/hello/{name}") String hello(String name) { return "Hello $name!" } }// Client Generated at Compile Time@Client("/")interface HelloClient { @Get("/hello/{name}") String hello(String name)}

Am vorigen Beispiel zeigt sich das zu Spring Boot oder Grails ähnliche Programmiermodell. Wenn Sie als Entwickler schon mit diesen Frameworks gearbeitet haben und jetzt ein Framework für eine verteilte Architektur suchen, wird Ihnen der Umstieg leichtfallen. Auch der Umbau einer vorhandenen Applikation in eine Micronaut-Applikation fällt somit leichter.

Micronaut bringt einige Features mit, die speziell auf die Microservices- bzw. Cloud-Welt zugeschnitten sind, wie Service Discovery, Circuit Breaker, Configuration Sharing, Client-Side Load Balancing und Unterstützung für Serverless Computing mit AWS Lambda.

All diese Features stehen out of the box ohne weitere Abhängigkeiten zur Verfügung. So kann der Circuit Breaker mit einer einfachen @CircuitBreaker-Annotation konfiguriert werden – das wars:

@CircuitBreaker(attempts = '5', delay = '5ms', reset = '300ms')public List findBooks() {...}

Die Annotation konfiguriert einen Circuit-Breaker mit maximal fünf Wiederholungsversuchen im Abstand von 5 Millisekunden und 300 Millisekunden zum Reset des Circuit Breakers.

Diese Anno...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang