Am Dienstag, den 14. Oktober experimentierte das Amsterdam Middleware Meetup mit Dropwizard. Die Idee war, herauszufinden, was es mit dieser Technologie auf sich hat, wo sie nützlich sein könnte und was die Alternativen sind. Im Folgenden gebe ich Ihnen also einen Überblick über Dropwizard und vergleiche es mit Spring Boot.
Die Dropwizard-Website behauptet:
Dropwizard pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done.
"¨Ich werde jede dieser Behauptungen im Folgenden erläutern.
Stabil und ausgereift
Dropwizard verwendet Jetty, Jersey, Jackson und Metrics als seine wichtigsten Frameworks, aber auch eine Vielzahl anderer Dinge wie Guava, Liquibase und Joda Time. Die neueste Version von Dropwizard ist die Version 0.7.1, die am 20. Juni 2014 veröffentlicht wurde. Es hängt von diesen Versionen einiger Kernbibliotheken ab:
Jetty - 9.2.3.v20140905 - May 2014
Jackson - 2.4.1 - June 2014
Jersey - 2.11 - July 2014
Die Tabelle zeigt, dass stable != out-of-date ist, was natürlich in Ordnung ist. Die Versionen der verwendeten Kernbibliotheken sind jedoch aktuell. Ich vermute, 'stabil' bedeutet Bibliotheken mit einer langen Geschichte.
Einfach
Die Komponenten einer Dropwizard-Anwendung sind unten dargestellt (aus dem Tutorial entnommen)
Dropwizard.io/getting-started.html):

- Anwendung (HelloWorldApplication.java): die Hauptmethode der Anwendung, verantwortlich für den Start.
- Configuration (HelloWorldConfiguration.java) legt die Konfiguration für eine Umgebung fest. Hier können Sie Hostnamen für Systeme festlegen, von denen die Anwendung abhängt, oder Benutzernamen vergeben.
- Datenobjekt (Saying.java).
- Ressource (HelloWordResource.java): Einstiegspunkt für die Dienstimplementierung
- Health Check (TemplateHealthCheck.java): Laufzeittests, die zeigen, ob die Anwendung noch funktioniert.
Leichtgewicht
Wir haben einige Experimente durchgeführt, um die Frage zu beantworten, ob Dropwizard-Anwendungen leichtgewichtig sind. Die folgende Tabelle fasst einige der Größen von Anwendungen und Tools zusammen.
Tomcat size 14 mb
Tomcat lib folder size 7 MB
Jetty size 14,6 MB
Jetty in Dropwizard jar: 5,4 MB
Dropwizard tutorial example 10 mb
Dropwizard extended example 20 MB
Dropwizard Hibernate classes in package: 5 MB
Eine Tomcat- oder Jetty-Installation benötigt etwa 14 MB, aber wenn Sie nur den lib-Ordner zählen, sinkt die Größe auf etwa 7 MB. Der Jetty-Ordner in Dropwizard hingegen ist nur 5,5 MB groß. Anscheinend hat Dropwizard es geschafft, Code zu entfernen, den Sie nicht wirklich benötigen (oder der irgendwo anders verpackt ist, wir haben das nicht überprüft).
Die Erstellung des Tutorials führt zu einem 10 MB großen Jar. Wenn Sie also eine Webapp in einem eigenen Tomcat-Container ausführen möchten, spart der Wechsel zu Dropwizard eine ganze Menge. Andererseits ist die Bereitstellungsgröße nicht so wichtig, wenn wir immer noch von < 50 MB sprechen.
Im Vergleich zu Ihrer Standard-Weblogic-Installation (513 MB, nur Weblogic unter OSX) sind die Einsparungen jedoch gigantisch (aber das gilt auch, wenn Sie Weblogic mit Tomcat oder Jetty vergleichen).
Produktivität
Wir haben versucht, den Build für die Tutorial-Anwendung (dropwizard-example im dropwizard-Projekt auf Github) auszuführen. Dies funktioniert problemlos und dauert etwa 8 Sekunden, wenn Sie Mocks für externe Verbindungen verwenden. Eine Option, die Sie untersuchen sollten, wäre die Ausführung von Tests gegen eine bereitgestellte Anwendung. Wir sind es gewohnt, dass das Deployment einer Anwendung für Tests viel Zeit und Ressourcen kostet, aber das Starten einer Dropwizard-Anwendung ist ziemlich billig. Daher wäre es möglich, am Ende eines Builds einen Integrationstest der Dienste durchzuführen. Das wäre z.B. mit Weblogic oder Websphere nur schwer möglich.
Spring boot
Spring boot ist interessant, ebenso wie die Diskussion über die Unterschiede zwischen Spring boot und Dropwizard. Siehe groups.google.com/forum/#!topic/dropwizard-user/vH1h2PgC8bU
Auf der offiziellen Spring boot Website heißt es: Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that can you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
Es ist gut zu sehen, wie sich eine Plattform aufgrund neuer Erkenntnisse verändert, aber ich erinnere mich noch gut daran, wie Rod Johnson vor etwa zehn Jahren sagte, dass J2EE aufgebläht und komplex sei und Spring die Antwort sei. Jetzt scheint es, als bräuchten wir Spring Boot, um Spring einfach zu machen? Oder ist es nur so, dass wir keine Anwendungsserver mehr brauchen, um Ressourcen auf Prozesse aufzuteilen?
Dropwizard und Docker
Schließlich haben wir mit der Ausführung von Dropwizard in einem Docker-Container experimentiert. Dies ist mit geringem Aufwand möglich, da Dropwizard-Anwendungen nur eine so geringe Anzahl von Abhängigkeiten haben. Thomas Kruitbosch wird später darüber berichten.
Referenzen
Spring boot: projects.spring.io/spring-boot/
Dropwizard: dropwizard.io
Verfasst von

Jan Vermeir
Developing software and infrastructure in teams, doing whatever it takes to get stable, safe and efficient systems in production.
Unsere Ideen
Weitere Blogs
Contact



