Sur PS3, on peut faire tourner Java (OpenJDK 1.7) mais il faut installer Linux (Yellow Dog par exemple). On peut se servir de PSGL (une version d'OpenGL-ES spécifique aux consoles Sony depuis la PS2) et de JOGL-ES. Disons que ce n'est pas simple de faire tourner Java et d'utiliser l'accélération matérielle en même temps sur cette machine. Beaucoup de "geeks" se sont cassés les dents là-dessus.
Sur Wii, à ma connaissance, on ne peut pas (encore) développer en Java, le kit de développement permet de développer en C/C++. Mais encore une fois, quelques geeks ont réussi à faire tourner JME sur Wii :
http://www.youtube.com/watch?v=VOUpzzo5ykM
Sur XBox, on peut aussi arriver à faire tourner Java encore une fois en installant Linux. Par contre, je ne sais pas si c'est possible sur XBox 360.
Sur Nintendo DS, il y a Java2NDS qui s'inspire du portage de la KVM de Torlus sur GBA :
http://blog.davr.org/2007/08/08/java-for-nds/
Le projet j2me-NDS est en cours mais je n'arrive pas à en avoir le statut.
Pour résumer, le développement de jeux vidéo en Java sur console n'est pas très accessible à l'heure actuelle alors que la porte est grande ouverte pour C/C++. Cependant, je rappelle que plus de 800 millions d'ordinateurs sont équipés de Java, le développement de jeux vidéo en Java sur PC est donc bien plus accessible, idem sur téléphones mobiles (essentiellement avec J2ME et quand c'est possible avec JOGL-ES).
Une machine virtuelle Java pour PC peut tourner avec un certain nombre de Mo, cela dépend des paramètres que tu passes à la JVM (-Xms pour le démarrage et -Xmx comme borne supérieure). Par défaut, c'est 64 Mo sur le tas.
D'après Brian Goetz de Sun :
"The Java language does not offer any way to explicitly allocate an object on the stack, but this fact doesn't prevent JVMs from still using stack allocation where appropriate. JVMs can use a technique called escape analysis, by which they can tell that certain objects remain confined to a single thread for their entire lifetime, and that lifetime is bounded by the lifetime of a given stack frame. Such objects can be safely allocated on the stack instead of the heap. Even better, for small objects, the JVM can optimize away the allocation entirely and simply hoist the object's fields into registers."
Je me trompe peut-être mais si je comprends bien, il parle d'allocation sur la pile au lieu d'allocation sur le tas, ça laisse entendre que tu peux allouer sur la pile sans allouer sur le tas.
Je ne connais pas C++ aussi bien que Java (j'ai programmé quand même quelques années en C++) mais quand je ne sais pas, je ne m'avance pas autant que ce que tu as fait concernant les méthodes virtuelles, je préfère dire que je ne sais pas.
Partager