I'm not a game developer or anything, but I know that Java is not very widely used for game development. Java should be fast enough for most games, so where's the catch? I can think of some reasons:


Lack of game developers with expertice in Java
Lack of good game development frameworks
Programmers don't want to accept Java as a games programming language. Most only accept C++ as that?
No support for game consoles (though the PC market still exists)


It could of course be something else. Could someone who knows the business better than me explain why Java isn't getting momentum when it comes to game development?

Several reasons:


In the old days, you needed "direct access" for performance and UI. This predates VM languages like Java and C#. 
Most consoles (e.g., 360, PS3) do not have a JVM, so you cannot reuse code from the PC version.  It is much easier to compile C++ code to support various devices.
Most mainstream game engines (e.g., Unreal) have C++ bindings. There are some Java connectors (e.g., for OpenGL) but nothing like it.
For PC gaming, DirectX doesn't really have strong Java support (if at all).
Web based games run in JavaScript or Flash. You could write them in Java though using things like GWT.
The iPhone runs an Objective-C variant.


Java is primarily used in Android games these days, simply because it's the primary language for that platform.
