Seit der Ankündigung von Anfang letzten Jahres, stand das micronaut framework auf meiner Liste der Dinge, die ich mir anschauen will. Ein Framework mit den Vorzügen von Spring und Grails, aber mit geringem Footprint und Speicherverbrauch, das auch noch Java, Groovy und Kotlin unterstützt, klingt einfach zu verlockend, zumal es von den Entwicklern von Grails ist.Mit der Veröffentlichung von micronaut-data, einer leichtgewichtigen und performanten Abstraktionsschicht für jdbc und jpa, führte dann aber kein Weg mehr daran vorbei.
Was kann man mit micronaut bauen?
- Microservices
- Serverless Applications
- Message-Driven Applications with Kafka/Rabbit
- CLI Applications
- Event Android Applications
- und alles mit
static void main(String..args)
Installation
Die Installation mit sdkman ist wie immer einfach. Danach kann man die Micronaut CLI um die erste App zu erstellen.
svn install micronaut mn create-app de.koo.micronaut.demo.micronaut-demo-groovy --lang=groovy --features security-jwt cd micronaut-demo-groovy
Das Default Package de.koo.micronaut.demo
gibt man bei der Erstellung als Präfix vor dem App Namen micronaut-demo-groovy
, getrennt durch einen Punkt, an.
- siehe
micronaut-cli.yml
defaultPackage: de.koo.micronaut.demo
Eclipse Setup
Micronaut nutzt gradle (maven ist ebenfalls möglich) als build tool. Eine Einbindung in die Entwicklungsumgebung der Wahl (bei mir eclipse) ist daher recht einfach.
# add id "eclipse" to plugins vi build.gradle plugins { id "groovy" id "com.github.johnrengelman.shadow" version "5.0.0" id "application" id "eclipse" } # build eclipse project files gradle eclipse
Eclipse: file -> import -> existing gradle project
Der Start der App erfolgt ebenfalls mit gradle.
gradle run Server Running: http://localhost:8080
Controller
Die Controller kann man ebenfalls per CLI erstellen. Als Testframeworks stehen junit (für Java und Kotlin) und Spoc (für Groovy) zur Verfügung.
- create via cli
mn create-controller de.koo.micronaut.demo.controllers.Hello Rendered template Controller.groovy to destination src/main/groovy/micronaut/demo/groovy/controllers/HelloController.groovy<br> Rendered template ControllerSpec.groovy to destination src/test/groovy/micronaut/demo/groovy/controllers/HelloControllerSpec.groovy
Deploy
gradle assemble
Fazit
Micronaut ist durch das Auflösen der Depency Injection per AoT, den weitestgehenden Verzicht auf Reflection und Proxies vor allem eines: es ist schnell. So lassen sich Unit Tests auch ohne mockups ausführen.
Für die Erstellung von Microservices hat es alles Notwendige (jettty, docker Vorbereitung und HTTP Client: ebenfalls neu und schnell) unter der Haube. Es gibt mittlerweile eine große Liste von Modulen zur Anbindung von Drittsystemen und die Freigabe als Open Source (mit Apache 2.0 Lizenz) wird eine weite Verbreitung, inklusive Nutzung in kommerzieller Software ermöglichen.
Als Einstieg empfehle ich die Präsentation von Graeme Rocher (s. Links) auf der Goto 2019 und die micronaut-data excamples. Ein komplexes Microservices Beispiel ist der bereits oben erwähnte Petstore aus den micronaut excamples auf github.