Va bene, c'è molta disinformazione in questo thread.
Conosco bene il settore del gioco estremamente , dopo aver lavorato per 25 anni. Conosco anche Java nei giochi estremamente bene essendo stato l'evangelista tecnico del Java Game di Sun e facendo la predica all'esperto di programmazione delle prestazioni Java.
In termini di velocità computazionale, Java batte C ++ in molti benchmark di calcolo scientifico oggi. Puoi scrivere codice patologico in entrambe le lingue che si comportano male se vuoi, ma nel complesso sono alla pari e lo sono da molto tempo.
In termini di utilizzo della memoria, Java ha un po 'di overhead. HelloWorld è un programma 4K in java. Ma quel sovraccarico è abbastanza privo di significato nei sistemi multi GB di oggi. Infine, Java ha più tempo di avvio. Non raccomanderei l'uso di Java per le utilità a breve durata come i comandi della riga di comando Unix. In quei casi l'avvio dominerà la tua performance. In una partita, tuttavia, è piuttosto insignificante.
Il codice di gioco Java scritto correttamente non soffre le pause GC. Proprio come il codice C / C ++, richiede una gestione attiva della memoria, ma non al livello C / C ++. Fintanto che mantieni l'utilizzo della memoria su oggetti longevi (persistono per un intero livello o gioco) e oggetti molto corti (vettori e simili, passati intorno e rapidamente distrutti dopo il calcolo) gc non dovrebbe essere un problema visibile.
In termini di accesso diretto alla memoria, Java lo ha avuto per un periodo di tempo prolungato; da Java 1.4 sotto forma di buffer byte nativi diretti. I bit che girano in Java possono essere leggermente fastidiosi a causa della mancanza di tipi di interi non firmati, ma i round di lavoro sono tutti ben noti e non eccessivamente onerosi.
Sebbene il suo vero Java non abbia mai avuto un binding Direct3D, questo perché le tecnologie Java puntano alla portabilità. Ha DUE binding OpenGL (JOGL e LWJGL) e OpenAL binding (JOAL) e un binding di input portatile (JInput) che lega sotto il cappuccio a DirectInput su Windows, HID Manager su OSX e un binding Linux (non ricordo quale).
È vero che nessun motore di gioco completo ha caratterizzato Java come dire, Unity, ha caratterizzato C # e questa è una debolezza nello spazio indipendente. D'altra parte, c'erano due buoni APIS di livello Scenario che erano totalmente portatili su piattaforma Windows, OSX e Linux. Entrambi scritti da Josh Slack, il primo è stato chiamato motore JMonkey e il secondo Ardor3D.
Il poster principale è corretto sul fatto che le due cose più importanti che hanno reso Java lo sviluppo del gioco sono state il pregiudizio e la portabilità. Quest'ultimo è stato il più grande problema. Sebbene tu possa scrivere un gioco Java e inviarlo su Windows, OSX e Linux, non c'è mai stata una console VM. Ciò era dovuto alla totale inettitudine del middle management di Sun. I pochi di noi che lavorano su Java nei giochi hanno effettivamente avuto accordi con Sony non meno di 3 volte per ottenere una VM su una Playstation e tutte e 3 le volte che il middle management di Sun l'ha ucciso.
Mentre Sun flirtava con le tecnologie client, il fatto è che la gestione di Sun non ha mai ottenuto prodotti di consumo. Ecco perché Java come linguaggio client di Sun non ha mai avuto successo in nessuna forma e perché ci sono voluti Google e Dalvik (la macchina virtuale simile a Java) per rendere Java una piattaforma di successo ovunque.
E questo è il motivo per cui gioco a codice in C # oggi. Perché Mono è andato dove la gestione del Sole si è rifiutata di farlo.