Answer by Mike Anderson:
I'd regard being on the JVM as a massive advantage.
If you came away with a bad impression, I suspect that you probably didn't have a well configured environment. I haven't edited a classpath or worried about the location of a .jar file for several years – the modern IDEs like Eclipse and Netbeans do all this for you……
Here's what I consider are the main advantages to being on the JVM:
- Cross platform – code written to target the JVM will run on any platform that the JVM is available, which is pretty much everywhere nowadays. It's the *only* platform that offers comparable write-once-run-anywhere capabilities for compiled binary code.
- Largest library ecosystem – the open source library ecosystem around the JVM is unquestionably the most broad, comprehensive and mature. You get everything from enterprise-class application servers like JBoss to full 3D game engines like JMonkeyEngine to IDE suites like Eclipse to data mining platforms such as Weka.
- Excellent engineering – alongside Microsoft's CLR, its the best engineered virtual machine platform available. Particular strengths are around extremely efficient garbage collection, and JIT compilation.
- Mobile – Google is a big proponent of Java, so it's not particularly surprising that they chose Java as the core language for Android. But apart form that, the JVM is very prominent on many other mobile / embedded environments.
- Tooling – the JVM ecosystem has built up an impressive array of tooling for the entire development cycle over many years. Everything from IDEs (Eclipse, Netbeans, IntelliJ), build tools (Maven, Ant), automated deployment and testing tools etc. Yes, you need to do a bit of work to set these tools up in the first place. But you get a lot of return on that investment over the long run.
- Language innovation – although you can argue that Java is now beginning to show it's age, it turns out that the JVM platform is a good target for innovative and experimental languages. As a result, there are some notable new languages on the JVM that are very promising and are starting to gain considerable momentum (Scala, Clojure, Groovy to name but a few….)
- Skills availability – Java is probably the most widely used application development language (TIOBE index for example typically shows in as No.1), so it follows that it has the broadest base of skilled developers in a wide variety of domains. If you're making a stregic choice of platform as a business, this is a pretty important consideration!
- Relative vendor independence – the JVM counts among it's major corporate backers Oracle, IBM, Google and a host of other companies. Although Oracle has a slightly privileged position since it acquired Sun, it can't stop you from choosing other alternatives (since the main JVM and JDK implementations are open source!). Contrast with .NET, where you are inextricably tied into Microsoft platforms (Windows, XBox etc.).
- Career opportunities – a lot of big companies are heavily invested in the JVM, and are willing to pay top money for JVM skills. In particular, my experience is that the JVM is the preferred langauge for server side development in the majority of Banks and major internet companies.