ฉันใช้ Java เพื่อเขียนเกมและฉันใช้ C ++ เพื่อเขียนเกมและพบว่า Java นั้นใช้ได้ตราบใดที่คุณยังคำนึงถึงจุดแข็งและจุดอ่อนของ Java ข้อดีสองประการที่สำคัญสำหรับฉันการเขียนโปรแกรมใน Java คือความเร็วในการพัฒนาและการใช้งาน / การพกพา เวลาในการคอมไพล์นั้นเร็วกว่าใน VC ++ (ยังไม่สามารถพูดกับ XCode หรือ Clang ได้) ซึ่งหมายความว่าฉันสามารถแก้ไขปัญหาได้เร็วกว่ามาก นอกจากนี้เมื่อ Eclipse รวบรวมอย่างต่อเนื่องฉันจึงพิมพ์ผิดพลาดน้อยลง ฉันไม่เคยเขียนโค้ด C ++ สักชิ้นที่ 'เพิ่งได้ผล' บนระบบหรือคอมไพเลอร์อื่น ใน Java นี่เป็นบรรทัดฐาน
ในทางกลับกัน, Java มีบางหลังดึงที่สำคัญ ประสิทธิภาพมักถูกจัดวางไว้ด้วยเหตุผลที่ไม่ใช้ Java แต่ฉันพบว่าตราบใดที่คุณโค้ดในบางวิธี Java สามารถทำงานได้ค่อนข้างดี ปัญหาคือวิธีการบางอย่างที่คุณต้องใช้ในการเขียนรหัสจะขัดกับสิ่งที่ชาว Java จำนวนมากจะพิจารณาจากการออกแบบที่ดี
หัวใจของ Java คือ 'ตัวรวบรวมขยะ' เป็นระบบจัดการหน่วยความจำ เมื่อเขียนโค้ดที่มีประสิทธิภาพคุณต้องการหลีกเลี่ยงการจัดสรรแบบไดนามิกทุกเฟรมในภาษาใด ๆ และนี่เป็นความจริงโดยเฉพาะของ Java หากคุณตั้งค่าตัวเก็บรวบรวมขยะออกเนื่องจากสิ่งใหม่ ๆ ที่เลอะเทอะคุณสามารถจูบอัตราเฟรมที่ราบรื่นได้ด้วยลาก่อน ประการที่สอง (และน่ารำคาญที่สุด) Java ไม่รองรับประเภทข้อมูลผู้ใช้ระดับที่หนึ่ง ผู้ใช้ทุกประเภทข้อมูลใน Java ถูกยกตัวอย่างเป็นตัวชี้ไปยังคลาสที่จัดสรรบนฮีป สิ่งนี้น่ากลัวสำหรับการเกิดขึ้นพร้อมกันของแคชที่คุณไม่สามารถมีสิ่งต่าง ๆ เช่นอาร์เรย์ของวัตถุ Vector3 และมีการเกิดขึ้นพร้อมกันในหน่วยความจำ - คุณสามารถมีอาร์เรย์ของตัวชี้ Vector3 ได้ แต่นั่นไม่ใช่สิ่งเดียวกันเลย โดยทั่วไปคุณจะต้องใช้ออฟเซ็ตลงในอาร์เรย์ขนาดใหญ่ของประเภทดั้งเดิมแทน