Choices, choices...
Ah, the old chestnut of C++ vs. Java vs. performance vs. run-anywhere vs. ... Once again, two camps appear: the C++crew and the Javagang, and neither of them is correct, except in part. Both languages have strengths, and weaknesses.
C++ usually runs faster, can be tuned harder even without sacrificing too much portability, and offers great flexibility in how e.g. memory management is done.
Java sacrifices runtime performance for ease of setting up database interfaces, built-in threading, garbage collected memory management, etc.
Tradeoffs abound. We must choose which tool to use, whether the choice is one of language, RDBMS, middleware protocol, GUI toolkit, or whatever. And the winners in this battle are us, the programmers. We have tools that are suited to our purposes wherever they lie on the great map of the software domain, and if we don't have the exact tool we want, we can build it ourselves. C, C++, Java, Ruby, Python, Win32, UNIX, GTK+, Qt, ODBC, JDBC, EJB, STL, Boost, whatever. Each gives us something, and precludes something else. It is up to us to make the choice.
The technical fiddly bits are neither here nor there. In the end, it all comes down to us sitting down and using the squishy things between our ears to do the hard stuff: choosing a route, and designing the platform, vehicle, or whatever that will get us where we want to go.
Isn't it great?