さて、このスレッドには多くの誤った情報があります。
私はゲームビジネスを非常によく知っており、25年間そのビジネスに携わってきました。また、ゲーム内のJavaがSunのJava Gameの技術的エバンジェリストであり、Javaパフォーマンスプログラミングの専門家である講師であることも非常によく知っています。
計算速度の点では、Javaは今日の多くの科学計算ベンチマークでC ++を上回っています。必要に応じてパフォーマンスが悪いいずれかの言語で病理学的コードを書くことができますが、全体としては、それらは同等であり、長い間使用されています。
メモリ使用量に関して、Javaにはオーバーヘッドがあります。HelloWorldは、Javaの4Kプログラムです。しかし、そのオーバーヘッドは、今日のマルチGBシステムではほとんど意味がありません。最後に、Javaには起動時間が長くなります。Unixコマンドラインコマンドのような短い実行時ユーティリティにJavaを使用することはお勧めしません。これらの場合、スタートアップがパフォーマンスを支配します。しかし、ゲームでは、かなり無頓着です。
適切に記述されたJavaゲームコードは、GCの一時停止を受けません。C / C ++コードと同様に、アクティブなメモリ管理が必要ですが、C / C ++には必要ありません。メモリの使用量を長寿命オブジェクト(レベル全体またはゲーム全体に保持)と非常に短寿命オブジェクト(ベクトルなどが通過し、計算後にすぐに破棄される)のいずれかである限り、gcは目に見える問題ではありません。
ダイレクトメモリアクセスに関しては、Javaには長い間使用されてきました。ネイティブダイレクトバイトバッファの形式のJava 1.4以降。Javaでのビット調整は、符号なし整数型がないために少し面倒ですが、作業ラウンドはすべてよく知られており、それほど面倒ではありません。
真のJavaにはDirect3Dバインディングがなかったが、Javaテクノロジーは移植性を追求しているためだ。2つのOpenGLバインディング(JOGLとLWJGL)とOpenALバインディング(JOAL)、およびWindowsのDirectInput、OSXのHIDマネージャー、Linuxバインディングにバインドするポータブル入力バインディング(JInput)があります(どれを忘れますか)。
UnityのようにJavaを完全なゲームエンジンが搭載していないことは事実であり、UnityはC#を搭載しており、独立した領域の弱点です。一方、Windows、OSX、Linuxで完全にプラットフォームを移植できる2つの優れたScenegraphレベルのAPIがありました。どちらもJosh Slackによって書かれました。最初はJMonkeyエンジンと呼ばれ、2番目はArdor3Dと呼ばれていました。
一番上のポスターは、Javaをゲーム開発に持ち込んだ2つの最大の要因は偏見と移植性であったということです。後者が最大の問題でした。Javaゲームを作成してWindows、OSX、Linuxに出荷することもできますが、コンソールVMはありませんでした。これは、Sunの中間管理職の全体的な不備によるものです。ゲームでJavaに取り組んでいる私たちの数人は、実際にはプレイステーションでVMを取得するために3回もソニーと取引をしており、3回すべてのサンの中間管理者がそれを殺しました。
サンはクライアントテクノロジーをいじりましたが、実際のところ、サンの経営陣は消費者向け製品を手に入れたことはありません。それが、Sunのクライアント言語としてのJavaがどのような形でも成功しなかった理由であり、Javaをプラットフォームで成功させるためにGoogleとDalvik(Android javaのようなVM)を必要とした理由です。
それが、今日私がゲームをC#でコーディングしている理由です。モノがサンの経営陣が拒否したところに行ったからです。