Micronaut für zeitgemäße Webanwendungen

Seite 4: Generierung von Projekten per CLI

Inhaltsverzeichnis

Micronaut bietet eine Command-Line-Interface-Anwendung (CLI). Nach Installation der Micronaut CLI können Anwender Projekt-Setups direkt aus der Konsole heraus generieren – das nennt man auch Scaffolding. Dies erinnert an die Spring-Projekte Spring Initializr oder Spring Roo. Viele Features, die der Artikel beschreibt, können initial per CLI zur Applikation hinzugefügt werden. Für spezielle Anwendungstypen existieren Profile, die sogenannte Features. Features enthalten Abhängigkeits-, Code- und Konfigurations-Templates. Die vollständige Liste der Features ist im Micronaut Guide einsehbar.

Mit dem CLI können Entwickler Basisanwendungen, Befehlszeilenanwendungen, Serverless Functions, Federations (Dienste mit gemeinsamem Profil und Features) und neue Profile für die Micronaut CLI erstellen. Beim Erstellen einer Föderation etwa erzeugt Micronaut eine übergeordnete Projektdatei mit dem gewählten Build-Tool und ordnet jeden Dienst als Teilprojekte beziehungsweise Untermodule dem Hauptprojekt unter.

Das Aufsetzen einer Kotlin-Anwendung per Micronaut CLI 1.0.1 funktioniert wie folgt:

mn create-app de.jonashavers.micronaut.showcase --lang kotlin

Die Zeile erzeugt ein Basisprojekt namens "showcase" und eine Gradle-Projektstruktur im Ordner "showcase" mit dem Basis-Package "de.jonashavers.micronaut". Der Projektordner enthält mit "Application.kt" eine Kotlin-Klasse mit der main-Routine zum Starten der Anwendung, eine Konfigurationsdatei "application.yml" für die Applikation, "logback.xml" für das Logging mit Logback und unter anderem ein Dockerfile zum Starten der Anwendung mit Docker.

Mit dem Feature "Picocli" steht ein Befehlszeilen-Parser zur Verfügung, mit dem das Erstellen von Befehlszeilenanwendungen möglich ist, die mit Autovervollständigung, ANSI-Farben und verschachtelten Unterbefehlen daherkommen. Picocli verfügt über eine Annotations-getriebene API und eine programmatische API.

Micronaut ist unabhängig vom verwendeten Test-Framework. Standardmäßig wählt es beim Generieren einer Applikation über die CLI ein Framework basierend auf der verwendeten Sprache aus. Für Java ist das JUnit, für Groovy Spock. Verschiedene Sprachen und Frameworks können Entwickler dabei mischen, sodass man zum Beispiel auch Java Micronaut-Anwendungen mit Spock testen kann.

Genauso wie die Wahl des Test-Frameworks freigestellt ist, ist Micronaut auch Build-Tool agnostisch, macht also keine Vorgaben bezüglich des Werkzeugs zum Bauen der Projekte. Standardmäßig kommt Gradle zum Einsatz, das Verwenden des Build-Management-Tools Maven ist ebenfalls möglich.

Anwender können eine Micronaut-Anwendung in ein natives GraalVM-Image kompilieren. Damit reduziert sich die ohnehin geringe Startdauer einer Micronaut-Anwendung noch weiter. Bei einem nativen GraalVM-Image sinkt sie von etwa einer Sekunde auf etwa 20 ms, während der Speicherverbrauch von etwa 60 MByte – der Großteil belegt von der JVM –, auf etwa 20 MByte für den nativen Prozess fällt. Wer dazu mehr wissen möchte, findet im Micronaut Guide weiterführende Informationen.

Scala wird aufgrund der fehlenden Unterstützung der Annotation Processor API in der aktuellen Micronaut-Version noch nicht unterstützt. Das ist zukünftig jedoch möglich und denkbar, denn für Groovy wurde die Unterstützung auch durch ein zusätzliches Modul namens "inject-groovy" implementiert. Die Community ist zur Unterstützung aufgefordert. Bis dahin bleiben Java, Kotlin und Groovy die von Micronaut unterstützten JVM-Sprachen.