이 스레드에는 많은 잘못된 정보가 있습니다.
나는 게임 사업을 알 극도로 25 년 동안 거기에 있었던 것, 잘. 또한 게임에서 Java는 Sun의 Java Game 기술 전도사였으며 Java 성능 프로그래밍 전문가를 강하게 잘 알고 있습니다.
계산 속도 측면에서 Java는 오늘날 많은 과학 컴퓨팅 벤치 마크에서 C ++보다 뛰어납니다. 원하는 경우 성능이 좋지 않은 언어로 병리학 적 코드를 작성할 수 있지만, 전체적으로는 동등하며 오랫동안 사용되었습니다.
메모리 사용 측면에서 Java에는 오버 헤드가 있습니다. HelloWorld는 Java의 4K 프로그램입니다. 그러나 오늘날의 멀티 GB 시스템에서는 이러한 오버 헤드가 의미가 없습니다. 마지막으로 Java에는 더 많은 시작 시간이 있습니다. 유닉스 커맨드 라인 명령과 같은 짧은 런타임 유틸리티에는 Java를 사용하지 않는 것이 좋습니다. 이 경우 시동이 성능을 지배합니다. 그러나 게임에서는 상당히 초기 단계입니다.
올바르게 작성된 Java 게임 코드는 GC 일시 중지를 겪지 않습니다. C / C ++ 코드와 마찬가지로 활성 메모리 관리가 필요하지만 C / C ++ 수준에서는 그렇지 않습니다. 수명이 긴 오브젝트 (전체 레벨 또는 게임에 지속됨) 및 매우 짧은 수명이있는 오브젝트 (벡터 등의 계산 및 전달 후 빠르게 파괴됨)에 대한 메모리 사용량을 유지하는 한 gc는 눈에 띄는 문제가 아닙니다.
직접적인 메모리 액세스의 관점에서 자바는 오랜 기간 동안 그것을 가지고 있었다. Native Direct Byte Buffers 형태의 Java 1.4부터. Java에서 비트 twiddling은 부호없는 정수 유형이 없기 때문에 약간 성가신 일이 될 수 있지만 작업 라운드는 모두 잘 알려져 있으며 끔찍하지 않습니다.
진정한 Java에는 Direct3D 바인딩이 없었지만 Java 기술은 이식성을 위해 노력하기 때문입니다. 그것은 두 개의 OpenGL 바인딩 (JOGL 및 LWJGL) 및 OpenAL 바인딩 (JOAL)과 Windows의 DirectInput, OSX의 HID 관리자 및 Linux 바인딩 (나는 어느 것을 잊어 버린다)에 후드 아래에 바인딩하는 휴대용 입력 바인딩 (JInput)을 가지고 있습니다.
Unity가 C #을 특징으로하는 완전한 게임 엔진이 Java를 특징으로하지 않았으며 이는 독립된 공간의 약점입니다. 다른 한편으로, Windows, OSX 및 Linux에서 완전히 플랫폼 이식성이 뛰어난 2 개의 우수한 Scenegraph 레벨 API가있었습니다. Josh Slack이 작성한 첫 번째는 JMonkey 엔진과 두 번째 Ardor3D입니다.
최고의 포스터는 게임 개발에서 Java를 유지했던 가장 큰 두 가지 요소가 편견과 이식성 이었다는 것입니다. 후자가 가장 큰 문제였습니다. Java 게임을 작성하여 Windows, OSX 및 Linux에 제공 할 수는 있지만 콘솔 VM은 없었습니다. 이것은 Sun 중간 관리에서 전체가 부적절했기 때문입니다. 게임에서 Java를 사용하는 소수의 사람들은 실제로 Sony와 3 번 이상 플레이 스테이션에서 VM을 얻기 위해 3 번의 거래를했으며 Sun의 중간 관리자가 3 번의 죽임을당했습니다.
썬은 클라이언트 기술을 사용했지만 썬 관리는 소비자 제품을 얻지 못했다는 사실이 중요합니다. 그렇기 때문에 Sun의 클라이언트 언어 인 Java가 어떤 형태로도 성공하지 못한 이유는 무엇이며, Java와 플랫폼을 Java로 만드는 데 Google과 Dalvik (Android Java와 같은 VM)이 필요한 이유입니다.
이것이 바로 오늘 C #으로 게임을 코딩하는 이유입니다. 모노가 썬 경영진이 거부 한 곳으로 갔기 때문입니다.