मैं गेम लिखने के लिए जावा का उपयोग करता हूं और मैंने गेम लिखने के लिए C ++ का उपयोग किया है और जावा को तब तक ठीक पाया है जब तक आप जावा की ताकत और कमजोरियों के बारे में ध्यान रखते हैं। मेरे लिए बड़े दो फायदे, जावा में प्रोग्रामिंग विकास की गति और तैनाती / पोर्टेबिलिटी हैं। संकलन समय VC ++ की तुलना में बहुत तेज होता है (अभी तक XCode या Clang के लिए नहीं बोल सकते हैं) जिसका अर्थ है कि मैं समस्याओं को जल्दी दूर कर सकता हूं। इसके अलावा, जैसा कि ग्रहण लगातार संकलित कर रहा है, मैं कम टाइपो त्रुटियां करता हूं। मैंने कभी भी C ++ कोड का एक टुकड़ा नहीं लिखा है जो किसी अन्य सिस्टम या कंपाइलर पर 'काम करता है'। जावा में, यह आदर्श है।
दूसरी ओर, जावा में कुछ प्रमुख ड्रा बैक हैं। दक्षता को अक्सर जावा का उपयोग न करने के कारण के रूप में देखा जाता है, लेकिन मैंने पाया है कि जब तक आप एक निश्चित तरीके से कोड करते हैं, तब तक जावा बहुत अच्छा प्रदर्शन कर सकता है। परेशानी यह है कि, जिस तरह से आपको कोड करना होता है, उससे यह पता चलता है कि बहुत सारे जावा लोक अच्छे डिजाइन पर विचार करेंगे।
जावा के दिल में 'कचरा संग्रहकर्ता' है, यह मेमोरी मैनेजमेंट सिस्टम है। कुशल कोड लिखते समय, आप किसी भी भाषा में प्रत्येक फ्रेम को गतिशील आवंटन करने से बचना चाहते हैं और यह विशेष रूप से जावा का सच है। आप लापरवाह new'ing के कारण बंद कचरा कलेक्टर सेट करते हैं तो आप चिकनी फ्रेम दरों अलविदा चुंबन कर सकते हैं। दूसरे (और सबसे अधिक कष्टप्रद) जावा प्रथम श्रेणी के उपयोगकर्ता डेटा प्रकारों का समर्थन नहीं करता है। जावा में प्रत्येक उपयोगकर्ता डेटा प्रकार अनिवार्य रूप से ढेर पर आवंटित कक्षा के लिए एक संकेतक के रूप में त्वरित रूप से तैयार किया जाता है। यह कैश कॉन्सिक्वेंसी के लिए भयानक है कि आपके पास वेक्टर 3 ऑब्जेक्ट्स की एक सरणी जैसी चीजें नहीं हो सकती हैं और मेमोरी में समवर्ती हैं - आपके पास वेक्टर 3 पॉइंटर्स की एक सरणी हो सकती है लेकिन यह एक ही बात नहीं है। आम तौर पर आपको इसके बजाय आदिम प्रकार के बड़े सरणियों में ऑफसेट का उपयोग करना होगा।