This flexibility lets programmers engineer their way out of problems. When Groovy is slower -- often the case when using dynamic method invocation -- the programmer can always rewrite the important time-wasting core in Java.
Key to continued Java dominance No. 9: The JVM
The JVM was built and optimized to run the kind of typed code with static scoping that the Javac compiler produces, but somewhere along the way language developers realized the JVM could run other code, too. As long as the compilers produce legitimate Java byte code, the JVM doesn't care what language goes in. The developers of Haskell, Scala, and Clojure jumped on the Java bandwagon by building their compilers to do just that -- and they're only a few of the higher-profile examples of symbiosis the JVM enables.
The attraction is obvious. Sun/Oracle does the work to create the cross-platform environment, and everyone else benefits. Sun/Oracle engineers smooth out the differences and worry about compatibility, then everyone can run whatever we like.
Microsoft borrowed this idea (and much more) when it created C# and went out of its way to build compilers for most of the major languages so that the C# VM could run them all. C# programmers say they can write in many different languages -- as long as they run it on a VM via a Windows box. Quelle flexibilité!
Key to continued Java dominance No. 10: The NoSQL revolution, built in large part on Java
A long time ago, a database was an inscrutable black box that stored information and answered queries quickly and efficiently. Then came the NoSQL revolution, and programmers realized they could write their own database and tailor the code to their needs. Many of the most significant NoSQL tools are written in Java. Cassandra, Lucene, ElasticSearch, HBase, and Neo4J are just some of the NoSQL options often mentioned. Then there are some like acid-state, which is written in Haskell and runs on the JVM.
These tools are usually open source and ready for integration. Some developers run them as independent jobs; others compile the code into their own stack like libraries. In either case, Java's status as the lingua franca for the database layer ensures that life is a bit easier for the Java developers. They have to worry less about little glitches that come from character encodings or line terminators. This means that Java developers can enjoy the fruits of the NoSQL revolution.
Key to continued Java dominance No. 11: Minecraft hooks into postmillennial mind share
The hipsters in the Brooklyn may sneer at Java, but Java programmers had beards first. And while the Ruby fad continues to garner its own share of fans, the generation after them is falling in love with Java. Why? One word: Minecraft. It's written in Java. If the kids want to extend Minecraft, they need to learn Java to build the plug-ins. This ensures the next generation of programmers learns Java first.
Key to continued Java dominance No. 12: Open source
Sun was always one of the leaders of open source, but it hesitated to completely release Java. This didn't stop Java programmers from releasing many great libraries and projects with very loose open source licenses. The Apache project continues to deliver great Java code with a license that doesn't require much in return.