Until recently, and sometimes even today, some people think Java is slow, because it's about "interpreting byte codes". However, in some cases it can actually run faster than C++! This is possible through on-the-fly compilation techniques, which translates the byte codes to machine code at runtime. And because it's compiled at runtime, it knows how the application is used, and on what exact hardware it's running on. It can make key custom optimizations that are too difficult to know at compile time.
Java also is very good at inlining code, much better so as C++ is.
- Cross platform; WORA - write once run anywhere
- Clean API not clouded by OS frills
- Access to most API's internals
- A wealth of freely available libraries and technologies
- Established server J2EE enterprise
- Introspection, dynamically access objects
- Free spirited community