Since it’s introduction over 20 years ago, Java developers have had plenty of strong and often opposing ways of doing things. Modern day JVM development has only added more options, more divisiveness, and even more heated arguments. * Constructor or Setter Injection ? * Dynamic or Static typing ? * Monolithic or Micro-service application design ? * Java or Scala or Kotlin ? * JVM or .NET ? * Reactive ? * Are Mutable types and Threads inherently Evil? * Is Kubernetes / Docker the modern way of JVM deployments? Let’s dive into these and other issues .. while also stepping back and looking at the Bigger Picture: What is it really about these choices that improve the bottom line ? Most importantly .. let’s also settle once and for all: Maven or Gradle?