I believe questions like "Which one is faster, C++ or Java?" does only make sense if we mention some more information about the situation. Specific platforms, implementations, algorithms, and skills of the person who writes the code will definetely determine the execution efficiency of the code, whether it is in Java or C++. But apparently , as in every aspect of the reality, there are tradeoffs in language design issues, too. What kind of problems or issues you like to address will determine your choice for languages too. Problems that are waiting in front of software engineers are getting more and more complex. Most of the time handling the complexity correctly and efficiently precedes performance. I mean, you will definetely to implement all of the requirements in an efficient and correct way and sacrifice from your performance in a reasonable range. If the performance is your only concern, then you will most like look for good machine code writers.
I believe Java has been created to handle the complexity better. In fact this is the promise of OO theory. Encapsualtions, inheritance,
polymorphism, reusability and all other buzzwords are here to reflect the relationships between the entities in the real world on software area. Anybody who has a little experience in procedural and oo languages would confess that writing code with an oo language would require more line of code such as creating a class and instantiating its objects etc. So there are some intrinsic drawbacks of oo theory and languages implemented in that way. And when you add some other concerns and decisions such as beign platform independent, more secure etc. you will definetely give up some of other aspects such as performance. Java is more secure, using exceptions are mandatory and excellent way for project efficiency and user interaction in the software. This list goes on.
I have just read an article, I don't remember exactly where, but it was about Microsoft's new language, C#. The writer was talking about the fact that Microsoft realized the fact that C++ is capable but too complex and hard to use to develop giagantic and/or web based applications. He claimed that as a result of its experince from VisulaBasic and C++, Microsoft is now trying to incorporate best aspects of VisualBasic and C++ and creating its own "Java". I am not knowledgeable about C# but what I understood from the article is that Microstf is trying to address the complexity problem I mentioned above in its way.
Akin Kaldiroglu