If you knwio what youa re doing, then modern J2SE VMs can deliver the same performance over-all as C/C++
There are techniques that are faster in C then in Java, and techniques that are faster in Java then C. It jus t a questio nof knowing the strengths of your coding environment and coding to them.
Garbage colelction used to be something yo uhad to eb careful of but, frankly, I am not seeing it as a problem in any code Ive written since late JDK1.4/JDK1.5. With justa slight repidation Im going to sugegst that that nut has finally been cracked by the VM teams.
Java does tend to require a bit more memory still, but in these days of games that require 1 gig (Matrix Online) its getting to pretty much be noise level.
The really amazing thing about Java is the time it saves you in Q&A and the srength of the prosduct released. We colelcetd so mstistics from develoerps a few years abck and crunched them and found that the average Java game team spent less then 5% of their total productio time in Q&A. COmapre that with C code…
Secondarily, with a small bit of tuning/debugging work, its more or less portable to the mac and Linux which is a nice little plus. OTOH it is nto yet portal to the game concsoles, which IS an issue for some game developers that those of us in the Game Technolgoies Grou pat Su nare (painfully) aware of.
Now the formula changes when you go down to J2ME and cell phones. If you want the state of that space, let me knwoa s its a whoel other discussion.
Java is also a good language for server development. The GTG’s Sun Game Server project is more or less pure Java. However again there are tricks to getting the best server performance our of Java. Big oens are that you want to use NIO’s sockets, for which there is soem learnign curve, and NIO Buffers to implement a copy-free stack.