Wednesday, October 20, 2021

जावा (प्रोग्रामिंग भाषा

 

जावा (प्रोग्रामिंग भाषा)

मुक्त ज्ञानकोश विकिपीडिया से
Jump to navigationJump to search

जावा कैसे सीखें ? इसके लिए ये लेख देखें !

जावा
चित्र:Java logo.svg
प्रकारObject-orientedstructuredimperative
पहला अवतरण१९९५
डिज़ाइनरSun Microsystems
स्थायी विमोचनJava Standard Edition 6 (1.6.0_15)
लिखने का तरिकाStatic, strong, safenominativemanifest
उपयोगNumerous
भाषिकाGeneric JavaPizza
प्रभावकर्ताObjective-C,[1] Ada 83Pascal,[2] C++C#,[3] Eiffel,[4] SmalltalkMesa,[5] Modula-3,[6] Generic Java
प्रभावितAda 2005C#ClojureDECMAScriptGroovyJ#PHPScalaJavaScriptPythonBeanShell
प्रचालन तन्त्रCross-platform (multi-platform)
अनुज्ञप्‍तिधारीGNU General Public License / Java Community Process
वेबसाइटhttp://java.sun.com

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

1995 से सन द्वारा मूल तथा सन्दर्भ कार्यान्वयन जावा संकलकों (कम्पाइलरों), वर्चुअल मशीनों और क्लास लाइब्रेरियों को विकसित किया गया। मई 2007 तक, जावा कम्युनिटी प्रोसेस के विशेष उल्लेखपूर्वक अनुमति में सन ने अपने अधिकांश जावा प्रोद्योगिकियों को GNU जनरल पब्लिक लाइसेन्स के अर्न्तगत मुफ्त सॉफ्टवेयर के रूप में उपलब्ध कराया. दूसरों ने भी सन की इन प्रोद्योगिकियों के वैकल्पिक कार्यान्वयनों को विकसित किया, जैसे कि GNU क्लासपाथ और जावा के लिए GNU कम्पाइलर.

इतिहास[संपादित करें]

ड्यूक, द जावा मास्कोट
इन्हें भी देखें: Java (Sun) history एवं Java version history

जून 1991 में जेम्स गोसलिंग ने अपने कई सेट-टॉप बॉक्स परियोजनाओं में से किसी एक परियोजना में उपयोग करने के लिए जावा भाषा परियोजना को प्रारम्भ किया।[7] इस भाषा का नाम पहले ओक (Oak) था जिसका नामकरण गोसलिंग के कार्यालय के बाहर स्थित एक ओक पेड़ के नाम पर हुआ था। इसके बाद इसका नाम ग्रीन (Green) भी पड़ा और अंत में इसका नाम जावा पड़ा. यह जावा नाम क्रमबद्ध शब्दों की एक सूची में से लिया गया।[8] गोसलिंग का लक्ष्य था कि वे एक वर्चुअल मशीन व एक भाषा की शुरुआत करें जो C/C++ शैली पद्वति से परिचित हो। [9]

1995 में सन ने जावा 1.0 के रूप में पहला सार्वजनिक कार्यान्वयन रिलीज़ किया। प्रचलित प्लेटफार्मों पर बिना-मूल्य रन-टाइम (चालू होने में लगने वाला समय) की सुविधा प्रदान करते हुए इसने "राइट वंस, रन एनीव्हेयर" (WORA) का वादा किया। पर्याप्त सुदृढ़ और समनुरूपयोग्य (कॉन्फिगरेबल) सुरक्षा प्रकट करते हुए इसने नेटवर्क और फाइल एक्सेस के प्रतिबंधों को अनुमति दे दी। मुख्य वेब ब्राउज़रों ने जल्द ही वेबपेजों के भीतर जावा एप्लेटों को चलाने की योग्यता को सम्मिलित कर लिया और जल्द ही जावा विख्यात हो गया। जावा 2 (जिसे दिसम्बर 1998 में शुरू-शुरू में J2SE 1.2 के रूप में रिलीज़ किया गया) के आगमन के साथ नये भाषांतरों (वर्सन) में बहु आकृति (कॉन्फिगरेशन) थी जो विभिन्न प्रकार के प्लेटफार्मों के लिए निर्मित थी। उदाहरणस्वरुप, एंटरप्राइज़ अप्लिकेशन के लिए लक्षित J2EE और मोबाइल अप्लिकेशन के लिए अत्यंत नवीन वर्सन J2ME . J2SE ने मानक (स्टैण्डर्ड) संस्करण (एडिशन) को लक्षित किया। 2006 में, व्यापर के उद्देश्य से सन ने J2 के नये वर्सनों का नाम बदलकर क्रमश: जावा EEजावा ME और जावा SE कर दिया।

1997 में, सन माइक्रोसिस्टमस ने जावा को अमली जामा पहनाने के लिए ISO/IEC JTC1 मानक समिति को और बाद में ऐक्मा अंतराष्ट्रीय को प्रस्ताव भेजा, पर जल्द ही यह इस प्रक्रिया से हट गई।[10] जावा समुदाय प्रक्रिया द्वारा नियंत्रित जावा वास्तव में एक डी फैक्टो मानक बना हुआ है।[11] अपने सॉफ्टवेयर मालिक होने के दर्जे के बावजूद, एक बार सन ने बिना शुल्क के जावा कार्यान्वयन का अधिकांश हिस्सा उपलब्ध कराया. सन ने जावा से विशेष उत्पाद जैसे जावा इंटरप्राइज सिस्टम को लाइसेंस बेचकर मुनाफा कमाया. सन ने अपने सॉफ्टवेयर डेवेलपमेंट किट (SDK) और रनटाइम एनवायरनमेंट (JRE) (SDK का एक उपसमुच्चय (सबसेट)) में भेद किया; प्राथमिक भेद में JRE का कम्पाइलर की कमी, उपयोगिता प्रोग्राम और हेडर फाइल्स शामिल हैं।

13 नवम्बर 2006 को, सन ने GNU जनरल पब्लिक लाइसेन्स (GPL) के शर्तों के अधीन अधिकांश जावा को स्वतंत्र और मुक्त स्रोत सॉफ्टवेयर के रूप में रिलीज़ किया। 8 मई 2007 को सन ने प्रक्रिया का समापन किया, कोड के एक छोटे से हिस्से जिस पर सन का प्रकाशनाधिकार (कॉपीराईट) नहीं है, उसे छोड़कर बाकि जावा के सभी कोर कोड को मुफ्त सॉफ्टवेयर/मुक्त-स्त्रोत वितरण शर्त के तहत उपलब्ध कराया.[12]

सिद्धांत[संपादित करें]

जावा भाषा को निर्मित करने के पांच मुख्य उद्देश्य थे:[13]

  1. यह "सरल, ऑब्जेक्ट उन्मुख (ओरिएंटेड) और परिचित" होनी चाहिए।
  2. यह "रोबस्ट और सुरक्षित" होनी चाहिए।
  3. यह "आर्किटेक्चर तटस्थ (न्यूट्रल) और वहनीय" होनी चाहिए।
  4. यह "उच्च प्रदर्शन" के साथ लागु होनी चाहिए।
  5. यह "भाषांतरित, थ्रेडेड (सूत्रित) और गतिक" होनी चाहिए।

इंजीलवाद[संपादित करें]

हालांकि जावा का अधिकांश प्रत्यक्ष मुनाफा लाइसेंसिंग और JCP सदस्यता राशि से आता है, कुछ मानते हैं कि जावा प्रमुखतः हार्डवेयर सर्वर को बढ़ावा देने का एक वाहन और/या आंतरिक रूप से सन के लिए सोलारिस OS की बिक्री हैं और सन के उपाध्यक्ष रिच ग्रीन ने कहा कि जावा के लिए सन की आदर्श भूमिका "इंजीलवाद" के जैसी है।[14]

कार्यप्रणाली (प्रैक्टिसेस)[संपादित करें]

जावा प्लैटफॉर्म[संपादित करें]

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

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

बाईटकोड को इस्तेमाल करने का सबसे मुख्य लाभ है वहनता. जो कुछ भी हो, भाषांतरण के ऊपरी भाग का मतलब होता है कि भाषांतरित प्रोग्राम्स हमेशा मूल निष्पादनयोग्य से संकलित प्रोग्राम्स से ज्यादा धीरे चलती हैं और बुरे प्रदर्शन के कारण जावा की साख को नुकसान होता है। हाल ही में JVM कार्यान्वयन में कई ईष्टतमीकरण (optimization) तकनीकों के आने से यह परेशानी थोड़ी कम हो गई है।

कार्यान्वयन[संपादित करें]

सन माइक्रोसिस्टम्स आधिकारिक तौर पर जावा मानक संस्करण प्लेटफॉर्म LinuxMac OS X और Solaris के लिए लाइसेंस देती है[कृपया उद्धरण जोड़ें]. हालांकि, पूर्व में सन ने Microsoft को जावा लाइसेंस दिया, लाइसेंस की अवधि समाप्त हो चुकी है और इसका फिर से नवीकरण नहीं किया गया है।[15] तीसरे-समूह के विक्रेताओं और लाइसेंसधारियों के नेटवर्क द्वारा,[16] वैकल्पिक जावा एनवायरनमेंट इसके और दूसरे प्लेटफॉर्मस के लिए उपलब्ध हैं।

जावा ब्रांड का उपयोग करने के लिए सन का ट्रेडमार्क लाइसेंस दृढ़तापूर्वक कहता है कि सभी क्रियान्वयन 'उपयुक्त' हो। इसका परिणाम Microsoft के साथ कानूनी विवाद के रूप में निकला जब सन ने दावा किया कि Microsoft क्रियान्वयन RMI और JNI को समर्थन नहीं करती और इसमें उसके स्वयं के अतिरिक्त प्लेटफॉर्म-विशिष्ट विशेषताएं हैं। सन ने 1997 में अभियोग चलाया और 2001 में 20 मिलियन डॉलर का भुगतान और साथ ही साथ सन के लाइसेंस की शर्तो को लागू करने का कोर्ट का आदेश भी पाया।[17] परिणामस्वरूप, Microsoft ने विंडोज के साथ जावा को ज्यादा दिन नहीं चलाया और विंडोज के हाल के वर्सनों में, इंटरनेट एक्स्प्लोरर बिना तीसरी पार्टी के नियंत्रण के जावा एपप्लेट्स को समर्थन नहीं कर सकता. सन और दूसरों ने विंडोज के उस और अन्य वर्सनों के लिए मुफ्त जावा रन-टाइम सिस्टम उपलब्ध कराया.

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

सन JRE का सुपरसेट भी वितरित करता है जिसे जावा डेवलपमेंट किट (सामान्य तौर पर JDK के रूप में जाना जाता है), कहा जाता है जिसमे विकास उपकरण जैसे जावा कम्पाइलरजावाडोकजार और डीबगर शामिल है।

प्रदर्शन[संपादित करें]

जावा प्रोग्राम के प्रदर्शन का इसके समतुल्य मूलतः संकलित भाषा (जैसे कि CC++, या ऑब्जेक्ट पास्कल) में लिखे गए प्रोग्राम से तुलना करना कठिन है क्योंकि जावा के बाईटकोड कम्पाइलर का टारगेट प्लेटफॉर्मजावा प्लेटफॉर्म ही है और बाईटकोड JVM द्वारा मशीन कोड में या तो भाषांतरित कर दिया जाता है या संकलित कर दिया जाता है। इन दो भिन्न दृष्टिकोणों: स्थैतिक बनाम गतिशील संकलन और पुनः संकलन और अन्य से उत्पन्न परिदृश्यों की तुलना करना बहुत कठिन और अलग है।

संकलित भाषाओं में लिखे प्रोग्रामों की तुलना में जावा में लिखे प्रोग्रामों का धीमा होना और अधिक मेमोरी की आवश्यकता होना एक विशेषता रही है।[18] जो कुछ भी हो, जस्ट-इन टाइम संकलन (1997/1998 में जावा 1.1),[19][20][21] के आगमन के कारण जावा प्रोग्रामों की क्रियान्वयन गति तेजी से बढ़ी है, अतिरिक्त भाषा विशेषताएं उत्तम कोड विश्लेषण,[तथ्य वांछित] और जावा वर्चुअल मशीन में स्वंय इष्टतमीकरण (जैसे कि 2000 में सन के JVM के लिए हॉटस्पॉट का आभाव होना) को समर्थन करती है।

स्वचालित स्मृति (मेमोरी) प्रबंधन[संपादित करें]

इन्हें भी देखें: Garbage collection (computer science)

ऑब्जेक्ट जीवन चक्र में स्मृति का प्रबंधन करने के लिए जावा एक स्वचालित कचरा (गार्बेज) संग्रहकर्ता का उपयोग करता है। प्रोग्रामर निर्धारित कर लेता है कब ऑब्जेक्ट का निर्माण होगा और एक बार ऑब्जेक्ट जब और उपयोग के लायक नहीं रह जाता तो उसके स्मृति को पुनः प्राप्त करने की जिम्मेदारी जावा रनटाइम की होती है। एक बार जब ऑब्जेक्ट का कोई सन्दर्भ बाकी नहीं रहता, तब अगम्य (अनरिचेबल) ऑब्जेक्ट संग्राहक द्वारा स्वतः मुक्त होने के योग्य हो जाता है। कुछ कुछ मेमोरी रिसाव के समान तब भी जारी रह सकता है अगर एक प्रोग्रामर का कोड किसी ऑब्जेक्ट का एक सन्दर्भ जिसकी अब और जरूरत नहीं है उसे पकड़ता है, उसी तरह जब ओब्जेक्ट्स जिसकी और जरूरत नहीं है वह उस कंटेनर में संग्रहित है जो अभी भी इस्तेमाल में है। अगर अस्तित्वविहीन ऑब्जेक्ट के लिए पद्धतियों को बुलाया जाता हैं, एक "नल पॉइंटर एक्सेप्शन" फेंका जाता है।[22][23]

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

कचरा संग्रहण किसी भी समय हो सकता है। आदर्शतः यह तब होगा जब कार्यक्रम खाली रहता है। अगर नए ऑब्जेक्ट को आवंटित करने के लिए स्वतंत्र स्मृति अपर्याप्त है तब इसका चलाया जाना निश्चित है, यह क्षणभर के लिए एक कार्यक्रम स्थापित करने का कारण बन सकता है। स्पष्ट स्मृति प्रबंधन जावा में संभव नहीं है।

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

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

वाक्यविन्यास[संपादित करें]

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

जावा कई विशेषताओं को (जैसे कि परिचालक अतिभार और बहु उत्तराधिकारक्लासों के लिए, छुपाती है ऐसा वह भाषा को सरल बनाने और स्वाभाविक त्रुटियों और अनादर्श रचना को रोकने के लिए करती है।

जावा C++ की तरह ही समीक्षा पद्धति उपयोग करती है। दो विभिन्न प्रकार की समीक्षाएं हैं: एकरेखीय शैली अंकन दो फॉरवर्ड स्लैशेस के साथ और एक बहुरेखीय शैली खुली फॉरवर्ड स्लैश एस्टरिस्क (/*) के साथ और बंद एक एस्टरिस्क फॉरवर्ड स्लाश (*/) के साथ.

उदाहरण:

 
 // यह दो फॉरवर्ड स्लैशेस (//) का उपयोग करके एकरेखीय टिपण्णी का एक उदाहरण है।

/* यह बहु पंक्ति टिपण्णी का एक उदाहरण है जिसमें फॉरवर्ड स्लैश (/) और एस्टरिस्क (*) का इस्तेमाल होता हैं।
अधिक से अधिक जानकारी रखने के लिए इस तरह के टिपण्णी का उपयोग किया जा सकता है
 लेकिन टिप्पणी कों बंद करने की याद रखना बहुत महत्वपूर्ण है। */

//  == उदाहरण ==
// === हेलो वर्ल्ड ===
// पारंपरिक [[हैलो वर्ल्ड प्रोग्राम|हेलो वर्ल्ड कार्यक्रम]] को जावा में इस प्रकार लिखा जा सकता है:

 /* 
 * Outputs "Hello, world!"  and then exits 
 */

 public class HelloWorld { 
     public static void main(String[] args) { 
        System.out.println("Hello, world!") ; 
    } 
 }

सभी स्रोत फ़ाइलों 

No comments:

Post a Comment

Ram Chandra

MAJISA SHOES AGENCY SHIKRAPUR PUNE WHOLESALE

MAJISA SHOES AGENCY SHIKRAPUR PUNE MAHARASHTRA FOOTWEAR WHOLESALE   https://www.instagram.com/p/DOf6ZIkEUEG/?igsh=bmdiaGdua3hwdzNu  https://...