जवाबों:
जावा एक वर्चुअल मशीन में चलता है, जबकि C ++ सीधे हार्डवेयर पर चलाया जाता है। इसका मतलब यह है कि आपकी स्मृति कहां जाती है और सी ++ में इसके साथ क्या किया जाता है, इस पर आपका अधिक नियंत्रण है।
जावा एक कचरा एकत्रित भाषा है। आपकी स्मृति पर आपका सीधा नियंत्रण नहीं है। आप मेमोरी के नए हिस्से आवंटित कर सकते हैं, लेकिन आपके डिलीट होने पर (फाइन) नियंत्रण नहीं होता है। कचरा संग्रहकर्ता प्रत्येक मेमोरी को आपके हर एक्स फ्रेम को आवंटित करता है और यह निर्धारित करता है कि यह कचरा है या अभी भी उपयोग किया जा रहा है।
खेलों के लिए यह विनाशकारी हो सकता है। हर कुछ तख्ते कुछ कचरा कलेक्टर जाँच के लिए आता है आपके द्वारा किए गए हर एक आवंटन की अगर यह अभी भी उपयोग किया जा रहा है? एक मंदी के बारे में बात करो!
दूसरे, हमारे द्वारा उपयोग किए जाने वाले अधिकांश पुस्तकालय या तो C में लिखे गए थे या C ++ में लिखे गए थे। मैं Scaleform, हॉक भौतिकी इंजन, PhysX, स्पीडट्री, आदि के बारे में बात कर रहा हूं। सभी पेशेवर पैकेज, उद्योग में बड़े पैमाने पर उपयोग किए जाते हैं। यदि कोई अन्य भाषा राजा बनना चाहती है, तो यह उनका बेहतर समर्थन करता है।
मेरा व्यक्तिगत विचार है कि डेस्कटॉप अनुप्रयोगों और ऐप्स के लिए जावा वास्तव में अच्छा है, लेकिन गेम के लिए नहीं। जावा में डेवलपर्स के लिए बहुत सारे अच्छे उपकरण हैं और यह सैद्धांतिक रूप से किसी भी प्लेटफ़ॉर्म पर चलाया जा सकता है जिसमें जावा वर्चुअल मशीन का कार्यान्वयन है, लेकिन मुझे अभी भी C ++ पसंद है क्योंकि मुझे इसकी आवश्यकता है अपनी मेमोरी पर नियंत्रण की है। विशेष रूप से जब आप विदेशी डेटा संरचनाओं (लाल-काले पेड़, दोगुनी जुड़ी सूची, आदि) के साथ काम करना शुरू करते हैं, तो यह आपके सभी मेमोरी आवंटन का एक अच्छा अवलोकन रखने में मदद करता है।
मैं यह नहीं कह रहा हूं: जावा का उपयोग न करें। मैं कह रहा हूं: आप जावा का उपयोग क्यों कर रहे हैं, इसके बारे में सोचें। Minecraft जावा में बनाया गया था, इसलिए जावा में गेम बनाना निश्चित रूप से संभव है। लेकिन क्या यह एक बेहतर खेल होता, इसे C ++ में बनाया गया होता? खैर, यह निश्चित रूप से बड़े तीन (विंडोज, मैकओएस, लिनक्स) पर चलने के लिए इतना सस्ता नहीं था, लेकिन फिर भी, इसके विकास में बहुत सारे प्लेटफ़ॉर्म-विशिष्ट बगों का सामना करना पड़ा, जो कि जावा को सुचारू नहीं कर सके। ऊपर।
प्रोग्रामर्स की शुरुआत के लिए अब C ++ फ्रेमवर्क के टन हैं। वास्तव में इसे सीखने का कोई बहाना नहीं है, खासकर यदि आप उद्योग में अपना करियर आगे बढ़ाना चाहते हैं।
संक्षिप्त उत्तर: C ++ देशी कोड के लिए संकलित करता है, इसलिए प्रदर्शन डेवलपर पर निर्भर है, न कि रनटाइम या वीएम पर।
लंबा जवाब:
C ++ का "तेज़" होने का C ++ से कोई लेना-देना नहीं है। फिलहाल, यह बहुत कम भाषाओं में से एक है जो उन उपकरणों द्वारा समर्थित है जो स्टैंडअलोन, कई प्लेटफार्मों के लिए मूल कोड का उत्पादन करते हैं।
दिन में वापस, आप C, C ++, BASIC / 2, डेल्फी, आदि का उपयोग कर सकते हैं, और कुशल, फ्रीस्टैंडिंग निष्पादन योग्य प्राप्त कर सकते हैं। भाषा का चुनाव व्यक्तिगत पसंद और बाजार की शक्तियों का विषय था।
इन दिनों, यह धारणा कि "सी ++ तेज है" अनिवार्य रूप से एक स्व-पूर्ति की भविष्यवाणी है, हालांकि एलएलवीएम यह बदलने की अच्छी स्थिति में है कि यह जो कुछ भी पार्सर लूट में जाता है, जैसा कि एक बार था।
बोरलैंड के पास यह अधिकार था: कई भाषाएं जिन्हें पार्स किया गया था, पहले अनुकूलन लागू किए गए, फिर एक आम बैकएंड कंपाइलर और लिंकर को पास किया गया। जो एलएलवीएम की प्रमुख उपलब्धियों में से एक है।
जावा को इस तरह से संरचित किया गया है कि जेवीएम के बिना इसे लागू करना बहुत मुश्किल होगा। विचित्र रूप से पर्याप्त, सी #, आमतौर पर, और गलत तरीके से, जावा के लगभग बराबर माना जाता है, पहले से ही आईओएस सहित कई प्लेटफार्मों पर मूल कोड के लिए संकलित करता है।
मेरी क्रिसमस सूची में सबसे ऊपर? C ++ में गुण, वास्तविक अपवाद हैंडलिंग और वास्तविक कार्य बहुरूपता को जोड़ने और वापस जाने के लिए एक टाइम मशीन, और f "d एरो सिंटैक्स क्रैप से छुटकारा पाएं जो पार्सर अपने आप पता लगा सकता है। मैंने उस 10 वर्षों के लिए एक पूर्वसूचक लिखा था। पहले क्योंकि यह मूर्खतापूर्ण है।