जावा एक सामान्य-उद्देश्य वाली कंप्यूटर-प्रोग्रामिंग भाषा है जो समवर्ती, वर्ग-आधारित, वस्तु-उन्मुख, है और विशेष रूप से संभव के रूप में कुछ कार्यान्वयन निर्भरताओं के लिए डिज़ाइन की गई है। इसका उद्देश्य एप्लिकेशन डेवलपर्स को "एक बार लिखना, कहीं भी दौड़ना" (WORA), का अर्थ है कि संकलित जावा कोड उन सभी प्लेटफार्मों पर चल सकता है जो जावा को पुनर्संयोजन की आवश्यकता के बिना समर्थन करते हैं। [१ application] जावा अनुप्रयोगों को आमतौर पर बाईटेकोड के लिए संकलित किया जाता है जो कंप्यूटर आर्किटेक्चर की परवाह किए बिना किसी भी जावा वर्चुअल मशीन (जेवीएम) पर चल सकता है। 2016 तक, जावा उपयोग की जाने वाली सबसे लोकप्रिय प्रोग्रामिंग भाषाओं में से एक है, विशेष रूप से क्लाइंट-सर्वर वेब अनुप्रयोगों के लिए, जिसकी रिपोर्ट ९ मिलियन डेवलपर्स के पास है। जावा मूल रूप से सन माइक्रोसिस्टम्स में जेम्स गोसलिंग द्वारा विकसित किया गया था (जो कि ओरेकल कॉर्पोरेशन द्वारा अधिगृहीत किया गया है) और 1995 में सन माइक्रोसिस्टम्स के जावा प्लेटफॉर्म के एक प्रमुख घटक के रूप में जारी किया गया था। यह भाषा सी और सी++ के समान सिंटैक्स के साथ, स्मॉलटॉक की अपनी मूल विशेषताओं से बहुत कुछ प्राप्त करती है, लेकिन इसमें दोनों की तुलना में कम स्तर की सुविधाएं हैं। [1]

जावा

जेम्स गोसलिंग, माइक शेरिडन और पैट्रिक नॉटन ने जून 1991 में जावा भाषा परियोजना शुरू की । जावा मूल रूप से इंटरैक्टिव टेलीविज़न के लिए डिज़ाइन किया गया था, लेकिन यह उस समय डिजिटल केबल टेलीविजन उद्योग के लिए बहुत उन्नत था। भाषा को शुरू में ओक कहा जाता था एक ओक के पेड़ के बाद जो गोसलिंग के कार्यालय के बाहर खड़ा था। बाद में परियोजना ग्रीन नाम से चली गई और अंततः जावा कॉफ़ी से जावा का नाम बदल दिया गया। गोसलिंग ने जावा को एक सी / सी++ शैली के सिंटैक्स के साथ डिज़ाइन किया था जो सिस्टम और एप्लिकेशन प्रोग्रामर परिचित होगा। [2] सन माइक्रोसिस्टम्स ने 1996 में जावा 1.0 के रूप में पहला सार्वजनिक कार्यान्वयन जारी किया। यह वादा किया था "एक बार लिखें, कहीं भी चलाएं" (श्रम), लोकप्रिय प्लेटफार्मों पर नो-कॉस्ट रन-टाइम प्रदान करता है। काफी सुरक्षित और विन्यास योग्य सुरक्षा की विशेषता, इसने नेटवर्क- और फ़ाइल-एक्सेस प्रतिबंधों की अनुमति दी। प्रमुख वेब ब्राउज़रों ने जल्द ही वेब पृष्ठों के भीतर जावा एप्लेट्स को चलाने की क्षमता को शामिल किया और जावा जल्दी लोकप्रिय हो गया। जावा 1.0 भाषा विनिर्देशन के साथ कड़ाई से अनुपालन करने के लिए आर्थर वैन हॉफ द्वारा जावा में कंपाइलर को फिर से लिखा गया था। जावा 2 के आगमन के साथ (दिसंबर 1998 - 1999 में शुरू में J2SE 1.2 के रूप में जारी), नए संस्करणों में विभिन्न प्रकार के प्लेटफार्मों के लिए कई कॉन्फ़िगरेशन बनाए गए थे। J2EE में आम तौर पर सर्वर वातावरण में चलने वाले एंटरप्राइज़ एप्लिकेशन के लिए प्रौद्योगिकियां और API शामिल थे, जबकि J2ME में API को मोबाइल एप्लिकेशन के लिए अनुकूलित किया गया था। डेस्कटॉप संस्करण का नाम बदलकर J2SE कर दिया गया। 2006 में, विपणन उद्देश्यों के लिए, सूर्य ने क्रमशः जावा ईई, जावा एमई और जावा एसई के रूप में नए जे 2 संस्करणों का नाम बदला। [3]

निष्पादन प्रणाली

संपादित करें

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

वाक्य - विन्यास

संपादित करें

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