Está bien, hay mucha información errónea en este hilo.
Sé que el negocio de los videojuegos es extremadamente bueno , después de haber estado en él durante 25 años. También conozco Java en juegos extremadamente bien, ya que he sido evangelista técnico del Juego Java de Sun y profesor de programación de rendimiento en Java.
En términos de velocidad computacional, Java supera a C ++ en muchos puntos de referencia de computación científica en la actualidad. Puede escribir código patológico en cualquier idioma que tenga un mal desempeño si lo desea, pero en general, están a la par y lo han estado durante mucho tiempo.
En términos de uso de memoria, Java tiene algo de cabeza. HelloWorld es un programa 4K en java. Pero esa sobrecarga no tiene ningún significado en los sistemas multi GB de hoy en día. Finalmente, Java tiene más de un tiempo de inicio. No recomendaría usar Java para utilidades de tiempo de ejecución cortas como los comandos de la línea de comandos de Unix. En esos casos el inicio dominará tu rendimiento. Sin embargo, en un juego es bastante insiginante.
El código del juego Java escrito correctamente no sufre pausas de GC. Al igual que el código C / C ++, requiere cierta administración de memoria activa pero no al nivel C / C ++. Siempre y cuando mantengas el uso de la memoria en objetos de larga duración (persistir durante todo un nivel o juego) y en objetos de muy corta duración (vectores y similares, pasados y destruidos rápidamente después del cálculo) gc no debería ser un problema visible.
En términos de acceso directo a la memoria, Java lo ha tenido durante mucho tiempo; desde Java 1.4 en la forma de buffers de bytes directos nativos. Los giros de bits en Java pueden ser un poco molestos debido a la falta de tipos de enteros sin signo, pero las rondas de trabajo son bien conocidas y no terriblemente onerosas.
Si bien su verdadero Java nunca ha tenido un enlace Direct3D, eso es porque las tecnologías Java se esfuerzan por la portabilidad. Tiene DOS enlaces OpenGL (JOGL y LWJGL) y OpenAL (JOAL) y un enlace de entrada portátil (JInput) que se enlaza bajo el capó al DirectInput en Windows, HID Manager en OSX y un enlace de Linux (no recuerdo cuál).
Es cierto que ningún motor de juego completo ha presentado a Java de la manera que, digamos Unity, ha presentado C # y eso es una debilidad en el espacio independiente. Por otro lado, había dos buenos APIS a nivel de Scenegraph que eran totalmente portátiles desde Windows, OSX y Linux. Ambos escritos por Josh Slack, el primero se llamó motor JMonkey y el segundo Ardor3D.
El póster superior es correcto en cuanto a que las dos cosas más importantes que tuvieron a Java en el desarrollo del juego fueron los prejuicios y la portabilidad. Este último fue el mayor problema. Aunque podría escribir un juego Java y enviarlo a Windows, OSX y Linux, nunca hubo una consola de VM. Esto se debió a la ineptitud total en la gestión media de Sun. Los pocos de nosotros que trabajamos en Java en juegos en realidad tuvimos tratos con Sony no menos de 3 veces para obtener una máquina virtual en una Playstation y las 3 veces en que la gerencia media de Sun lo mató.
Si bien Sun coqueteaba con las tecnologías de los clientes, el hecho es que la administración de Sun nunca obtuvo productos de consumo. Es por eso que Java como lenguaje de cliente de Sun nunca tuvo éxito en ninguna forma, y por qué Google y Dalvik (la máquina virtual con Android, como Java) hicieron de Java una plataforma exitosa en cualquier parte.
Y por eso codifico los juegos en C # hoy. Porque Mono fue donde la administración de Sun se negó a hacerlo.