जावा की एक आधुनिक समीक्षा [बंद]


58

मैं कुछ वर्षों से प्रोग्रामिंग कर रहा हूं और मैंने जावा में शुरू किया है, और मेरे समय में मैंने कई अलग-अलग स्रोतों को पाया है कि जावा किसी तरह या किसी अन्य भाषा में एक अवर भाषा होने का दावा करता है। मुझे अच्छी तरह पता है कि प्रत्येक भाषा की ताकत और कमजोरियाँ होती हैं, लेकिन मैंने जावा के बारे में बहुत सी चीजें पढ़ी हैं जो दिनांकित प्रतीत होती हैं।

जावा के अवर होने का सबसे अक्सर कारण यह बताया गया है कि यह अन्य मूल संकलित भाषाओं की तुलना में बहुत धीमा है, उदाहरण के लिए C ++। प्रदर्शन विभाग में इसकी स्पष्ट कमी के कारण जावा का उपयोग करने के लिए कई लोग गेम डिजाइनर नॉच (जिन्होंने मिनक्राफ्ट विकसित किया है) की आलोचना करते हैं। मुझे पता है कि दिन में जावा बहुत धीमा था, लेकिन तब से कई सुधार हुए हैं, खासकर JIT संकलन।

मैं आज भाषा के रूप में जावा के कुछ वस्तुनिष्ठ मत प्राप्त करना चाहूंगा। तो मेरे प्रश्न के 4 भाग हैं।

  1. प्रदर्शन।

    ए। आज जावा की गति C ++ की तुलना कैसे करती है?

    ख। क्या जावा का उपयोग करके आधुनिक AAA शीर्षक बनाना संभव होगा?

    सी। किन क्षेत्रों में विशेष रूप से जावा ++ की तुलना में धीमा है, यदि सभी पर? (यानी नंबर-क्रंचिंग, ग्राफिक्स या चारों ओर)

  2. क्या जावा अब एक संकलित भाषा या व्याख्या की गई भाषा मानी जाती है?

  3. जावा की कुछ प्रमुख कमियां हैं जो शुरुआती दिनों से संबोधित की गई हैं?

  4. जावा की कुछ प्रमुख कमियाँ हैं जिन्हें अभी तक संबोधित नहीं किया जा सका है।

संपादित करें:

स्पष्टीकरण प्रयोजनों के लिए मैं यह जावा बनाम सी ++ नहीं बना रहा हूँ, जाहिर है औसत सी ++ जावा की तुलना में थोड़ा तेज होगा। मुझे इस समय एक भाषा के रूप में परिपक्वता के संदर्भ में जावा की तुलना करने के लिए कुछ चाहिए। चूँकि c ++ हमेशा के लिए रहा है, इसलिए मैंने सोचा कि मैं तुलना का एक अच्छा बिंदु होगा।



4
मुझे यह तथ्य पसंद है कि 10 साल पुराना कुछ भी अब आधुनिक नहीं है।
cwallenpoole

4
जब आप इसे केवल एक भाषा के बजाय एक फ्रेमवर्क / मंच के रूप में देखते हैं तो जावा बहुत अलग दिखता है । शायद समस्या यह है कि नाम अनिवार्य रूप से दोनों के लिए "जावा" है।
जो इंटरनेट

1
इसके विपरीत एक बिंदु के रूप में - हाल ही में Minecraft ने 3 मिलियन की बिक्री की। मुझे नहीं लगता कि जावा की कथित कमियों ने बिक्री को प्रभावित करने के लिए खेल को काफी नुकसान पहुंचाया है।
माइकल के

3
बिल्कुल किसी भी भाषा "एक तरह से या किसी अन्य" से हीन है। परिभाषा से।
तर्क

जवाबों:


62

ए। आज जावा की गति C ++ की तुलना कैसे करती है?

नापना मुश्किल। यह ध्यान देने योग्य है कि कार्यान्वयन की गति का एक प्रमुख हिस्सा, यह मेमोरी एलोकेटर है, जावा और सी ++ में बहुत अलग एल्गोरिदम हैं। कलेक्टर की गैर-नियतात्मक प्रकृति, C ++ की निर्धारक स्मृति प्रबंधन की तुलना में सार्थक प्रदर्शन डेटा प्राप्त करना बहुत कठिन बना देती है, क्योंकि आप कभी भी निश्चित नहीं हो सकते हैं कि कलेक्टर किस राज्य में है। इसका मतलब है कि बेंचमार्क लिखना बहुत कठिन है। जो सार्थक रूप से उनकी तुलना कर सकता है। कुछ मेमोरी एलोकेशन पैटर्न जीसी के साथ बहुत तेजी से चलते हैं, कुछ देशी एलोकेटर के साथ बहुत तेजी से चलते हैं।

हालाँकि, मैं यह कहूंगा कि जावा जीसी को हर हाल में तेजी से चलना है। हालाँकि, एक देशी आवंटनकर्ता को एक उपयुक्त वस्तु की अदला-बदली की जा सकती है। मैंने हाल ही में SO पर एक सवाल रखा है कि क्यों एक C # Dictionaryएक बराबर की तुलना में (मेरी मशीन पर 0.45 ms) निष्पादित कर सकता हैstd::unordered_mapजो (मेरी मशीन पर 10ms) पर निष्पादित किया गया। हालाँकि, अधिक उपयुक्त लोगों के लिए बस आबंटक और हैशर की अदला-बदली करके, मैंने उस निष्पादन समय को अपनी मशीन पर 0.34ms कर दिया- मूल रन-टाइम का तीसवां भाग। आप कभी भी जावा के साथ उस तरह के कस्टम अनुकूलन करने की उम्मीद नहीं कर सकते हैं। एक उत्कृष्ट उदाहरण जहां यह वास्तविक अंतर पैदा कर सकता है, वह है थ्रेडिंग। टीबीबी जैसे मूल धागा पुस्तकालय थ्रेड-कैशिंग आवंटन प्रदान करते हैं जो पारंपरिक आवंटनकर्ताओं की तुलना में बड़े पैमाने पर तेजी से होते हैं जब कई थ्रेड्स पर कई आवंटन से निपटते हैं।

अब, कई लोग जेआईटी सुधार के बारे में बात करेंगे और जेआईटी के पास अधिक जानकारी कैसे होगी। यकीन है, यह सच है। लेकिन यह अभी भी दूर नहीं है कि एक C ++ कंपाइलर क्या खींच सकता है- क्योंकि कंपाइलर में, अंतिम प्रोग्राम के रन-टाइम के परिप्रेक्ष्य से, तुलनात्मक रूप से, अनंत समय और स्थान होता है। हर चक्र और हर बाइट जो कि JIT यह सोचकर खर्च करता है कि आपके प्रोग्राम को कैसे ऑप्टिमाइज़ किया जाए, एक चक्र है कि आपका प्रोग्राम एक्जीक्यूटिंग खर्च नहीं कर रहा है और इसका उपयोग खुद की मेमोरी की जरूरत के लिए नहीं कर सकता है।

इसके अलावा, हमेशा ऐसे समय होंगे जहां कंपाइलर और जेआईटी ऑप्टिमाइज़ेशन कुछ ऑप्टिमाइज़ेशन साबित नहीं कर सकते हैं- विशेष रूप से भागने के विश्लेषण जैसी चीजों के मामले में। C ++ में, जैसा कि मूल्य वैसे भी स्टैक पर है , कंपाइलर को इसे प्रदर्शन करने की आवश्यकता नहीं है। इसके अलावा, साधारण चीजें हैं, जैसे सन्निहित स्मृति। यदि आप C ++ में एक सरणी आवंटित करते हैं, तो आप एक एकल, सन्निहित सरणी आवंटित करते हैं। यदि आप जावा में एक सरणी आवंटित करते हैं, तो यह बिल्कुल भी सन्निहित नहीं है, क्योंकि सरणी केवल पॉइंटर्स से भरी हुई है जो कहीं भी इंगित कर सकती है। यह न केवल दोहरे अप्रत्यक्ष के लिए एक मेमोरी और टाइम ओवरहेड है, बल्कि कैश ओवरहेड्स भी है। इस तरह की बात यह है कि जावा का भाषा शब्दार्थ केवल इतना ही लागू करता है कि इसे बराबर C ++ कोड से धीमा होना चाहिए।

अंततः, मेरा व्यक्तिगत अनुभव यह है कि जावा औसतन C ++ की आधी गति हो सकती है। हालाँकि, मौलिक रूप से भिन्न एल्गोरिदम में शामिल होने के कारण, अत्यंत व्यापक बेंचमार्क सूट के बिना किसी भी प्रदर्शन विवरण को वापस लेने का कोई तरीका नहीं है।

ख। क्या जावा का उपयोग करके आधुनिक AAA शीर्षक बनाना संभव होगा?

मुझे लगता है कि आप "खेल" का मतलब है, यहाँ, और एक मौका नहीं है। सबसे पहले, आपको लगभग सभी मौजूदा पुस्तकालयों और बुनियादी ढांचे के लक्ष्य C ++ के रूप में अपने आप को खरोंच से सब कुछ लिखना होगा। जब तक कि इसे प्रति से असंभव नहीं बनाया जा सकता, यह निश्चित रूप से अक्षम्य के प्रति ठोस योगदान दे सकता है। दूसरे, यहां तक ​​कि सी ++ इंजन भी मौजूदा कंसोल की छोटी मेमोरी बाधाओं में शायद ही फिट हो सकते हैं- अगर जेवीएम उन कंसोलों के लिए भी मौजूद हैं- और पीसी गेमर्स उनकी मेमोरी के लिए थोड़ी अधिक उम्मीद करते हैं। कलाकार एएए गेम बनाना सी ++ में काफी कठिन है, मैं नहीं देखता कि यह जावा में कैसे हासिल किया जा सकता है। किसी ने कभी गैर-संकलित भाषा में बिताए महत्वपूर्ण समय के साथ एएए खेल नहीं लिखा है। इससे अधिक, यह केवल अत्यंत त्रुटिपूर्ण होगा। उदाहरण के लिए, GPU संसाधनों- और जावा में, आपके साथ काम करते समय नियतात्मक विनाश आवश्यक है

सी। किन क्षेत्रों में विशेष रूप से जावा ++ की तुलना में धीमा है, यदि सभी पर? (यानी नंबर-क्रंचिंग, ग्राफिक्स या चारों ओर)

मैं निश्चित रूप से सभी के लिए जाना होगा। सभी जावा ऑब्जेक्ट्स के लागू-संदर्भ प्रकृति का मतलब है कि जावा में C ++ करता है की तुलना में कहीं अधिक अप्रत्यक्ष और संदर्भ हैं- उदाहरण मैंने पहले सरणियों के साथ दिया था, लेकिन सभी सदस्य वस्तुओं पर भी लागू होता है, उदाहरण के लिए। जहां C ++ कंपाइलर निरंतर समय में एक सदस्य चर को देख सकता है, जावा रन-टाइम को किसी अन्य पॉइंटर का पालन करना पड़ता है। जितना अधिक आप करते हैं, उतना ही धीमे होने वाला है, और इसके बारे में JIT कुछ भी नहीं कर सकता है।

जहाँ C ++ लगभग तुरंत मेमोरी के टुकड़े को फ्री और री-यूज़ कर सकती है, जावा में आपको कलेक्शन का इंतज़ार करना होगा, और मुझे उम्मीद है कि टुकड़ा कैश से बाहर नहीं गया, और स्वाभाविक रूप से अधिक मेमोरी की आवश्यकता होती है जिसका मतलब है कम कैश और पेजिंग प्रदर्शन। फिर मुक्केबाजी और अनबॉक्सिंग जैसी चीजों के लिए शब्दार्थ को देखें। जावा में, यदि आप एक इंट का संदर्भ लेना चाहते हैं, तो आपको इसे गतिशील रूप से आवंटित करना होगा। यह C ++ शब्दार्थ की तुलना में एक अंतर्निहित अपशिष्ट है।

फिर आपको जेनेरिक समस्या है। जावा में, आप केवल रन-टाइम वंशानुक्रम के माध्यम से सामान्य वस्तुओं पर काम कर सकते हैं। C ++ में, टेम्प्लेट का शाब्दिक रूप से शून्य ओवरहेड है - कुछ जावा मेल नहीं खा सकता है। इसका मतलब है कि जावा में सभी सामान्य कोड स्वाभाविक रूप से C ++ में एक सामान्य समकक्ष की तुलना में धीमी हैं।

और फिर आप अपरिभाषित व्यवहार पर आते हैं। जब उनका कार्यक्रम यूबी प्रदर्शित करता है, तो हर कोई इससे नफरत करता है, और हर कोई चाहता है कि यह मौजूद नहीं था। हालांकि, यूबी मौलिक रूप से उन अनुकूलन को सक्षम करता है जो जावा में कभी मौजूद नहीं हो सकते। पर एक नजर डालें इस पद यूबी के आधार पर अनुकूलन का वर्णन। व्यवहार को परिभाषित नहीं करने का अर्थ है कि कार्यान्वयन अधिक अनुकूलन कर सकते हैं और उन परिस्थितियों की जांच के लिए आवश्यक कोड को कम कर सकते हैं जो C ++ में अपरिभाषित होंगे लेकिन जावा में परिभाषित किए गए हैं।

मौलिक रूप से, जावा का शब्दार्थ यह बताता है कि यह C ++ की तुलना में धीमी भाषा है।

क्या जावा अब एक संकलित भाषा या व्याख्या की गई भाषा मानी जाती है?

यह वास्तव में उन समूहों में से किसी में फिट नहीं है। मैं कहूंगा कि प्रबंधित वास्तव में अपने आप में एक अलग श्रेणी है, हालांकि मैं कहूंगा कि यह निश्चित रूप से संकलित भाषा की तुलना में एक व्याख्या की गई भाषा की तरह है। इससे भी महत्वपूर्ण बात यह है कि बहुत अधिक केवल दो प्रमुख प्रबंधित सिस्टम, JVM और CLR हैं, और जब आप "प्रबंधित" कहते हैं तो यह पर्याप्त स्पष्ट है।

जावा की कुछ प्रमुख कमियां हैं जो शुरुआती दिनों से संबोधित की गई हैं?

स्वचालित बॉक्सिंग और अनबॉक्सिंग केवल एक चीज है जिसके बारे में मुझे पता है। जेनरिक कुछ मुद्दों को हल करता है, लेकिन कई से बहुत दूर।

जावा की कुछ प्रमुख कमियाँ हैं जिन्हें अभी तक संबोधित नहीं किया जा सका है।

उनके जेनेरिक बहुत, बहुत कमजोर हैं। C # की जेनरिक काफी मजबूत हैं- हालांकि, न तो काफी टेम्प्लेट हैं। नियतात्मक विनाश एक और बड़ी कमी है। लैम्ब्डा / क्लोजर का कोई भी रूप भी एक बड़ी समस्या है- आप जावा में एक कार्यात्मक एपीआई भूल सकते हैं। और, ज़ाहिर है, हमेशा उन क्षेत्रों के लिए प्रदर्शन का मुद्दा होता है, जिनकी उन्हें आवश्यकता होती है।


10
आपको लगता है कि आधुनिक JIT कैसे काम करती है, इसके बारे में कुछ गलतफहमियाँ हैं। अन्यथा अच्छी जानकारी।
सीन मैकमिलन

7
"इससे भी महत्वपूर्ण बात यह है कि बहुत अधिक केवल दो प्रमुख प्रबंधित सिस्टम, JVM और CLR हैं - उम, पायथन? माणिक? छोटी बात? LISP ? वे सभी कचरा बीनने वालों का उपयोग करते हैं, कमी सूचक अंकगणित और एएफएआईके में कम से कम एक कार्यान्वयन बायटेकोड के आधार पर होता है।
माइकल बोर्गवर्ड

3
@ मिचेल: पिछली बार जब मैंने जाँच की थी, कम से कम अजगर और रूबी "व्याख्या" शिविर में बहुत भारी पड़ गए। उनके सबसे आम कार्यान्वयन न तो एक अलग चरण में बायटेकोड के पूर्व-संकलन हैं और न ही जेआईटी शामिल हैं। स्मॉलटाक या LISP का उपयोग नहीं किया गया है, लेकिन मैं उन्हें "प्रमुख" शिविर में डालने के बारे में निश्चित नहीं हूं- और मैंने कभी भी एक Smalltalk या LISP JIT के बारे में नहीं सुना है।
डेडएमजी

19
+1 अच्छा जवाब। अंत में कोई ऐसा व्यक्ति जो समझता है कि जावा हमेशा C ++ से धीमा क्यों होगा।
jeffythedragonslayer

2
क्या इनमें से कोई भी बिंदु किसी भी वास्तविक विश्व प्रदर्शन के मुद्दों (accexdotal या बेंचमार्क) को मिटा देता है? क्या यह अधिकांश उपयोगकर्ताओं द्वारा ध्यान देने योग्य है? यह कहना कि लैंग्वेज X की तुलना में लैंग्वेज X 0.25% तेज है, इसका मतलब यह नहीं है कि लैंग्वेज Y धीमी है। वीडियो गेम के साथ, क्या आप ज़ोर से कंसोल बात कर रहे हैं या इसमें पीसी गेम शामिल हैं?
theLQ

34

मैं अनंतिम के साथ शुरू करूँगा कि प्रोग्रामिंग भाषाओं के बारे में किसी को भी निष्पक्ष राय देना लगभग असंभव है। यदि आप दो भाषाओं को अच्छी तरह से जानते हैं कि उन पर सार्थक रूप से टिप्पणी कर सकें, तो यह लगभग अपरिहार्य है कि आप एक से दूसरे को पसंद करेंगे। निष्पक्ष चेतावनी के रूप में, मैं जावा पर C ++ पसंद करता हूं, जो निस्संदेह मेरी टिप्पणियों को कम से कम कुछ हद तक प्रभावित करता है।

1 क। गति: आपको C ++ या जावा से प्राप्त होने वाली गति आमतौर पर प्रोग्रामर के कौशल की तुलना में भाषा या इसके कार्यान्वयन पर कम निर्भर करती है। अंत में, सी ++ शायद कर सकते हैं अधिक बार नहीं की तुलना में गति के लिए जीतने के लिए है, लेकिन कोड तुम लिखो में मतभेद क्या वास्तव में कोई फर्क नहीं है।
1b। हां शायद। उसी समय, C ++ पहले से ही अच्छी तरह से स्थापित है, और मुझे संदेह है कि अधिकांश गेम स्टूडियो जावा को स्विच करने से परेशान करने के लिए पर्याप्त लाभ देखते हैं।
1c। इसका गहन उत्तर शायद एक बड़ी मात्रा को भर सकता है। सी ++ आमतौर पर अधिक सीमित संसाधनों के साथ बेहतर करेगा। जावा को (उदाहरण के लिए) अधिक "अतिरिक्त" मेमोरी उपलब्ध होने से लाभ होता है।
2. धीमी गति से निष्पादन और धीमा कचरा संग्रह शायद दो सबसे स्पष्ट होगा। प्रारंभिक विंडोिंग लाइब्रेरी (AWT) काफी अनाड़ी थी - स्विंग एक बड़ा सुधार था।
3. वाचालता। ऑपरेटर की ओवरलोडिंग में कमी। कचरा संग्रह का उपयोग। एकाधिक वंशानुक्रम की कमी। C ++ टेम्प्लेट की तुलना में Java Generics बेहद सीमित हैं ।

मुझे उन नुकसानों में से कुछ (सभी?) को जोड़ना चाहिए (विशेष रूप से कचरा संग्रह का उपयोग, लेकिन दूसरों को भी) जावा के कई फायदे के रूप में देखा जाता है। एकमात्र संभावित अपवाद इसकी वाचालता होगी। वर्बोसिटी की स्थिति में धीरे-धीरे सुधार हो रहा है, लेकिन आप निश्चित रूप से जावा जीतने वाले कोड गोल्फ कॉन्टेस्ट को बहुत बार नहीं देखते हैं, और साधारण कोड में यह कोड का काफी उपयोग करने के लिए जाता है। मुझे संदेह है कि कम से कम कुछ हैं जो इसे अधिक पठनीय और समझने योग्य के रूप में देखते हैं, इसलिए इसे संभवतः एक लाभ के रूप में भी देखा जा सकता है।


12
जावा जेनरिक C ++ टेम्प्लेट के लिए भी तुलनीय नहीं है। जावा टेम्प्लेट कम्पाइल-टाइम टाइप चेकिंग में सहायता करने के लिए सिंटैक्टिक शुगर हैं। C ++ टेम्प्लेट एक ट्यूरिंग-पूर्ण कोड जनरेशन सिस्टम है।
केविन क्लाइन

10
मौखिकता के लिए +1। लंबे समय से अर्थहीन वाक्यविन्यास के लिए COBOL के साथ इसका ऊपर। सभी "ट्राय" "कैच" के साथ और सभी ht e ExtrementlyLongClassName अत्यंतLongObjectName = नए ExteremlyLongClassName () प्रकार के कोड के साथ यह काम करना एक बड़ी चुनौती हो सकती है कि कोड का एक टुकड़ा वास्तव में क्या करने की कोशिश कर रहा है।
जेम्स एंडरसन

1
@ मर्क: व्यक्तिगत रूप से, मुझे यह उत्तर एक अपठनीय गड़बड़ लगता है और इस तरह की चीज़ को दोबारा नहीं देखना चाहेंगे। उत्तरों का उत्तर होना चाहिए, चर्चाओं का नहीं।
माइकल बोर्गवर्ड

2
+1 ऑपरेटर के ओवरलोडिंग के लिए, कुछ लोग मामूली नुकसान के रूप में देखते हैं, लेकिन मेरे लिए एक प्रमुख है। और निश्चित रूप से टेम्पलेट्स, लेकिन लगभग हर कोई उन्हें प्रमुख मानता है।
क्रिस का कहना है मोनिका

2
C ++ टेम्प्लेट्स को ट्यूरिंग-पूर्ण होने का इरादा नहीं था - जो कि दुर्घटना से हुआ, इसके डिजाइन के परिणामस्वरूप। फिर भी, यह कभी-कभी उपयोगी होता है: सी ++ टेम्पलेट मेटाप्रोग्रामिंग देखें।
आने वाली

11
  1. प्रदर्शन के बारे में;
    1. शुद्ध कोड निष्पादन की गति में, जावा सीधा C ++ के बराबर है। लेकिन जावा बहुत अधिक मेमोरी का उपयोग करता है - आंशिक रूप से क्योंकि यह जीसी-आधारित है, आंशिक रूप से क्योंकि इसका डिज़ाइन कार्यकुशलता की तुलना में सादगी और सुरक्षा पर अधिक ध्यान देता है। कैश के मुद्दों के कारण, अधिक मेमोरी कम गति में अनुवाद करती है। एक बहुत कम जब उच्च देखते सी ++ की तुलना में।
    2. यदि आप मानते हैं कि एएए शीर्षक को वर्तमान हार्डवेयर के उपयोग से जो संभव है, उसके किनारे पर काम करना चाहिए, नहीं। कम से कम क्लाइंट की तरफ नहीं। मैं शर्त लगाने को तैयार हूं कि कुछ एएए शीर्षक पहले से ही बैकएंड इन्फ्रास्ट्रक्चर के कुछ हिस्सों के लिए जावा का उपयोग करते हैं।
    3. कुछ भी जहां आप बड़े डेटासेट और C ++ के साथ काम करते हैं, उन्हें कैश-फ्रेंडली तरीके से एक्सेस करने के लिए अनुकूलित किया जा सकता है।
  2. यह रनटेक पर संकलित और JIT- संकलित है। संकलित बनाम संकलित एक मिथ्या, पुराना द्वंद्व है।
  3. & 4. उन सभी को सूचीबद्ध करने के लिए बहुत सी चीजें हैं, और उनमें से अधिकांश पर असहमति होगी।

3
कहने को जावा बहुत मेमोरी का उपयोग करता है क्योंकि यह जीसी-आधारित लगभग एक 18-व्हीलर गैस का उपयोग करता है क्योंकि यह 18 पहियों है। मुझे जावा के बारे में कुछ भी नहीं पता है, लेकिन मुझे संदेह है कि समस्या रनटाइम ब्लोट है और बहुत सी चीजें कैश की जा रही हैं, कम से कम अर्थिक कचरा , और कचरा संग्रह के दृष्टिकोण में सभी दोषों पर नहीं।
जॉय एडम्स

3
सबसे स्पष्ट स्तर पर, कचरा संग्रह का मतलब है कि किसी वस्तु के उपयोग में देरी हो रही है और कचरा संग्रहकर्ता वास्तव में अपने स्थान को पुनः प्राप्त कर रहा है। मैन्युअल रूप से प्रबंधित वातावरण में ऑब्जेक्ट के उपयोग से बाहर जाने पर अंतरिक्ष तुरंत जारी किया जा सकता है। देरी का मतलब है कचरा एकत्र किया गया वातावरण अधिक मेमोरी का उपयोग करता है। और आम तौर पर यह बेहतर मेमोरी का उपयोग करता है क्योंकि यह जीसी ओवरहेड को कम करता है।
माइकल बोर्गवर्ड 20

1
@MichaelBorgwardt आप यह उल्लेख करना चाहते हैं कि गति को समय की आवश्यकता है क्योंकि अधिकांश जेवीएम को हर बार खरोंच से शुरू करने की आवश्यकता होती है। पिछले रनों की प्रोफाइलिंग जानकारी का पुन: उपयोग नहीं किया जाता है।

11

सबसे पहले कुछ संदर्भ, मेरा सी ++ बहुत ही कठोर है, इसलिए जावा के साथ मेरे अधिकांश अनुभव सी # के साथ मेरे हाल के अनुभव से संबंधित हैं, जो कि वैसे भी सेब की तुलना में बहुत अधिक सेब है।

1. गति

ए। आज जावा की गति C ++ की तुलना कैसे करती है?

मुझे लगता है कि यह सबसे अच्छा सवाल है कि जावा को धीमा होने की प्रतिष्ठा क्यों मिली? लेकिन मुझे यह भी लगता है कि यह पूरा सवाल जेफ एटवुड की ब्लॉग पोस्ट, गोरिल्ला बनाम शार्क द्वारा रंगीन है । Péter और क्रिस्टोफर के लिए धन्यवाद।

ख। क्या जावा का उपयोग करके आधुनिक AAA शीर्षक बनाना संभव होगा?

यह डेवलपर्स की प्राथमिकताओं और डेवलपर्स के कौशल पर निर्भर करता है। इसके अलावा, यह या तो / या स्थिति नहीं है, शीर्षक के विभिन्न हिस्सों को उस भाषा की अलग-अलग चीजों की आवश्यकता हो सकती है जिसे वे लागू कर रहे हैं, जिससे एक विषम भाषा वातावरण हो सकता है।

मैंने हाल ही में कई गेमों का उल्लेख किया है कि जब वे लोड कर रहे हैं तो वे पायथन वातावरण को लोड कर रहे हैं और मुझे संदेह है कि पाठ्यक्रमों के लिए घोड़े एक मजबूत प्रेरणा हैं यदि आप छुट्टी के मौसम के लिए समय में अपना शीर्षक प्राप्त करना चाहते हैं (उदाहरण के लिए) ।

सी। किन क्षेत्रों में विशेष रूप से जावा ++ की तुलना में धीमा है, यदि सभी पर? (यानी नंबर-क्रंचिंग, ग्राफिक्स या चारों ओर)

आप किसी भी भाषा में खराब प्रदर्शन करने वाले कोड लिख सकते हैं, लेकिन कुछ भाषाएं अच्छे विकल्प बनाने में आसान बनाती हैं, जबकि अन्य में आपके खुद के पेटार्ड द्वारा खुद को फहराने देने की अधिक संभावना होती है । जावा पूर्व श्रेणी में आता है, सी ++ निश्चित रूप से बाद में गिरता है।

महान शक्ति के साथ बड़ी जिम्मेदारी आती है क्योंकि वे कहते हैं (अपने ढेर * 8 'को पूरी तरह से पेंच करने की क्षमता का उल्लेख नहीं करना)।

2. क्या जावा को अब संकलित भाषा या व्याख्या की गई भाषा माना जाता है?

मैं यह नहीं कह सकता कि अधिकांश लोग इसे क्या मानते हैं, लेकिन बहुत से लोग संकलित और व्याख्या की गई भाषाओं के बीच के अंतर को जानते हैं, और पिछले 20 वर्षों से एक गुफा में नहीं रह रहे थे, उन्हें यह भी पता होगा कि JIT ( जस्ट-इन) -टाइम (संकलक) जावा इकोसिस्टम का एक महत्वपूर्ण हिस्सा है, इसलिए संभवतः इन दिनों संकलित किए जाने की अधिक संभावना है।

3. जावा के कुछ प्रमुख कमियाँ क्या हैं जो शुरुआती दिनों से संबोधित की गई हैं?

मैं जावा में हाल ही में परिवर्तित हुआ हूं, इसलिए मेरे पास बहुत कम संदर्भ हैं कि यह कैसे विकसित हुआ है। लेकिन यह ध्यान रखना दिलचस्प है कि जावा जैसी किताबें हैं : द गुड पार्ट्स जो भाषा के उन हिस्सों की दिशा में लोगों को जोड़ना चाहते हैं जिन्हें इन दिनों पसंद किया जाना चाहिए और उन क्षेत्रों से दूर लोगों को दूर करना चाहिए जो हैं, या होना चाहिए पदावनत।

4. जावा की कुछ प्रमुख कमियाँ क्या हैं जिनका समाधान किया जाना अभी बाकी है?

मेरे दिमाग में, जावा के साथ एक समस्या नई विशेषताओं को अपनाने की धीमी गति की है।

जावा से C # पर आना, और विकिपीडिया तुलना पृष्ठ के माध्यम से देखना , ये वो चीजें हैं जो मेरे लिए हैं:

सी # की तुलना में मुझे जावा में चीजें याद आती हैं

  • गुण , विशेष रूप से स्वचालित गुण। वे बहुत आसान इंटरफेस का निर्माण और रखरखाव करते हैं ।
  • क्लोजर / लैम्ब्डा । मैं वास्तव में निराश था जब मैंने सुना कि जावा समर्थन को फिर से वापस धकेला जा रहा है । अंत में हमारे पास जावा 8 में क्लोजर / लैम्ब्डा है, लेकिन जिस समय यह धीमी गति से गोद लेने के बारे में मेरे बयान को आकर्षित करता है।
  • टाइप इंफ़ेक्शन ( var) सिंटैक्टिक शुगर की तरह लग सकता है, लेकिन जब आपके पास जटिल सामान्य प्रकार होते हैं, तो यह बहुत सारे बेकार दोहराव को हटाकर कोड को अधिक स्पष्ट कर सकता है ।
  • आंशिक कक्षाएं प्रोग्रामर लिखित कोड से स्वचालित रूप से उत्पन्न कोड (जीयूआई बिल्डर से कहते हैं) को अलग रखने में मदद करती हैं।
  • मूल्य प्रकार , कभी-कभी structपूर्ण वर्ग पर हल्के का उपयोग करने के लिए एक तर्क होता है ।
  • यदि विस्तार किया जाता है, तो विस्तार विधियाँ सिस्टम को जटिल बना सकती हैं, लेकिन यदि आवश्यक हो तो किसी वर्ग के लिए कुछ लागू करने के विहित तरीके को इंगित करने के लिए महान हैं ।
  • बिना लिखे हुए प्रकार , कभी-कभी अतिरिक्त बिट सभी अंतर बना सकते हैं। * 8 ')

C # की तुलना में जावा में चीजें जो मुझे याद नहीं हैं

  • जब इसे सही तरीके से उपयोग किया जाता है तो ऑपरेटर ओवरलोडिंग बहुत अच्छा होता है, लेकिन जब बुरी तरह से इस्तेमाल किया जाता है, तो बग को खोजने में मुश्किल हो सकती है और एक ऑपरेटर को स्पष्ट रूप से क्या करना चाहिए और यह वास्तव में क्या करता है, के बीच एक डिस्कनेक्ट होता है।
  • अशक्त मूल्य प्रकार हमेशा से अधिक परेशानी का कारण बनते थे जो उनके लायक थे।
  • unsafeकोड तक पहुंच । आपको इसके साथ इतना सावधान रहना होगा कि मैंने इसे शायद ही कभी अतिरिक्त प्रयास के लायक पाया है।

जैसे, सेब से सेब की तुलना करते समय भी, जावा को पीछे माना जाता है।

अन्य दो बड़ी समस्याएं जो मैं जावा के साथ देख रहा हूं, वे हैं- एग्रेसिव स्टार्ट-अप देरी और यह तथ्य कि (कुछ जेवीएम के लिए) आपको अपने ढेर और यहां तक ​​कि स्थायी पीढ़ी के ढेर को माइक्रोक्रैनेज करना होगा । सी # एप्लिकेशन के साथ हमेशा तुरंत शुरू हो गया और मुझे कभी भी एक बार भी ढेर के बारे में नहीं सोचना पड़ा, क्योंकि यह सिस्टम मेमोरी पूल से बाहर आवंटित किया गया था, वर्चुअल मशीन को सौंपे गए पूर्व-आवंटित पूल से नहीं।


1
एसओ का यह सवाल कि आपने लिंक किया है, स्वीकृत उत्तर अविश्वसनीय रूप से गलत है।
डेडएमजी

नहीं, मैं मतलब stackoverflow.com/questions/2163411/...
DeadMG

@ मर्क: शायद। फिर, यह शायद पूरी तरह से इसे छोड़ने के लिए है। मैंने पहले ही अपने ही प्रश्न के उत्तर में अपनी बात कह दी है, इसलिए टिप्पणियों में अधिक जोड़ना वास्तव में बहुत सारे नए ज्ञान को जोड़ने की संभावना नहीं है।
जेरी कॉफिन

8

मैं आपको एक स्रोत बता सकता हूं जो आपके लिए आपके प्रश्न के पहले भाग का उत्तर देने में मदद कर सकता है। प्रोग्रामिंग भाषाओं शूट आउट http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php कितनी तेजी भाषाओं दूसरे से तुलना को देखने के लिए एक बहुत अच्छा स्रोत है। यहां तक ​​कि उन्हें विभिन्न श्रेणियों में फ़िल्टर किया जा सकता है, यह देखने के लिए कि किन क्षेत्रों में भाषाएं दूसरों की तुलना में बेहतर हैं। जावा कई साल पहले की तुलना में बहुत तेज है।



हाँ, मुझे शायद उस पृष्ठ पर सीधे लिंक करना चाहिए क्षमा करें।
bschaffer13

4

1) कड़ाई से यूएक्स I के साथ जावा के बारे में बात करते हुए, यह धीमा लगता है। मैं आपको बता नहीं सकता कि वास्तव में क्यों। मुझे अभी तक एक जावा आधारित डेस्कटॉप एप्लिकेशन भर में आना है, जो धीमी गति से महसूस नहीं करता है और इसमें एक गैर-जावा विकल्प है। यह कहा जा रहा है, जावा शुद्ध कम्प्यूटेशनल गति में बहुत तेज हो सकता है और यह साबित करने के लिए इंटरनेट बेंचमार्क से भरा है। हालाँकि जावा ऐप्स का बूट समय और उनके GUI की जवाबदेही अभी तक IMHO को बेहतर बनाने के लिए है। हो सकता है कि आप इसे कर सकते हैं;)
अंत में, गति एक मुद्दे की इतनी अधिक नहीं है। न केवल हार्डवेयर तेजी से और तेजी से हो रहा है, यह भी है कि ज्यादातर लोग अभी भी आश्चर्यजनक रूप से इसके लिए बहुत कम देखभाल करते हैं जब तक कि सॉफ्टवेयर करता है, उसे क्या करना चाहिए और बातचीत के समय बनाम खर्च किए गए समय का अनुपात उचित है।

2) यह अंतर हाल ही में इतना धुंधला हो गया है, कि वास्तव में इसका बहुत कम मूल्य है।

3 + 4) वास्तव में जावा में कुछ बदलाव हुए हैं। कुछ लोग पहले से ही तर्क देते हैं, कि इन परिवर्तनों ने जावा की विशुद्ध रूप से सरल दर्शन को विदेशी विशेषताओं पर खींचा है। यह वास्तव में कहना मुश्किल है कि क्या कमी है, और एक ताकत क्या है। मेरे लिए, जावा अनावश्यक रूप से क्रियात्मक, प्रतिबंधात्मक और सुविधाओं में खराब है, जबकि अन्य लोग इन बहुत गुणों को एक सुखद असंदिग्धता, सुरक्षा और स्पष्टता के रूप में मानते हैं।
इसलिए जब यह ये चीजें हैं, तो व्यक्तिगत रूप से मुझे जावा का उपयोग नहीं करना है, मुझे नहीं लगता कि जावा में मेरे द्वारा याद की जाने वाली चीजों को जोड़ना एक अच्छा विचार है। वहाँ बहुत सारी भाषाएँ हैं जो मुझे JVM पर चलने और जावा को उनके करीब होने के लिए झुकना पसंद है, बस जावा के उद्देश्य को पराजित करना होगा।

यह वरीयता की बात है

जावा के साथ बात यह है, कि यह आपको अपने आप को पैर में गोली मारने से रोकने के लिए बनाया गया है। एक महान कारण, लेकिन यह सभी प्रतिबंधों के साथ आप पर आघात करता है, यह संभावना नहीं है, कि आप अपने सुरक्षित पैरों में से एक पर यात्रा करते हैं, अपने हाथों को अपनी सुरक्षा के लिए अपनी पीठ के पीछे बंधे होने और अंत में मरने के साथ अपने आप को नहीं काट सकते, क्योंकि तुम अपनी खोपड़ी तोड़ते हो। : D
एक तरह से, जावा C ++ की प्रतिक्रिया थी, जो आपको न केवल अपने आप को बल्कि दुनिया के बाकी हिस्सों को भी लटकाने के लिए पर्याप्त रस्सी देता है। यह सब रस्सी है, जो इसे काउबॉय के लिए बहुत आकर्षक बनाता है। वह सारी आजादी और वह सारी शक्ति।

तो सीधे शब्दों में कहें, यह वास्तव में सिर्फ वरीयता का मामला है।

लेकिन, एक बिंदु है, जावा के विकल्प के रूप में सी ++ के साथ, आप अपने स्वयं के प्रतिबंधों का चयन करने के लिए स्वतंत्र हैं। या वास्तव में आपके पास सभी नियंत्रणों के साथ पागल हो जाएं, अपने साथियों को पूरी तरह से भ्रमित करने के लिए जोखिम में डालना:

मैंने देखा कि `कॉट 'को" हैलो वर्ल्ड "बार बाईं ओर स्थानांतरित कर दिया गया और वहीं रुक गया।
- स्टीव गोंडेस

जावा ने बहुत अधिक कारणों से ऑपरेटर ओवरलोडिंग की पेशकश नहीं की। बेशक यह लोगों को सूची के साथ फ़ंक्शन पॉइंटर्स को गुणा करके अपने कोड को बाधित करने से रोकता है। लेकिन साथ ही यह अन्य लोगों को सामान्य ऑपरेटरों के साथ ज्यामितीय / बीजगणितीय गणना करने से रोकता है। (v1 * v2 / scale) + (v3 * m)वास्तव में बहुत स्पष्ट है v1.multiply(v2).divide(scale).add(v3.multiply(m))। मैं देखता हूं कि यह उन लोगों को क्यों रोक सकता है जो 3 डी ग्राफिक्स और गणना से निपटते हैं।

जावा ने कचरा संग्रहण को चुना, जबकि C ++ में आप चुन सकते हैं। आप वास्तव में नीचे सभी तरह से खुदाई कर सकते हैं और हार्डवेयर के करीब पहुंच सकते हैं। आप डेटा को संरचित रूप से पैक कर सकते हैं। आप काले जादू का प्रदर्शन कर सकते हैं, जैसे कि तेजी से उलटा वर्गमूल । आप टेम्प्लेट का उपयोग करके पृथ्वी पर कुछ सबसे जटिल और क्रिप्टिक मेट्रोपोग्रामिंग प्रदर्शन कर सकते हैं। लेकिन इसका मतलब यह भी है, आप खो सकते हैं और आपके द्वारा बनाई गई सभी गड़बड़ी या पूरी तरह से अनजाने संकलक त्रुटियों की तलाश में डिबगिंग के घंटे बिता सकते हैं।
लेकिन अगर आपके पास केवल उस भाषा के हिस्सों का उपयोग करने का अनुशासन है जिसे आप वास्तव में मास्टर करते हैं, तो आप सी ++ कोड को जावा कोड के रूप में सुरक्षित रूप से लिख सकते हैं, लेकिन आपके पास धीरे-धीरे आगे बढ़ने का विकल्प है।

तो जबकि तकनीकी रूप से कुछ भी आपको जावा के साथ अत्याधुनिक सॉफ्टवेयर लिखने से नहीं रोकता है, आप पाएंगे कि कई डेवलपर्स वास्तव में महान सॉफ्टवेयर लिखने के बारे में भावुक होते हैं और जावा के भाषा के रूप में पेश करने के लिए आगे बढ़ते हुए मज़ेदार और विकसित होते हैं।

लेकिन दुनिया में केवल उन लोगों को शामिल नहीं किया गया है जो अगली बड़ी चीज बनाते हैं या केवल ऐसे लोगों को बनाते हैं जो केवल उन्हें दी गई शक्ति के उपयोग को प्रतिबंधित करेंगे जहां तक ​​वे इसे नियंत्रित करते हैं। IMHO जावा उन लोगों के लिए एकदम सही मेल है जो एक आरामदायक तरीके से स्थिर परिणाम उत्पन्न करना चाहते हैं।


+1 इस तथ्य के लिए कि C ++ में कुछ भी आपको जावा-जैसे कोड लिखने से रोकता है, और इसी तरह कुछ भी आपको इससे अधिक करने से नहीं रोकता है। यह प्रोग्रामर है जो किसी भाषा को असुरक्षित या कठोर बनाता है।
क्रिस ने

0

कचरा संग्रह बड़ी चीज है। हर बार, जीसी कई सौ मिलीसेकंड (ढेर के आकार के आधार पर) के लिए बाकी सब कुछ बंद कर देगा, और एक बड़ा संग्रह करेगा। यह ठीक है अगर आपके पास कोई समय की कमी नहीं है, लेकिन अगर देर होने का मतलब विफलता है, तो यह शो स्टॉपर है। आप वास्तविक समय जावा, और एक वास्तविक समय ओएस के लिए पैसा खर्च कर सकते हैं, लेकिन आप बस जीसीसी और मानक लिनक्स का उपयोग कर सकते हैं और आपको कोई समस्या नहीं होगी।

अप्रत्याशित यादृच्छिक ठहराव के बिना, जावा शायद इन दिनों ज्यादातर चीजों के लिए काफी तेज है। और अगर आप अपनी जीसी सेटिंग्स को बढ़ाने में महीनों का समय बिताते हैं और इस तरह, हो सकता है, हो सकता है, तो हो सकता है कि आपको यह बहुत समय से मिल जाए कि आप ग्राहक को एक चेक काट सकें।


अधिकांश आधुनिक कचरा संग्राहक दुनिया को रोकते नहीं हैं।

-1

3) कमियों को ठीक किया गया।

कुछ साल पहले जावा पर बहुत गुस्सा था। अधिकांश जावा प्रोग्रामर वेब / सर्वर प्रोग्रामर हैं और वे जावा की क्रियाशीलता के साथ पागल हो रहे थे। इसलिए रूबी जैसी कुछ भाषाएं लोकप्रिय हो गईं और जावा भी खराब होने लगा। हालांकि, हाइबरनेट और स्प्रिंग जैसे नए एनोटेशन और फ्रेमवर्क के साथ, लोगों ने शिकायत करना बंद कर दिया है और जावा में वापस चले गए हैं।

4) वर्तमान कमियों

हार्डवेयर सब बहुरंगी है। हालांकि जावा मल्टीथ्रेड कर सकता है, यह सी पर आधारित है जो एक अनुक्रमिक भाषा है और इसे मल्टीथ्रेड बनाने के लिए कार्यक्षमता कम से कम कहने के लिए सुरुचिपूर्ण नहीं है। वैसे, यह सिर्फ जावा की आलोचना नहीं है, बल्कि सभी भाषाओं का बहुत अधिक हिस्सा है। कोड के बारे में सोचने के कुछ अलग तरीके की जरूरत है। शायद कार्यात्मक प्रोग्रामिंग भविष्य का तरीका है।


1
पागल हो रहा हु? शायद ही ऐसा सोचें। और जाहिरा तौर पर आप जावा 6. में समवर्ती सामान पर एक नज़र नहीं पड़ा है

-1

मैंने इस सवाल पर प्रतिक्रिया व्यक्त की क्योंकि यह भ्रामक और बड़े पैमाने पर अप्रासंगिक जवाब देगा:

ख। क्या जावा का उपयोग करके आधुनिक AAA शीर्षक बनाना संभव होगा?

हर कोई इस बात से सहमत हो सकता है कि एएए शीर्षक जावा का उपयोग करके उत्पादन करना मुश्किल होगा और कोई वास्तविक उदाहरण नहीं है जिससे मैं परिचित हूं। हालांकि एएए की प्रकृति को देखते हुए बहुत सी चीजों को स्वीकार किया जाएगा (क्योंकि यह वास्तव में विपणन से आने वाला एक भ्रमित करने वाला शब्द है ) इसलिए इसके बजाय निम्नलिखित पूछना बेहतर है:

क्या जावा का उपयोग करके उचित सफलता के साथ एक आधुनिक शीर्षक बनाना संभव है?

जवाब है " हाँ, आप कर सकते हैं। " हालाँकि समीकरण की वास्तविक सफलता का हिस्सा आपकी दृढ़ता और भाग्य (या zeitgeist के पालन) के आधार पर अधिक है, लेकिन यह इस साइट के दायरे से बाहर है।


-6

गति का एक प्रमाणित क्षेत्र संकलक बनाम संकलक के लिए नीचे आता है। भाषा बनाम भाषा नहीं। जेआईटी संकलन के लिए फायदे हो सकते हैं क्योंकि यह उस मशीन के चश्मे के लिए अनुकूलित कर सकता है जिस पर यह चल रहा है। तुलना करने के लिए JIT संकलित C ++ बनाम जावा अधिक "सेब के लिए सेब" संकलक तुलना।

लेकिन कुछ चीजें हैं जहां जावा भाषा अपने स्वयं के प्रदर्शन को सीमित करती है।

  1. स्टैक पर आवंटन। जावा ऐसा नहीं कर सकता। गैर-पुनरावर्ती समाधान में छोटे निश्चित आकार की कक्षाओं के लिए यह अक्सर आदर्श होता है। आप ढेर विखंडन से भी बच सकते हैं।

  2. गैर आभासी कार्य। जावा ऐसा नहीं कर सकता। ओवरराइड होने की योजना नहीं होने पर भी सभी विधि कॉल स्थायी हिट प्राप्त करती हैं।

शायद कुछ अन्य सामान लेकिन यह सब मैं अपने सिर के ऊपर से सोच सकता हूं।


2
आधुनिक JIT कंपाइलर इन दोनों मामलों को अनुकूलित कर सकते हैं। जावा (6 के रूप में) में स्टैक आवंटन है: en.wikipedia.org/wiki/Escape_analysis । गैर-वर्चुअल फ़ंक्शंस के लिए, JIT कंपाइलर वर्चुअल मेथड कॉल्स को हल करेगा जो केवल एक ही मंज़िल पर जाते हैं (और कभी-कभी इसे इनलाइन भी कर सकते हैं) नॉन-वर्चुअल कॉल्स में।
स्टीवन श्लांसकर

1
# 2 फर्जी है: किसी भी सभ्य जेआईटी अंक आभासी या गैर-आभासी के रूप में कार्य करते हैं, इस आधार पर कि वे वर्तमान में ओवरराइड हो रहे हैं या नहीं ।
अमरा

-16

1) अप्रासंगिक, और बूट करने के लिए तर्कपूर्ण।
न केवल जावा में सॉफ्टवेयर के प्रमुख टुकड़े बनाए जा सकते हैं, इस तरह के सिस्टम हर दिन वितरित किए जाते हैं और अब तक दुनिया की सबसे बड़ी कंपनियों को चलाते हैं।
2) डिट्टो।
जेवीएम कल्पना पढ़ें और आप जानते हैं। जावा कभी भी एक व्याख्या की गई भाषा नहीं थी।
3) डिट्टो।
जारी नोट के 15 साल पढ़ें। हमारे लिए यह पता लगाना असंभव है कि आप "बड़ी खामियों" को क्या मानते हैं।
4) डिट्टो।
मुख्य दोष जिसे संबोधित किया जाना है, वह जेसीपी है जो जेएसआर पर सोमोने का नाम प्राप्त करने के अलावा किसी अन्य स्पष्ट कारण के लिए मुख्य भाषा और पुस्तकालयों के साथ मध्यस्थता करने के लिए प्रवण है, इसलिए वे एक पुस्तक लिख सकते हैं जिसमें एक आधिकारिक धुंधला के साथ "" वे थे JSR-666 के नेता "। उम्मीद है कि जेपीसी के ओरेकल के पुनर्गठन का ध्यान रखा जाएगा।
आप यहाँ केवल एक भाषा युद्ध छेड़ना चाहते हैं, और दूसरों के द्वारा पुष्टि किए गए जावा के खिलाफ अपना पूर्वाग्रह प्राप्त करें क्योंकि आप इसके लिए कोई वास्तविक औचित्य नहीं पा सकते हैं।


आह, मैं देख रहा हूँ कि लोग पहले से ही जावा को नहीं छोड़ते हुए किसी को भी अपमानित करके युद्ध शुरू कर रहे हैं। अच्छा हुआ, लोग!
विगत

10
मुझे लगता है कि डाउनवोट्स का कारण यह तथ्य है कि आपका जवाब वास्तव में एक नहीं है।
ब्लूब

6
यह जवाब सिर्फ ट्रोलिंग है। ओपी के पास एक अच्छा, अच्छा विचार था, गैर-रैंटी प्रश्न था। फिर आप "दूसरों के द्वारा पुष्टि किए गए जावा के खिलाफ अपने पूर्वाग्रह को प्राप्त करें क्योंकि आप इसके लिए कोई वास्तविक औचित्य नहीं पा सकते हैं"। हाँ, -1। ओह और नहीं, मुझे बहुत सारी चीजों के लिए जावा, इसकी वर्तमान पसंदीदा भाषा से नफरत नहीं है
TheLQ

4
ओपी ने एक बहुत अच्छी तरह से एक साथ प्रश्न लिखा और अच्छी तरह से प्रकाशित जवाब प्राप्त किया। कुछ भी हलचल करने का आरोप लगाने की वास्तव में आवश्यकता नहीं है।
एडम लेअर

आह, मैं देख रहा हूं कि लोग पहले से ही रेंट के लिए गंभीर सवाल (और जवाब) लेकर युद्ध शुरू कर रहे हैं और खुद को व्यक्तिगत रूप से हमला महसूस कर रहे हैं। बहुत बुरा मैं अभी तक नीचे नहीं जा सकता।
क्रिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.