Evaluierung Java Microframeworks

In letzter Zeit haben Microframeworks wie Javalin, Ktor, Spring Fu oder Micronaut in der Java-Welt zunehmend an Bedeutung gewonnen.

Was soll man unter Microframeworks verstehen?

Ein Microframework ist ein Begriff, der sich auf minimalistische Webanwendungs-Frameworks bezieht. Es steht im Gegensatz zu Full-Stack-Frameworks. Es fehlen die meisten Funktionen, die in einem vollwertigen Webanwendungsframework üblich sind, wie z.B:

• Konten, Authentifizierung, Autorisierung, Rollen

• Datenbankabstraktion über eine objektrelationale Zuordnung

• Eingabevalidierung und Eingabesanierung

• Web Template Engine


In der Regel erleichtert ein Microframework das Empfangen einer HTTP-Anforderung, das Weiterleiten der HTTP-Anforderung an den entsprechenden Controller, das Versenden des Controllers und das Zurückgeben einer HTTP-Antwort. Microframeworks wurden häufig speziell zum Erstellen der APIs für einen anderen Dienst oder eine andere Anwendung entwickelt.

Unser Projekt: Evaluierung Java Microframeworks

Micronaut vs. Javalin

Um oben genannten Microframeworks ( Micronaut vs. Javalin ) zu evaluieren, soll es eine Microservicesarchitektur mit wenigen Microservices realisiert werden, in der die einzelnen Frameworks verglichen werden. Die Architektur soll folgende Aspekte abdecken:

• REST Backend Service

• Zugriff auf eine relationale Datenbank

• synchroner Zugriff auf einen weiteren Microservice (via REST)

Allgemeine Informationen über einzelnes Framework

undefined

https://javalin.io/

“A simple and modern Java and Kotlin web framework.”

Javalin Homepage
  • Lizenz: Apache License 2.0
  • Community: https://github.com/tipsy/javalin
  • Soziale Medien: https://twitter.com/javalin_io / 297 Follower
  • Full-stack
  • Programmiersprachen Java und Kotlin
  • Deploying Dass das Framework auf Jetty aufsetzt und somit alle Jetty Features genutzt werden können.
  • Javalin ist eher eine Bibliothek als ein Framework.
  • Es muss nichts Extended/implemented werden. (So sei die Erweiterung von Klassen gar nicht und die Implementierung von Interfaces nur sehr selten notwendig.)
  • Es gibt keine @Annotationen. (@GET, @POST usw.)
  • Es gibt keine reflections. (Reflection ist eine API, mit der das Verhalten von Methoden, Klassen und Interfaces zur Laufzeit untersucht oder geändert werden kann.)
  • Geringerer Speicherverbrauch
  • Schnelle Start-Up Zeit.
  • „Javalin is designed to be simple and blocking, as this is the easiest programming model to reason about“ (Javalin homepage) → Das ist ein ganz wichtiger Punkt; v.a., dass man auch ganz simple auf ein asynchrones Model springen kann, wenn ein Future-Objekt zurückgegeben wird.

Context-Objekt-Javalin

Das Context-Objekt bietet uns alles, was wir zur Bearbeitung einer http-Anfrage benötigen.

undefined

https://micronaut.io/

„A modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications. „

Micronaut Homepage
  • Lizenz: Apache License 2.0
  • Community: https://github.com/micronaut-projects/
  • Soziale Medien: https://twitter.com/micronautfw?lang=de / 6594 Follower
  • Full-stack
  • Programmiersprachen Java, Groovy und Kotlin
  • Implementierung/Erweiterung von Klassen ist häufig notwendig.
  • Annotationen sollen benutz werden. (@GET, @POST…)
  • Minimaler Einsatz von Reflections.
  • Schnelle Start-Up Zeit.
  • Geringer Speicherverbrauch
  • NATIVELY CLOUD NATIVE: Die Cloud-Unterstützung von Micronaut ist direkt integriert.

Was bedeutet NATIVELY CLOUD NATIVE ?

  • Micronaut ist tatsächlich ein Framework auch für die Cloud-Anwendungen. Die meisten heute in der JVM verwendeten Frameworks wurden vor dem Aufkommen von Cloud- Deployments und Microservice-Architekturen entwickelt.
  • Mit diesen Frameworks erstellte Anwendungen sollten in herkömmlichen Java-Containern bereitgestellt werden. Daher wird die Cloud-Unterstützung in diesen Frameworks in der Regel eher als Add-On als Kerndesignmerkmale bereitgestellt.
  • Micronaut wurde von Grund auf für den Aufbau von Microservices für die Cloud entwickelt. Infolgedessen sind in Ihrer Anwendung selbst viele wichtige Funktionen verfügbar, für die normalerweise externe Bibliotheken oder Dienste erforderlich sind. Micronaut-Anwendungen sind „nativ Cloud-nativ“, um eines der derzeit beliebtesten Schlagworte der Branche zu überschreiben.
  • Im Folgenden sind einige der Cloud-spezifischen Funktionen aufgeführt, die direkt in die Micronaut-Laufzeit integriert sind:

Distributed Configuration

  Service Discovery

  Client-Side Load-Balancing

  Distributed Tracing

  Serverless Functions

Die zugrundelegenden Techniken ermöglichen die Umsetzung von entkoppelten Systemen, die belastbar, handhabbar und beobachtbar sind. Kombiniert mit einer robusten Automatisierung können Softwareentwickler mit geringem Aufwand flexibel und schnell auf Änderungen reagieren.

Nebenbemerkung:

Definition Cloud Native von CNCF [6]: Cloud native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen zu implementieren und zu betreiben. Dies können öffentliche, private und Hybrid-Clouds sein.

Best-Practises, wie Container, Service-Meshs, Microservices, immutable Infrastruktur und deklarative APIs, unterstützen diesen Ansatz.

Projekt erstellen und kompilieren

▪ Micronaut unter Windows installieren: Laden Sie die Micronaut CLI-Binärdatei von der Micronaut Downloadseite herunter.

▪ Entpacken Sie die heruntergeladene Binärdatei in einen Ordner auf Ihrem System.

▪ Erstellen Sie die Umgebungsvariable MICRONAUT_HOME mit dem obigen Verzeichnispfad.

▪ Aktualisieren Sie Ihre Windows PATH-Umgebungsvariable .

▪ Maven oder Gradle Projekt erstellen.

▪ Dependencies anpassen und loslegen.

Die Micronaut-CLI ist die empfohlene Methode zum Erstellen neuer Micronaut-Projekte. Die CLI enthält Befehle zum Generieren bestimmter Kategorien von Projekten, mit denen Sie zwischen Build-Tools und Test-Frameworks wählen und sogar die Sprache auswählen können, die Sie in Ihrer Anwendung verwenden möchten. Die CLI bietet auch Befehle zum Generieren von Artefakten wie Controllern, Client-Schnittstellen und Funktionen ohne Server.

Hello World Beispiele

Projekt Struktur

Wir haben Interfaces und Implementationen ->mehr Klassen,die miteinander kommunizieren.

Zusammenfassung

  • Einfaches Full-stack framework für Web Anwendungen.
  • Javalin unterstütz GraalVM (mit 22MB total size).
  • Schnelle Startzeit.
  • Geringerer Speicherverbrauch.
  • Access Manager: Javalin verfügt über eine funktionale Schnittstelle Access Manager, mit der Sie die Authentifizierung und / oder Autorisierung pro Endpunkt festlegen können.
  • Dokumentation von Javalin auf Homepage ist nicht ausführlich genug.
  • Wichtige Funktionen sind in Gruppen gelistet. Aber es gibt leider keine Anwendungsbeispiele.
  • Full-stack framework
  • Cloud native: Infolgedessen sind in Ihrer Anwendung selbst viele wichtige Funktionen verfügbar, für die normalerweise externe Bibliotheken oder Dienste erforderlich sind.
  • Micronaut unterstützt der GraalVM bzw. auch der JVM.
  • Relationale Datenbank Verbindung via JDBC/JPA/Hibernate.
  • Generierung von Projekten per CLI.
  • unterstützt eine Reihe von Authentifizierungsstrategien wie Basic Auth, Session-basierte Authentifizierung und LDAP. 
  • Klassische Repository Gedanke
  • Dokumentation von Micronaut auf Homepage ist sehr gut vorbereitet.
  • ist gute Alternative gegen üblichen Frameworks : geringerer Speicherverbrauch und schnelle Startzeit.

=> Das Framework ist vor allem für die Lehre geeignet, da es möglich ist in Plain Java zu entwickeln .

=> Das Framework ist geeignet für  Webanwendungen.  Seine speziellen Stärken spielt es vor allem in den Cloudanwendungen aus.

Referenzen

[1] https://micronaut.io/

[2] https://javalin.io/

[3] https://jax.de/blog/core-java-jvm-languages/microframeworks-unter-der-lupe-javalin-vs-ktor-vs-spring-fu-vs-micronaut/

[4] https://github.com/cncf/toc/blob/master/DEFINITION.md

[5] https://m.heise.de/developer/artikel/Micronaut-fuer-zeitgemaesse-Webanwendungen-4237756.html?seite=all

[6] https://www.cncf.io/ – Cloud Native Computing Foundation

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

%d Bloggern gefällt das: