Plattform für containerlose Java-Anwendungen

Bootique will Apps aus dem Java-EE-Container befreien

Melanie Feldmann

© Shutterstock / mimagephotography

Das Framework Bootique will Java-Apps aus den Java-EE-Containern befreien. Dabei soll das Framework sowohl gut zu Microservices als auch zu traditionellen Anwendungsarchitekturen passen. Bei beiden sollen die Java-Anwendungen am Ende mehr wie UNIX-Kommandos aussehen. Die Anwendungen bestehen aus Modulen, die miteinander über Dependency Injection interagieren.

Der Kern von Bootique liefert lediglich einige wenige einfache Services: Verarbeiten der Kommandozeile, Lesen der YAML-Anwendungskonfiguration und das Dispatchen von Controls zu einem Kommando. Es gibt lediglich ein paar integrierte Kommandos. So lassen sich auch Anwendungen ausführen, die aus wenig Code bestehen und keine Module importieren. Wie das genau funktioniert lässt sich im Getting Started Guide nachlesen. Eine Bootique-Anwendung besteht aus Guice-Modulen. Guice ist ein leichtgewichtiges Framework für Dependency Injection für Java 6 von Google.

Der große Vorteil von Bootique soll die Breite an Einsatzmöglichkeiten sein – das Framework wird als „unopinionated“ bezeichnet. Was sich ein wenig schwierig mit „nicht meinungsstark“ ins Deutsche übersetzen lässt, soll die Freiheit ausdrücken, die Entwickler beim Einsatz des Frameworks haben. Das einzige Muss bei Bootique ist Guice. Wie genau Entwickler den Style der Kommandozeile, die Dispatch-Strategie oder das Konfigurationsformat umsetzen, ist ganz ihnen überlassen. Nur die einzelnen Module sind auf eine Technologie festgelegt. So funktioniert das Modul bootique-jetty eben nur mit jetty. Es ist aber problemlos möglich ein Tomcat-Modul zu erstellen und zu integrieren. Eine komplette Liste der bereits existierenden Module, gibt es hier. Neben einem jetty-Modul gibt es beispielsweise auch Module für Liquibase oder Swagger. Weitere Module sollen folgen.

Sehen Sie auch im JAX-TV: Spring Boot – was es kann und wie man damit durchstartet

Was unterscheidet Bootique von anderen Frameworks?

Auf Reddit meldete sich der Gründer von Bootique Andrus Adamchik zu Wort und erklärte kurz und knackig die Unterschiede zwischen Dropwizard, Spring Boot und Bootique.

  1. Dropwizard: a specialized platform for web services. Nice built-in facilities like metrics and healthchecks. But if you are building something other than a web service (say a job scheduler or a command-line tool or an HTML app), turning off various built-in things is very hard. Also no dependency injection, making integration of extensions a real pain. There are third-party „bundles“ for Dropwizard that add DI, but they don’t allow to interecept anything in the core. So it is great for its intended use cases, but too specialized and opinionated as a general-purpose platform.
  2. SpringBoot: This is of course a general-purpose framework that can integrate anything. My beef with it is the integration style though. Like hidden features that are dormant by default, but activate themselves (often unexpectedly) when e.g. you put some third-party library on classpath. Another thing is abuse of annotations. Annotations control way too much behavior in SB, but by their nature are not centralized and scattered around the code. So it is hard to understand what your app is configured to do just by looking at the sources (or which annotation to use to achieve a desired behavior). And of course starting the app requires expensive annotations scan. It almost feels like SpringBoot prioritizes marketing aspect (see, I can have a functional app without much thinking) vs. minimizing technical debt and long-term maintainability.
  3. Bootique: We tried to address the above shorcomings and build a general-purpose unopinionated maintainable platform. Bootique DI is Google Guice. This gives us centralized DI definitions, an ability to „contribute“ objects to collections from upstream modules (an often overlooked Guice advantage over Spring), and an explicit concept of module. Standard Bootique modules are all single-purpose and easy to understand and use. They are still „drag-and-drop“, but there are no hidden features. Module discovery mechanism is the cheapest one available (META-INF/services).

Seine komplette Antwort kann man hier nachlesen.

Zurzeit liegt Bootique in der Version 0.21 vor. Nach Angaben der Entwickler befindet es sich aber bereits im produktiven Einsatz für komplexe Enterprise-Anwendungen. Das Framework selbst und die Erweiterungen stehen unter einer Apache-Lizenz 2.0.

Verwandte Themen:

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: