Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

No Container: a Modern Java Stack with Bootique


Published on

Java containers appeared back in the era of big expensive hardware and monolithic applications, and currently feel like an impediment to Java progress. More and more developers opt out of containers in favor of runnable jars, especially with the advance of microservices architectures. Andrus Adamchik will present a new open source tool called Bootique (, a pluggable and extensible technology intended for various kinds of container-less Java apps – REST services, webapps, job runners, desktop apps and what not.

Published in: Software
  • Hello! Who wants to chat with me? Nu photos with me here
    Are you sure you want to  Yes  No
    Your message goes here

No Container: a Modern Java Stack with Bootique

  1. 1. No Container a Modern Java Stack with Bootique by Andrus Adamchik @andrus_a
  2. 2. About Me • Member and VP of the Apache Software Foundation. • Run a company called ObjectStyle. • Develop open source technologies: ORM, dependency injection, REST, no-container.
  3. 3. –Anonymous Java Programmer “I use Java at work all the time, but I prefer Node.js for my own projects.” Java Paradox
  4. 4. Evolution of Java* • 1998: Write a runnable app. • 2001: Write a container web app with JSP/EJB. • 2004: Write a container web app without JSP/EJB. • 2010: Write a container web app without web.xml. • 2016: Write a runnable web app without container. * Disclaimer: light sarcasm and oversimplification
  5. 5. Container Inversion • App as an all-inclusive .jar. • Former container parts are included as libraries. • App is runnable and owns its main() method.
  6. 6. #WYSIWYR: What You See Is What You Run • Another way of saying "get off container and reclaim your main() method".
  7. 7. Bootique Minimally opinionated app launcher and integration technology.
  8. 8. Brief History • First commit in December 2015. • Collaboration between ObjectStyle and National Hockey League. • Fully open-source under Apache License. • Successfully applied in complex enterprise environments.
  9. 9. Demo
  10. 10. Modules, Configuration, Commands
  11. 11. Modules • Core • Cayenne • Curator (Zookeeper client) • JDBC • Jersey • Jersey Client • Jetty • Job • LinkMove • LinkRest • Liquibase • Logback • Metrics • MVC (Mustache) • Test
  12. 12. Configuration
  13. 13. Configuration Transformed into Factories
  14. 14. Commands (and Options)
  15. 15. Testing with JUnit
  16. 16. Bootique vs. JavaEE
  17. 17. Integration Technology for Java. WYSIWYR (apps are runnable). Requires container deployment. Can integrate any 3rd-party modules. Integrates a predefined set of specs. Unified config for all app parts. Container and apps are configured separately. Everything is programmable Container is somewhat programmable, but YMMV. Universal Java launcher Specialized opinionated environment.
  18. 18. Bootique vs. SpringBoot
  19. 19. Integration, WYSIWYR (apps are runnable), extension auto-loading, etc. Command dispatch feature. All available commands run sequentially. Guice DI Style: explicit modules, explicit overrides. Package-based implicit "modules". Annotations spread around. Features can't be turned on by accident. @Conditional built into the core. Unopinionated Core Opinionated
  20. 20. What Apps is it Good for? • Any web apps you used to write in the past, but also.... • Microservices. • Apps you distribute to users. • Cron jobs. • JavaFX apps. • Quick prototypes.
  21. 21. Questions? • @BootiqueProject • • (don’t forget to it !)