โอเคมีข้อมูลที่ผิดมากมายในกระทู้นี้
ฉันรู้จักธุรกิจเกมเป็นอย่างดีมาโดยตลอด 25 ปี ฉันรู้ว่า Java ในเกมเป็นอย่างดีด้วยการเป็นผู้สอนด้านเทคนิค Java Game ของ Sun และบรรยายผู้เชี่ยวชาญด้านการเขียนโปรแกรม Java
ในแง่ของความเร็วในการคำนวณ Java ชนะ C ++ ในมาตรฐานการคำนวณทางวิทยาศาสตร์มากมายในปัจจุบัน คุณสามารถเขียนรหัสพยาธิวิทยาในภาษาใดภาษาหนึ่งที่มีประสิทธิภาพไม่ดีหากคุณต้องการ แต่เหนือสิ่งอื่นใดรหัสเหล่านี้อยู่ในระดับที่น่าพึงพอใจและเป็นเวลานาน
ในแง่ของการใช้งานหน่วยความจำ Java มีส่วนเกิน HelloWorld เป็นโปรแกรม 4K ในจาวา แต่ค่าใช้จ่ายนั้นค่อนข้างไร้ความหมายในระบบหลาย GB ในปัจจุบัน ท้ายที่สุด Java มีเวลาเริ่มต้นมากกว่า ฉันจะไม่แนะนำให้ใช้ Java สำหรับอรรถประโยชน์แบบรันไทม์สั้น ๆ เช่นคำสั่ง Unix command ในกรณีดังกล่าวการเริ่มต้นจะควบคุมประสิทธิภาพของคุณ อย่างไรก็ตามในเกมมันมีต้นกำเนิดที่ค่อนข้างยุติธรรม
โค้ดเกม Java ที่เขียนขึ้นอย่างถูกต้องจะไม่เกิดการหยุด GC ชั่วคราว เช่นเดียวกับรหัส C / C ++ มันไม่จำเป็นต้องมีการจัดการหน่วยความจำที่ใช้งานอยู่ แต่ไม่ถึงระดับ C / C ++ ตราบใดที่คุณเก็บการใช้งานหน่วยความจำของคุณไปยังวัตถุที่มีอายุการใช้งานยาวนาน (คงอยู่ทั้งระดับหรือเกม) และวัตถุที่มีอายุสั้นมาก (เวกเตอร์และผ่านไปแล้วและถูกทำลายอย่างรวดเร็วหลังการคำนวณ) gc ไม่น่าเป็นปัญหา
ในแง่ของการเข้าถึงหน่วยความจำโดยตรง Java มีมานานแล้ว ตั้งแต่ Java 1.4 ในรูปของ Native Direct Byte Buffers Bit twiddling ใน Java อาจจะน่ารำคาญเล็กน้อยเนื่องจากไม่มีประเภทจำนวนเต็มที่ไม่ได้ลงนาม แต่รอบการทำงานเป็นที่รู้จักกันดีและไม่เป็นภาระอย่างมาก
ในขณะที่ Java ที่แท้จริงไม่เคยมีการเชื่อมโยง Direct3D แต่นั่นเป็นเพราะเทคโนโลยี Java พยายามอย่างหนักในการพกพา มันมีการผูกสอง OpenGL (JOGL และ LWJGL) และการผูก OpenAL (JOAL) และการเชื่อมต่ออินพุตแบบพกพา (JInput) ที่ผูกภายใต้ประทุนกับ DirectInput บน Windows, HID Manager บน OSX และการผูก Linux (ฉันลืมว่า)
ความจริงที่ว่าไม่มีเอนจิ้นเกมที่สมบูรณ์แบบที่มีคุณสมบัติของ Java พูดว่า Unity ได้ให้ความสำคัญกับ C # และนั่นเป็นจุดอ่อนในพื้นที่อิสระ ในอีกทางหนึ่งมีสองระดับ Scenegraph APIS ที่ดีซึ่งเป็นแพลตฟอร์มแบบพกพาโดยสิ้นเชิงใน Windows, OSX และ Linux ทั้งสองเขียนโดย Josh Slack ตัวแรกเรียกว่า JMonkey engine และ Ardor3D ตัวที่สอง
โปสเตอร์ด้านบนนั้นถูกต้องว่าสองสิ่งที่ยิ่งใหญ่ที่สุดที่ถือได้ว่าเป็นจาวาในการพัฒนาเกมคือความอยุติธรรมและการพกพา หลังเป็นปัญหาที่ใหญ่ที่สุด แม้ว่าคุณจะสามารถเขียนเกม Java และจัดส่งบน Windows, OSX และ Linux แต่ก็ไม่เคยมีคอนโซล VM นี่เป็นเพราะความไร้ประสิทธิภาพโดยรวมของผู้บริหารระดับกลางของซัน พวกเราบางคนที่ทำงานเกี่ยวกับ Java ในเกมจริง ๆ แล้วมีข้อตกลงกับ Sony ไม่น้อยกว่า 3 เท่าในการรับ VM บน Playstation และผู้บริหารระดับกลางของ Sun ทั้ง 3 คนฆ่ามัน
ในขณะที่ซุนเจ้าชู้กับเทคโนโลยีของลูกค้าข้อเท็จจริงของเรื่องนี้ก็คือการจัดการของซันไม่เคยได้รับสินค้าอุปโภคบริโภค นั่นเป็นเหตุผลว่าทำไม Java ในฐานะภาษาลูกค้าจาก Sun ไม่เคยประสบความสำเร็จในทุกรูปแบบและทำไมจึงใช้ Google และ Dalvik (เช่น Java java เหมือน VM) เพื่อให้ Java เป็นแพลตฟอร์มที่ประสบความสำเร็จได้ทุกที่
และนั่นคือเหตุผลที่ฉันโค้ดเกมใน C # วันนี้ เพราะโมโนไปที่ฝ่ายบริหารของซันปฏิเสธ