"Evaluating Java for Game Development", By Jacob Marner, B.Sc., March 2002. http://www.rolemaker.dk/articles/evaljava/
Also please also have a look at the "Errata and the latest developments".
Despite of its age of 1 1/2 years the study's still interessting, also its benchmarks. I'm going to quote a few passages which I think are important. I won't quote the un-tweaked benchmark versions, because if we talk about commercial game programming then it's neccessary that the developers know how to programm efficiently in the language they choosed.
1) 7.8 A particle simulator
The application is pretty CPU intensiv.
(..) After I tweaked the programs, Java has seriously gained on C++. Java has not quite achieved C++ speed but is not very far of. This time the Jet version is the fastest of the Java versions, being about 30-50% slower than C++. The IBM VM and the Sun client VM follows just after being about 60% slower. (..)
2) 7.9 An object-oriented version of Life
(..) After we performed the tweaking the C++ program gained about 25% in speed. The Java version became much, much faster.
The application running on the Sun JDK 1.4 server VM is 2-3 times faster than the fastest C++ version. Tweaking the Life application approximately yielded about a factor of 10 in speed! This shows just how important it is to perform tweaking of Java code, while it is not so important for C++ code. (..)
Today's (complex) commercial games do use OO in a very intensive way; especially AI and that like. This is a clear pro for Java. :-)
3) 7.10 A 3D demo
It uses OpenGL für C++ and Java (Gl4Java) and one time Java3D with Java.
(..) In the chart above all the curves are clearly grouped into two distinct groups. Within each group the compilers/JVMs all perform almost identically, which make it hard to discern the individual curves in the chart.
The fastest versions are the two C++ versions. The GL4Java implementation is a little slower but they all stay within the same main group of curves. Much slower is the Java3D implementation of the demo. (..)
Now it would be interesting to know how Gl4Java competes with Jogl. Because one of Jogl's main developers is Ken who works at SUN in the JVM 1.4.x Hotspot team (correct?) I'd would think that Jogl is even faster than Gl4Java?
4) 9 Conclusion
In contrary to popular belief, Java applications are in fact not much slower than C++ applications when they have been tuned for performance. A rough estimate based on the various benchmarks would say that tweaked Java code is a little slower than C++; typically 20-50% on the average, but this is hard to tell for certain because of the large variations in the speed seen in the benchmarks. The slowdown is less in 3D applications, where performance mostly depends on the performance of the 3D hardware and not on the programming language used.
For untweaked code, Java is much slower than C++, often a factor of three or four. This makes it vital to tweak the performance critical sections of Java code.
Java increases the overall productivity of a software project with about 30% and the productivity of the code phase with about 65%. This is quite a significant increase.
This productivity increase makes Java a good choice for low-profile games and for high profile games in genres that do not rely on maximum performance to ensure sales. It is especially good for low-profile games since the cost of Java tools and libraries are significantly lower than those for C++. For high profile games that do not need maximum performance, the use of Java will increase productivity and thereby allow a better game to be produced for the same money. (..)
With the development of the Java Game Profile, the rapidly improving development tools for Java, and the still improving speed of Java virtual machines, it is likely that the viability of Java for game development will improve in the future. However, as it stands now, Java can only be used for games that do not need to be ported to consoles and only partially for games that rely on maximum performance to ensure sales.
One pretty important sentence I found in the study has been:
One should always take a benchmark with a grain of salt since it not completely represents a full application."
Make that a "big grain of salt".
The conclusion "(..) that tweaked Java code is a little slower than C++; typically 20-50% on the average, but this is hard to tell for certain because of the large variations in the speed seen in the benchmarks. The slowdown is less in 3D applications, (..)" is important because most of today's game use 3d even if they're isometric.
Also we've to consider that now we use Java v1.4.2 and I think it's correct to say the JVM has been getting (a little bit) faster from version to version.
Well, I could imagine a full blown Java-OpenGL-game which would have approx the speed of C++ with +/- 5%, which doesn't matter then.
Let's wait and see. :-)