Spring Boot vs. Dropwizard

Es ist immer eine interessante und spannende Aufgabe, zwei beliebte Frameworks zu vergleichen. Diesmal sind die Konkurrenten zwei der beliebtesten Microservices-Frameworks in Java. In diesem Tutorial werde ich die verschiedenen Aspekte von Spring Boot und Dropwizard vergleichen.

Ich arbeite seit fast einem Jahr an Spring Boot und bin völlig von den Konzepten von Spring Boot inspiriert. Dropwizard ist im Microservices-Bereich kaum älter als Spring Boot. Außerdem erfreut es sich in der Community großer Beliebtheit. Ich hielt es für eine kluge Entscheidung, beide Frameworks zu vergleichen.

Unterschied zwischen Spring Boot und Dropwizard

Spring Boot vs. Dropwizard

Hier ist das Inhaltsverzeichnis für dieses Tutorial, das den Hauptunterschied zwischen Spring Boot und Dropwizard erklärt.

  • Vergleichstabelle für Spring Boot und Dropwizard
  • HTTP-Server
  • REST-API-Unterstützung
  • Protokollierung
  • Metriken
  • Persistenzunterstützung
  • Abhängigkeitsinjektion (DI)
  • Packen von WAR und JAR für die Bereitstellung
  • Gemeinschaft
  • Zusammenfassung
  • 1. Spring Boot- und Dropwizard-Vergleichstabelle

    In dieser Tabelle sind die wichtigsten Unterschiede zwischen diesen beiden Frameworks zusammengefasst. In den folgenden Abschnitten werden die einzelnen Unterschiede ausführlicher erläutert.

    [table id=7 /]

    2. HTTP-Server

    Spring Boot unterstützt Tomcat, Jetty und Undertow als Servlet-Container. Wenn Sie keinen der Servlet-Container in der Maven-Abhängigkeit angeben, wird Tomcat als Standardserver verwendet und die eingebettete Version der JAR-Datei zu den Bibliotheken hinzugefügt. Spring Boot ist in dieser Hinsicht flexibler und ermöglicht es Ihnen, bevorzugte zu verwendende http-Server zu überschreiben. Hier ist die aktuelle Version der Containerunterstützung durch Spring Boot:

    Von Spring Boot unterstützte Server

    Von Spring Boot unterstützte Server

    Während Dropwizard strengere Konventionen als Konfigurationsansatz verfolgt und es Anwendungsentwicklern erlaubt, nur Jetty als Servlet-Container zu verwenden. Sie haben keine Möglichkeit, die Serverkonfigurationen zu ändern.

    3. REST-APIs-Unterstützung

    Unterstützung für REST-APIs

    Unterstützung für REST-APIs

    Standardmäßig verwendet Spring Boot eigene REST-Implementierungen anstelle von Standardspezifikationen. Sie können die Implementierungen jedoch problemlos überschreiben, um entweder JAX-RS- oder Jersey-Bibliotheken zu verwenden.

    Dropwizard verwendet standardmäßig JAX-RS-basiertes Jersey und unterstützt nur REST-Bibliotheken zum Schreiben Ihrer REST-APIs. Dies stellt jedoch keinen Engpass dar und es empfiehlt sich, den JAX-RS-Standard für Ihre Anwendungen zu verwenden. Wenn Sie den Spezifikationsstandard verwenden, können Sie problemlos zu anderen Implementierungen wechseln, die die Standardspezifikationen verwenden.

    4. Protokollierung

    Spring Boot unterstützt eine Vielzahl von Bibliotheken für den Protokollierungsmechanismus. Es bietet Logback, Log4j, Log4j2, Slf4j und Apache Commons Logging. Standardmäßig verwendet Spring Boot Logback als Protokollierungsimplementierung. Sie können unser Tutorial zu Protokollierungskonfigurationen lesen, um mehr darüber zu erfahren, wie Sie die Protokollierung mit Spring Boot verwenden.

    Wohingegen Dropwizard unterstützt Logback und Slf4j als die einzigen beiden Bibliotheken, die für den Protokollierungsmechanismus verwendet werden können.

    Logback ist derzeit der am meisten bevorzugte Protokollierungsmechanismus. Vor dem Zurückmelden bevorzugten die meisten Projekte die Verwendung von Log4j als Protokollierungsmechanismus. Allerdings bietet die Protokollierung viele Verbesserungen gegenüber log4j, und das gibt es auch mehrere Gründe, es über log4 zu verwenden. Daher unterstützen beide Frameworks diese Implementierung.

    5. Metriken

    Metriken sind eine der wichtigsten Anforderungen für Produktionsanwendungen. Ohne eine ordnungsgemäße Messung können wir die Leistung einer Anwendung nicht bewerten.

    Für die Metrikanzeige nutzt Dropwizard eine eigene Lösung. Einer der großen Vorteile von Dropwizard gegenüber Spring Boot ist die Nutzung seiner fortschrittlichen Metriklösung.

    Spring Boot hingegen stellt seine eigenen Metriken bereit und das sind grundlegende Informationen im Vergleich zu dem, was in Dropwizard angeboten wird. Sogar die Spring-Boot-Dokumentation empfiehlt die Verwendung von Dropwizard-Metriken für alle erweiterten Funktionen.

    6. Persistenzunterstützung

    Dropwizard ist sehr eng mit dem Hibernate ORM Framework gekoppelt. Hibernate ist mit JPA 2.1 kompatibel, aber mit dropwizard-hibernate können Sie beispielsweise keinen EntityManager injizieren, und Sie müssen Session und SessionFactory von Hibernate verwenden. Dies stellt eindeutig eine Einschränkung dar, wenn Sie neben Hibernate noch andere ORM-Frameworks verwenden möchten.

    Während Spring Boot sein eigenes Datenabstraktionsframework Spring Data JPA verwendet. Das Spring Data-Modul ist auf JPA 2.1 geschrieben, sodass wir Callback-Methoden wie prePersist, preUpdate usw. verwenden können. Eine weitere gute Nachricht ist, dass Spring Boot mit vielen anderen ORMs außer Hibernate funktioniert. Dies ist in Dropwizard nicht ganz einfach zu erreichen.

    7. Abhängigkeitsinjektion (DI)

    Der Hauptunterschied zwischen beiden Frameworks ist die Unterstützung der Abhängigkeitsinjektion. Spring-Anwendungen verwenden ein eigenes Abhängigkeitsmanagement, das im Spring Core-Modul enthalten ist. Allerdings verfügt Dropwizard nicht über eine Standardlösung für das Abhängigkeitsmanagement. Sie müssen sich für eine der auf dem Markt verfügbaren Lösungen entscheiden. Vorzugsweise können Sie Google Guice verwenden.

    8. JAR und WAR für die Bereitstellung packen

    spring-boot-loader Das Modul im Spring Boot unterstützt ausführbare JAR- und WAR-Dateien. Generieren der JAR Und WAR -Dateien werden standardmäßig unterstützt, indem einfach die Verpackung als JAR oder WAR in die Maven- oder Gradle-Build-Datei eingefügt wird. Sowohl WAR als auch JAR können als eigenständiger Dienst auf Ihrem Server ausgeführt werden. Auch wenn Sie auf den Anwendungsservern bereitstellen möchten, kann die WAR-Datei für diesen Zweck verwendet werden. Wir führen mehrere Anwendungen auf den herkömmlichen Anwendungsservern aus, für deren Bereitstellung wir die ausführbare JAR-Datei nicht benötigen und für deren Bereitstellung nur eine WAR-Datei erforderlich ist. Spring Boot hilft Ihnen, Ihre Anforderungen für die friedliche Bereitstellung zu generieren.

    Außerdem verwendet Spring Boot die verschachtelten JAR-Dateien zum Erstellen des FAT JAR anstelle von schattierten JARs. Die verschachtelte JAR enthält die Abhängigkeits-JAR als weitere JAR-Datei innerhalb der FAT-JAR. Das Shaded-JAR-Paket fügt jedoch lediglich alle Klassendateien innerhalb der einzelnen JAR-Datei hinzu, was viele Probleme verursachen würde, wenn zwei Bibliotheken dieselben Klassennamen hätten. Dropwizard verwendet die schattierte JAR-Verpackung.

    Hier ist die Struktur der vom Spring Boot Loader unterstützten JAR-Datei:

    Spring Boot Loader unterstützte die JAR-Dateistruktur

    Spring Boot Loader unterstützte die JAR-Dateistruktur

    Hier ist die Struktur der vom Spring Boot Loader unterstützten WAR-Datei:

    Von Spring Boot Loader unterstützte WAR-Dateistruktur

    Von Spring Boot Loader unterstützte WAR-Dateistruktur

    Wenn Sie sich die obige Struktur ansehen, werden alle abhängigen JAR-Dateien als verschachtelte JAR-Dateien im lib-Ordner hinzugefügt.

    Dropwizard unterstützt die Erstellung von WAR-Dateien in seiner Build-Datei nicht offiziell. Es widerspricht seinem Konzept der Microservices. Sie können jedoch eines der vorhandenen verwenden Community-Modul zum Erstellen der WAR-Dateien. Dies ist wiederum eine zusätzliche Belastung für die Entwickler.

    9. Gemeinschaft

    Dropwizard wurde ursprünglich von veröffentlicht Coda Hale Ende 2011, damals bei Yammer. Dropwizard hat eine großartige Community-Unterstützung, aber die Veröffentlichungszyklen sind langsam. In der Anfangsphase waren die Veröffentlichungszyklen viel schneller und es wurde jeden Monat eine neue Veröffentlichung geplant. Aber in letzter Zeit sind die Veröffentlichungen langsamer und außerdem enthält jede Veröffentlichung mehr Updates für die Bibliotheken von Drittanbietern als jedes Update für die Kern-Framework-Updates.

    Während Spring die starke Unterstützung von Pivotal erhält, dem das Spring-Framework gehört. Spring Boot wurde erstmals 2014 (vor gerade einmal zwei Jahren) eingeführt, seitdem wurden jedoch viele offizielle Module für die meisten Bibliotheken von Drittanbietern hinzugefügt. Der Veröffentlichungszyklus ist schneller und sie fügen für jede neue Version viele aufregende Funktionen hinzu. Die neueste Version ist 1.3.0. Sie hat neue Funktionen für den Spring-Boot-Aktuator und das neue Modul DevTools hinzugefügt, was die Entwicklungszeit verkürzt.

    10. Zusammenfassung

    In diesem Tutorial habe ich Spring Boot und Dropwizard mit verschiedenen Parametern direkt verglichen. Bei den meisten Parametern, die ich in diesem Tutorial verglichen habe, ist Spring Boot flexibler als Dropwizard. Bei einigen Parametern wie Metriken (die für Produktionsanwendungen von entscheidender Bedeutung sind) bietet Dropwizard jedoch eine bessere Funktionalität als Spring Boot.

    Wenn Sie an federbasierten Anwendungen arbeiten. Dann ist Spring Boot die klare Wahl für Sie. Es eignet sich sehr gut für Frühlingsanwendungen. Ansonsten ist Dropwizard die bessere Wahl für Sie. Ich hoffe, dass Sie diesen Vergleich hilfreich finden und Ihnen dabei geholfen haben, den Unterschied zwischen Spring Boot und Dropwizard zu verstehen.

    Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich. Wenn Sie Hilfe oder Unterstützung bei der Implementierung der Spring Boot-Anwendungen benötigen, schreiben Sie uns bitte eine E-Mail. Wir werden uns mit Antworten auf Ihre Fragen bei Ihnen melden.

    Vielen Dank, dass Sie meinen Blog gelesen haben!! Fröhliches Lesen!!

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    Nach oben scrollen