2010-11-12 15 views
13

सवाल पहली बार मूर्खतापूर्ण लगता है, लेकिन शायद यह बिल्कुल नहीं है।जावा वास्तव में क्या है?

  • जावा जावा भाषा नहीं है, ज्यादातर लोगों को पता है, कि, जब से तुम lots of other langauges स्काला या ग्रूवी

  • की तरह साथ जावा प्रोग्राम कर सकते हैं जावा एक ठोस वी एम कार्यान्वयन के बाद से वहाँ अन्य कार्यान्वयन सारे हैं नहीं है न केवल सन, माइक्रोसॉफ्ट या आईबीएम।

  • जावा क्लास फ्रेमवर्क नहीं है क्योंकि कई कार्यान्वयन इच्छाओं पर कक्षाओं को जोड़ या छोड़ देते हैं।

  • यह भी है कि एक आम वीएम विनिर्देश या यहाँ तक कि जावा बाईटकोड प्रयोग किया जाता है नहीं किया जाना चाहिए, को देखने के Dalvik VM

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

तो सवाल यह है कि जावा वास्तव में क्या है? क्या एक सटीक परिभाषा भी है?

संपादित करें बहुत से लोगों की राय है कि जावा केवल प्रोग्रामिंग भाषा का मतलब है। तो एक जावा-सक्षम मोबाइल फोन एक फोन होना चाहिए जो उपयोगकर्ता को जावा भाषा के साथ बनाए गए वर्ग फ़ाइलों से युक्त कार्यक्रमों का उपयोग करने में सक्षम बनाता है। यदि यह सच होगा, जावा वर्चुअल मशीन/जावा रनटाइम पर्यावरण/जावा विकास किट केवल जावा के लिए बनाई जाएगी और अन्य जेवीएम भाषाओं में उनके स्वयं के संबंधित xvm/xre/xdk होगा।

+6

+1 निश्चित रूप से कोई मूर्ख सवाल नहीं है। – helpermethod

+2

जहां तक ​​कोई सामान्य वीएम स्पेक नहीं है, यह असत्य है क्योंकि मैंने एंड्रज के जवाब पर अपनी टिप्पणी में इसे लिंक किया है। दल्विक वीएम एक जेवीएम होने का दावा नहीं कर रहा है। (अनुमोदित ओरेकल वर्तमान में इस बिंदु पर Google पर मुकदमा कर रहा है।) – Poindexter

+0

http://www.jwz.org/doc/java.html: तथ्य यह है कि चार 'पूरी तरह से अलग-अलग चीजें हैं जो' जावा 'नाम से जाती हैं। ': एक भाषा; एक विशाल वर्ग पुस्तकालय; एक वर्चुअल मशीन; एक सुरक्षा मॉडल। –

उत्तर

39

जावा जावा भाषा वास्तव में है। ग्रोवी, स्कैला एट अल जेवीएम पर चलने वाले बराबर बाइटकोड तक संकलित हो सकता है, लेकिन जावा नहीं हैं।

औपचारिक रूप से, मैं कहूंगा कि जावा JLS है।

+7

+1 यह बिल्कुल सही जवाब है। विशिष्टता एक भाषा के लिए सब कुछ है। बाकी सब कुछ सिर्फ कार्यान्वयन विवरण है। – Poindexter

+0

@Poindexter: जावा एक भाषा है, तो आपका कथन केवल सत्य है। :) – MicSim

+3

@McSim: मैं तर्क दूंगा कि "जावा" शब्द भाषा को संदर्भित करता है। "जावा वर्चुअल मशीन (जेवीएम)" एक संबंधित लेकिन पूरी तरह से पृथक इकाई है। जेवीएम में एक अलग भाषा (बाइटकोड) है और इसमें एक अलग विनिर्देश है: http://java.sun.com/docs/books/jvms/ – Poindexter

6

जावा एक प्रोग्रामिंग भाषा है। वाक्यविन्यास भाग।

+5

अर्थपूर्ण हिस्सा नहीं है? – Ishtar

5

मेरी राय में यह भाषा है। मुझे नहीं लगता कि लोग कहते हैं कि वे जावा को ग्रोवी के साथ प्रोग्रामिंग कर रहे हैं, या यदि वे करते हैं, तो वे गलत हैं।

1

अधिकांश लोग जावा को प्रोग्रामिंग भाषा के रूप में देखते हैं (जैसा कि जावा भाषा विशिष्टता द्वारा परिभाषित किया गया है)। लेकिन ऐसे कई लोग हैं जो इसे प्रोग्रामिंग भाषा, विभिन्न वीएम और बड़े पारिस्थितिक तंत्र में विभाजित करते हैं।

भी क्या जावा (जैसे ट्रेडमार्क) कहा जा सकता है की कानूनी परिभाषा नहीं है, लेकिन मुझे लगता है कि मैं इस समय अकेला छोड़ने के लिए है कि एक :-)

3

वास्तव में जा रहा हूँ, यह संदर्भ पर निर्भर करता जहां शब्द का प्रयोग किया जाता है। यह सब है: वाक्यविन्यास, प्रौद्योगिकी, ढांचे, प्रोग्रामिंग भाषा। इस प्रकार

एक sidenote के रूप, ओरेकल इस सवाल का जवाब: What is Java?

+0

दिलचस्प। ओरेकल को लगता है कि यह भाषा और "मंच" (वीएम?) – justkt

5

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

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

जेवीएम अत्यधिक मानकीकृत है और कई कंपनियां अपने हार्डवेयर प्लेटफार्मों के लिए अपने स्वयं के कार्यान्वयन की पेशकश कर सकती हैं और कर सकती हैं। यह जावा नहीं है, ये जावा प्लेटफार्म के एक हिस्से के कार्यान्वयन हैं।

जावा वीएम विनिर्देश 100% मानकीकृत कुछ है जिसे ओरेकल द्वारा लागू किया जाता है क्योंकि वे जावा पर कॉपीराइट का दावा करते हैं। यही कारण है कि एंड्रॉइड (दलविक वीएम) वर्तमान में Google के खिलाफ ओरेकल के कोर्ट केस का विषय है।

2

आप यह नहीं कह सकते कि स्कैला जावा है और आप कह सकते हैं कि एक कांटा सिर्फ एक कंघी है क्योंकि आप इसके साथ अपने बालों को ब्रश करना चाहते हैं। या, यदि मैं क्लासिक सादृश्य ला सकता हूं, तो आपके रिंच के साथ नाखून चलाने से यह हथौड़ा नहीं बनता है।

आप एक कंपाइलर बना सकते हैं जो सीओबीओएल को सी ++ में संकलित करता है, लेकिन इसका मतलब यह नहीं है कि COBOL सी ++ है।

कई भाषाओं में x86 मशीन कोड उनके लक्ष्य संकलित भाषा के रूप में है, तो क्या इसका मतलब यह है कि वे सभी एक ही बात हैं?

इससे कोई फर्क नहीं पड़ता कि अन्य भाषाएं जेवीएम के बाइटकोड को संकलित कर सकती हैं, और न ही इससे कोई फर्क नहीं पड़ता कि आप जावा को एक विशिष्ट आर्किटेक्चर के मशीन कोड में संकलित कर सकते हैं। जेवीएम अभी भी जावा का मंच है; अन्य भाषाएं इसे साझा करने के लिए होती हैं, और जावा बस जेवीएम बाइटकोड के अलावा अन्य लक्ष्यों को संकलित करने में सक्षम होता है। एक कांटा के रूप में वैसे ही यह आपके बालों को कंघी करने में सक्षम होता है कि आप इसे कैसे संभालेंगे।

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

(संपादित करें) बह! मुझे बस एहसास हुआ कि मैं अर्थशास्त्र के बारे में बहस कर रहा हूं!

+0

ओह नहीं है, अगर COBOL मूल कोड में बदल रहा है और सी ++ देशी कोड में बदल रहा है तो इसका मतलब है कि COBOL सी ++ है, तो हिपहॉप सी ++ को PHP में बदल गया !! – JAL

संबंधित मुद्दे