Ich programmiere seit einigen Jahren 2D-Games in Java, und ich sehe hier performancemäßig allerdings wenig Unterschiede zu C++, wenn man es richtig macht. Probleme sind u.a. Speicherverwaltung, die virtuellen Maschine, Delays in der Garbage Collection. 3D-Games habe ich mal etwas rumgespielt, aber ich denke, damit wird man nicht glücklich. Dafür ist JAVA schlicht und ergreifend nicht perfomant genug. Es gibt nämlich kaum professionelle (richtige) 3D-Games. Ich rede nicht von Android-pseudo 3d-Games.
Ich werf mal Minecraft in den Raum.
Natürlich ist Java für 3D Spiele nicht gedacht. die Java Code ist (im Normalfall) nunmal betriebssystemunabhängig. Bei halbwegs vernünftiger Programmierung (Nutzung von Nebenläufigkeit) ist Swing aber völlig okay. Programmierluschen, die das nicht nutzen, erzeugen natürlich träge Programme, aber das ist bei C++ nicht anders.
Lahm ist die JVM höchstens beim Initialisieren, das stimmt, aber danach gibt es kaum noch Unterschied (außer in sehr speziellen Bereichen wie aufwendige Spieleprogrammierung).