Java brings substantial gains in programmer productivity. Of course, every new language claims to boost productivity, but Java delivers in three ways:
The language constructs have been chosen carefully so that some common C++ mistakes (for example, in memory address arithmetic) cannot occur.
As a program runs, it checks for many common runtime errors. When programmers make a mistake in Java, it's usually caught at once and a sensible error message displayed. One of my favorite exceptions (isn't it sad to have a favorite exception?) is the one you get when you try to access an array with an index outside its bounds. You get an error message referring to ArrayIndexOutOfBoundsException, stating the file and line number.
Java has a large set of libraries that are standard on all computers. Whether you're interested in GUIs, speech processing, cryptography, 3D graphics, text processing, database access, server or network programming, there are Java libraries to help you. These libraries have been specified and implemented in cooperation with domain experts from throughout the computer industry. The libraries are well documented because Java comes with a set of tools that make it very easy to create good documentation.
The JavaDoc system lets the programmer write a slightly modified comment to indicate text that should appear in the documentation. You then run the javadoc utility to extract those comments and create nicely formatted HTML pages showing the public interfaces of the code. The entire Java library is documented this way, and you can see all the classes online. As a result, Java is one of the best-documented programming systems ever.