Oke, ada banyak informasi yang salah di utas ini.
Saya tahu bisnis game dengan sangat baik, telah berada di dalamnya selama 25 tahun. Saya juga mengenal Java dalam game dengan sangat baik sebagai penginjil teknis Sun Game Java dan mengajar pakar pemrograman kinerja Java.
Dalam hal kecepatan komputasi, Java mengalahkan C ++ di banyak tolok ukur komputasi ilmiah saat ini. Anda dapat menulis kode patologis dalam kedua bahasa yang berkinerja buruk jika Anda mau, tetapi secara keseluruhan, mereka setara dan telah lama.
Dalam hal penggunaan memori, Java memang memiliki beberapa over-head. HelloWorld adalah program 4K di java. Tetapi overhead itu sangat tidak berarti dalam sistem multi-GB saat ini. Akhirnya, Java memang memiliki lebih banyak waktu startup. Saya tidak akan merekomendasikan menggunakan Java untuk utilitas run-time pendek seperti perintah baris perintah Unix. Jika demikian, startup akan mendominasi kinerja Anda. Namun dalam sebuah game, itu cukup tidak penting.
Kode game Java yang ditulis dengan benar tidak mengalami GC jeda. Sama seperti kode C / C ++, itu memang memerlukan beberapa manajemen memori aktif tetapi tidak ke tingkat C / C ++. Selama Anda menjaga penggunaan memori Anda untuk objek yang berumur panjang (bertahan untuk seluruh level atau permainan) dan objek yang berumur pendek (vektor dan semacamnya, diedarkan dan dihancurkan dengan cepat setelah perhitungan) gc seharusnya tidak menjadi masalah yang terlihat.
Dalam hal akses memori langsung, Java sudah lama memilikinya; sejak Java 1.4 dalam bentuk Native Direct Byte Buffer. Memutar-mutar bit di Jawa bisa sedikit menjengkelkan karena kurangnya tipe integer yang tidak ditandatangani tetapi putaran pekerjaannya sudah terkenal dan tidak terlalu berat.
Walaupun Java sebenarnya tidak pernah memiliki Direct3D mengikat, itu karena teknologi Java berusaha untuk portabilitas. Ini memiliki DUA pengikatan OpenGL (JOGL dan LWJGL) dan pengikatan OpenAL (JOAL) dan pengikatan input portabel (JInput) yang mengikat di bawah tenda ke DirectInput pada Windows, HID Manager pada OSX, dan pengikatan Linux (saya lupa yang mana).
Memang benar bahwa tidak ada mesin permainan lengkap yang menampilkan Java dengan cara, katakanlah Unity, telah menampilkan C # dan itu adalah kelemahan dalam ruang independen. Di sisi lain, ada dua APIS tingkat Scenegraph yang baik yang sepenuhnya platform portabel di Windows, OSX dan Linux. Keduanya ditulis oleh Josh Slack, yang pertama disebut mesin JMonkey dan Ardor3D kedua.
Poster atas benar bahwa dua hal terbesar yang menahan Java dalam pengembangan game adalah prasangka dan portabilitas. Yang terakhir adalah masalah terbesar. Meskipun Anda bisa menulis game Java dan mengirimkannya ke Windows, OSX dan Linux, tidak pernah ada VM konsol. Ini karena ketidakmampuan total dalam manajemen menengah Sun. Beberapa dari kita yang bekerja pada Java dalam game sebenarnya memiliki kesepakatan dengan Sony tidak kurang dari 3 kali untuk mendapatkan VM di Playstation dan semua 3 kali manajemen menengah Sun membunuhnya.
Sementara Sun bermain-main dengan teknologi klien, faktanya adalah bahwa manajemen Sun tidak pernah mendapatkan produk konsumen. Itulah mengapa Java sebagai bahasa klien dari Sun tidak pernah berhasil dalam bentuk apa pun, dan mengapa butuh Google dan Dalvik (VM mirip Java Android) untuk menjadikan Java platform sukses di mana saja.
Dan itulah sebabnya saya kode game di C # hari ini. Karena Mono pergi ke mana manajemen Sun menolaknya.