Oyun yazmak için Java kullanıyorum ve oyun yazmak için C ++ kullandım ve Java'nın güçlü ve zayıf yönlerinin farkında olduğunuz sürece Java'nın iyi olduğunu gördüm. Benim için büyük iki avantaj, Java'da programlama, geliştirme hızı ve konuşlandırılabilirlik / taşınabilirliktir. Derleme süreleri VC ++ 'dan çok daha hızlıdır (henüz XCode veya Clang için konuşamam), bu da sorunları daha hızlı çözebileceğim anlamına geliyor. Ayrıca, Eclipse sürekli olarak derlendiğinden, daha az yazım hatası türü yaparım. Ben asla 'sadece başka bir sistem veya derleyici üzerinde çalışır' bir C ++ kodu parçası yazmadım. Java'da bu normdur.
Öte yandan, Java'nın bazı büyük dezavantajları vardır. Verimlilik genellikle Java'yı kullanmamanın bir nedeni olarak bulunur, ancak belirli bir şekilde kodladığınız sürece Java'nın oldukça iyi performans gösterebileceğini buldum. Sorun şu ki, kodlamanız gereken kesin yol, bir çok Java halkının iyi tasarım olarak kabul edeceği şeye aykırıdır.
Java'nın kalbinde 'çöp toplayıcı', bellek yönetim sistemidir. Etkin kod yazarken, herhangi bir dilde her karede dinamik ayırma yapmaktan kaçınmak istersiniz ve bu özellikle Java için geçerlidir. Çöp toplayıcıyı özensiz yeni şeyler nedeniyle kapatırsanız, pürüzsüz kare hızlarını güle güle öpebilirsiniz. İkincisi (ve en sinir bozucu olarak) Java, 1. sınıf kullanıcı veri türlerini desteklemez. Java'daki her kullanıcı veri türü, esas olarak, öbekte tahsis edilen bir sınıfa işaretçi olarak başlatılır. Bu, bir dizi Vector3 nesnesi gibi şeylere sahip olamayacağınız ve bellekte aynı anda bulunduğunuz önbellek eşzamanlılığı için korkunçtur - bir dizi Vector3 işaretçisi olabilir, ancak bu aynı şey değildir. Genel olarak ofsetleri, bunun yerine ilkel tiplerin büyük dizilerine kullanmanız gerekir.