Tamam, bu konuda çok fazla yanlış bilgi var.
Oyun işini çok iyi biliyorum, 25 yıldır bu işteyim. Ayrıca oyunlarda Java'yı Sun'ın Java Oyunu teknik sorumlusu ve ders verme Java performans programlama uzmanı olarak son derece iyi tanıyorum.
İşlemsel hız açısından, Java bugün birçok bilimsel hesaplama testinde C ++ 'ı yeniyor. Her iki dilde de patolojik kod yazabilirsiniz, eğer isterseniz kötü performans gösterir, ancak hepsinden önemlisidir ve uzun zamandır.
Hafıza kullanımı açısından, Java'nın bazı genel sorunları vardır. HelloWorld, java'da bulunan 4K bir programdır. Ancak bu ek yük günümüzün multi GB sistemlerinde oldukça anlamsız. Son olarak, Java'nın başlangıç zamanı daha fazladır. Java'yı, Unix komut satırı komutları gibi kısa çalışma zamanı programları için kullanmanızı tavsiye etmem. Bu durumlarda başlangıç, performansınıza hakim olacaktır. Bir oyunda, ancak oldukça önemsiz.
Düzgün yazılmış Java oyun kodu GC duraklamalarına maruz kalmaz. Tıpkı C / C ++ kodu gibi, bazı aktif bellek yönetimi gerektirir ancak C / C ++ seviyesine göre değil. Hafıza kullanımınızı ya uzun ömürlü nesnelere (tüm seviyeye veya oyuna devam eder) ve çok kısa ömürlü nesnelere (vektörler ve benzeri, hesaplamadan sonra etrafta dolanıp hızlı bir şekilde tahrip olan) kullanmaya devam ettiğiniz sürece gc görünür bir sorun olmamalıdır.
Doğrudan belleğe erişim açısından, Java bunu uzun süredir kullanıyor; Java 1.4'ten itibaren Yerel Doğrudan Bayt Tamponları biçiminde. Java'da bit bükme, imzasız tamsayı türleri olmadığı için biraz can sıkıcı olabilir, ancak iş turları iyi bilinmektedir ve korkunç derecede zahmetli değildir.
Gerçek Java hiçbir zaman Direct3D bağlayıcısına sahip olmamasına rağmen, Java teknolojilerinin taşınabilirlik için çaba harcadığı için. İKİ OpenGL ciltlemesi (JOGL ve LWJGL) ve OpenAL ciltlemesi (JOAL) ve başlık altında Windows'ta DirectInput'a, OSX'te HID Yöneticisi'ne ve bir Linux ciltlemesi (hangisini unuttuğumu) bağlayan portatif bir giriş ciltlemesi (JInput) vardır.
Hiçbir oyun motorunun Java'yı hiçbir şekilde kullanmadığını, Unity'nin C # özelliğini öne sürdüğünü ve bu bağımsız alandaki bir zayıflık olduğu doğru. Öte yandan, Windows, OSX ve Linux'ta tamamen taşınabilir bir platform olan iki iyi Scenegraph seviyesi APIS vardı. Her ikisi de Josh Slack tarafından yazılmış, ilk JMonkey motoru ve ikinci Ardor3D olarak adlandırıldı.
En iyi poster, Java'yı oyun geliştirmede geri tutan en büyük iki şeyin önyargı ve taşınabilirlik olduğu doğrudur. İkincisi en büyük sorun oldu. Bir Java oyunu yazıp, Windows, OSX ve Linux'a gönderebilseniz de, hiçbir zaman bir konsol VM olmamıştı. Bunun nedeni Sun'ın orta yönetimindeki toplam beceriksizlikti. Oyunlarda Java üzerinde çalışan birkaçımız Sony ile Playstation'da sanal makine elde etmek için en az 3 kez anlaşma yapmış ve 3 kez de Sun orta yönetimi onu öldürmüştür.
Sun, müşteri teknolojileri ile flört ederken, mesele gerçeği, Sun yönetiminin asla tüketici ürünleri elde etmemesidir. Bu nedenle Sun'ın bir istemci dili olarak Java'nın hiçbir zaman hiçbir şekilde başarılı olamadığı ve Java'yı her yerde bir platform başarısı haline getirmek için Google ve Dalvik'i (Android java benzeri VM) almasının nedeni budur.
Bu yüzden bugün oyunları C # ile kodluyorum. Çünkü Mono, Sun yönetiminin reddettiği yere gitti.