anchor.diff:  
   == Part II. Programming
   
  -=== Chapter 5. Modules
  +=== Modules
   
   Bootique apps are made of "modules". The framework simply locates all available modules, loads them in the DI environment, parses the command line, and then transfers control to a Command (that can originate from any of the modules) that matched the user choice. There's a growing list of modules created by Bootique development team. And you can easily write your own. In fact, programming in Bootique is primarily about writing Modules.
   
  
positive.code: 
  There are other flavors of bindings in Guice. Please refer to https://github.com/google/guice/wiki/Motivation[Guice documentation] for details. One important form extensively used in Bootique is https://github.com/google/guice/wiki/Multibindings[Multibinding].
  
  === Chapter 6. Modules Auto-Loading
  
  Modules can be automatically loaded via `Bootique.autoLoadModules()` as long as they are included in your aplication dependencies. Auto-loading depends on the Java https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html[ServiceLoader mechanism]. To ensure your modules can be auto-loaded do two things. First implement `io.bootique.BQModuleProvider` interface specific to your module:
  
  
negative.code: 
  Bootique was inspired by two similar products - http://www.dropwizard.io/[Dropwizard] and http://projects.spring.io/spring-boot/[SpringBoot], however its focus is different. Bootique favors modularity and clean pluggable architecture. Bootique is built on top of https://github.com/google/guice[Google Guice] dependency injection (DI) container, which provides the core of its modularity mechanism. This means that pretty much anything in Bootique can be customized/overridden to your liking.
  
  === Java Version
  
  Java 8 or newer is required.
  
  === Build System
  
  Bootique apps can be built using any Java build system (Ant, Maven, Gradle, etc). Examples in the documentation are based on Maven and `maven-shade-plugin`. While this is not strictly a requirement, Bootique apps are usually packaged into "fat" runnable jars and don't have any external dependencies beyond the JRE.
  
  === Programming Skills
  
  Everything you know about Java programming will be applicable when working with Bootique. You may need to "unlearn" some of the practices related to JavaEE configuration and container deployment though.
  
  