I'm trying to get a deeper understanding of how Java actually exploded into the mainstream "enterprise" and has continued to do so at least since the early 2000s. As a regular browser of HN, I've stumbled upon different flavors of commentary related to this in an ad-hoc fashion; some snarky like "Oh you know, it's a dumb-proof language that really doesn't require people to have had a solid foundation in CS so hiring and ramp-up are easier" and some more insightful like "It's not really Java the language, but Java the ecosystem (like JEE) and particularly the JVM that makes it an attractive proposition for enterprise companies". I'm wondering how much of this proliferation can be attributed to: 1. Features. Core functionality that the language/ecosystem provides like the JVM, portability, relative ease in multi-threaded programming, garbage collection etc) 2. Timing. Was there a specific problem during the late 90s or early 2000s that was a sweet spot for solving using Java? Seeing that this was around the time when the internet really became mainstream, was Java primed to benefit from this in a way that set it apart from the then-contemporary programming ecosytems? 3. Scalability. In terms of the number of people you can hire while "growing" your company; could the popularity of SOA/WebServices fueled this as well? Disclaimer: I'm not generalizing that every "big" company uses Java and I'm not saying that the ones that do are obviously doing it for the right reasons; I'm purely looking at this from academic interest since there's so much rich nuanced history that I feel I don't understand. Such a discussion could be easily extended to ask "What does this mean for functional programming languages based on the JVM like Clojure and Scala". Like Mark Twain said: "History may not repeat itself, but it certainly rhymes."