But why? I actually have tried to do it, Java worked OK for this 3D game; comparable with C++ on the same machine; most of the speed problems were introduced via naive coding style. There aren't any show-stopping technical disadvantages to using Java; if releasing for the PC. Reasoning? The CPU intensive task that most games want to do is transform/lighting/texturing/etc - this is usually written in very low level code, and always accessed via some level of abstraction whatever platform is used. If you have low-level libs for physics aswell; the rest of the code in a game is usually 'light', event-based, quite dynamic; so, in a way, it doesn't matter what language you use for that part.
I didn't finish the game because I didn't finish the engine because it got stagnant and over-engineered. I'll happily write games in any language - some of the high level frameworks provide so many useful tools/libs, even runtimes these days. But.. if I was writing a tool, lib, or runtime; 'an engine'; I would want to do it in C++. In the games world C++ is more cross-platform-compatible than Java, it's got a proven track record; you rarely need to work at a lower level, but it is quite easily understandable, useable and well documented; a new language standard is going to be released soon, I don't see C++ stopping being de-facto.
The only time I'd want to use Java for any part of a game client, is if there was some platform-based reason for which Java HAD to be used; i.e. if the game had to be deployed through a browser, on a mobile phone, etc. If I had a choice between writing a game using an existing Java engine, using an existing C++ engine, or using an engine that compiles or interprets ECMAScript ( or similar ); assuming no constraints, and the same functionality and comparable speed from each engine; I would chose in the order ECMAScript, C++, Java.
Why? ECMAScript = multi-paradigm and highly unstructured, C++ = multi-paradigm, Java = rigidly OO. After core math-intensive graphics, physics/movement-feedback system, and general structural stuff is done; the only important thing is being able to make 'the game' - and this is often laughably high-level and inherently non-intensive code.. working with person not person.submodels[0,1..n].vertices[0,1...n].. As long as the ( context -independant ) engine is fast, well put-together, and appropriate; it actually doesn't matter so much what language you use to do the work that comprises a given game. I'd pick flexibility every time; I see C++ as more flexible than Java. Personal choice.
For writing an engine, or a one-off game; if the domain is fullscreen graphically intensive games, targeted for the PC and perhaps eventually consoles; there aren't any domain-relevant advantages to using Java; but there are domain-relevant disadvantages - there's no compatibity on the consoles, an arguably higher level of abstraction from the graphics subsystem, ethereal memory management, and everything, for better or worse, is a 'platform-independant standard'. If the domain is browser-launched thin-clients for some physics-light multiplayer game ( i.e. RPGS, they don't have 'physics' like FPS do ); Java wins for the same reasons in reverse.
jwenting, you can't argue non-experience or non-ability because very few people want to spend the time using Java for a certain purpose - Java rarely gets chosen for writing the core of 'high-end' games/engines because it's never been pushed as a platform for developing the core of 'high-end' games. I don't need to know from personal experience that a drill isn't the best tool for hammering nails.. I do - and it kinda works; perhaps it damages the drill in the long term; but that's besides the point, and deviating into irrelevance.
bnastic, you can't blanket-rule 'games' as some singular - there's many types of games, and usually some development constraint on each game, Java MIGHT be the right tool for a given job, client side or server-side. Depends on the job.