Java (programming language) - Android Tutorials and Updates
test banner

Java (programming language)

Share This


Java


"JAVA भाषा" यहां रीडायरेक्ट करता है। इंडोनेशियाई द्वीप JAVA से प्राकृतिक भाषा के लिए, जावानी भाषा देखें। यह आलेख एक प्रोग्रामिंग भाषा के बारे में है। Java.com से डाउनलोड किए गए सॉफ़्टवेयर पैकेज के लिए, जावा एसई देखें। जावास्क्रिप्ट के साथ भ्रमित नहीं होना चाहिए।

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

मूल और संदर्भ कार्यान्वयन Java कंपाइलर्स, वर्चुअल मशीन, और क्लास लाइब्रेरी मूल रूप से स्वामित्व लाइसेंस के तहत सूर्य द्वारा जारी किए गए थे। मई 2007 तक, Java सामुदायिक प्रक्रिया के विनिर्देशों के अनुपालन में, सूर्य ने जीएनयू जनरल पब्लिक लाइसेंस के तहत अपनी अधिकांश Java प्रौद्योगिकियों को राहत दी। अन्य ने इन सूर्य प्रौद्योगिकियों के वैकल्पिक कार्यान्वयन भी विकसित किए हैं, जैसे Java (बाइटकोड कंपाइलर), जीएनयू क्लासपाथ (मानक पुस्तकालय), और आईस्डटा-वेब (एप्लेट्स के लिए ब्राउज़र प्लगइन) के लिए जीएनयू कंपाइलर।

नवीनतम संस्करण Java 10 है, जो 20 मार्च, 2018 को जारी किया गया था, जो कि नए रिलीज शेड्यूल के साथ केवल छह महीने के बाद Java 9 का अनुसरण करता है। Java 8 अभी भी समर्थित है लेकिन Java 9 के लिए कोई और सुरक्षा अपडेट नहीं होगा। Java 8 से पहले संस्करणों को वाणिज्यिक आधार पर कंपनियों द्वारा समर्थित किया जाता है; जैसे अक्टूबर 2017 तक ओरेकल द्वारा Java 6 तक (जबकि वे अभी भी "अत्यधिक अनुशंसा करते हैं कि आप अनइंस्टॉल करें" कम से कम विंडोज कंप्यूटर से प्री-Java 8)।


History


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

सन माइक्रोसिस्टम्स ने 1 99 6 में जावा 1.0 के रूप में पहला सार्वजनिक कार्यान्वयन जारी किया।  इसने "एक बार लिखें, रन कहीं भी" (वर्मा) का वादा किया, लोकप्रिय प्लेटफॉर्म पर बिना किसी लागत के रन-टाइम प्रदान करते हैं। काफी सुरक्षित और कॉन्फ़िगर करने योग्य सुरक्षा की विशेषता, यह नेटवर्क- और फ़ाइल-पहुंच प्रतिबंधों की अनुमति देता है। प्रमुख वेब ब्राउज़र ने जल्द ही वेब पृष्ठों के भीतर जावा एप्लेट चलाने की क्षमता को शामिल किया, और जावा जल्दी ही लोकप्रिय हो गया। Java 1.0 कंपाइलर को जावा 1.0 भाषा विनिर्देश के साथ सख्ती से पालन करने के लिए आर्थर वैन हॉफ द्वारा जावा में फिर से लिखा गया था। Java 2 के आगमन के साथ (शुरुआत में दिसंबर 1 99 8 - 1 999 में जे 2 एसई 1.2 के रूप में जारी), नए संस्करणों में विभिन्न प्रकार के प्लेटफॉर्म के लिए कई कॉन्फ़िगरेशन बनाए गए थे। जे 2 ईई में एंटरप्राइज़ अनुप्रयोगों के लिए आमतौर पर सर्वर वातावरण में चलने वाली तकनीकों और एपीआई शामिल हैं, जबकि जे 2 एमई ने मोबाइल एप्लिकेशन के लिए अनुकूलित एपीआई अनुकूलित किए हैं। डेस्कटॉप संस्करण का नाम बदलकर जे 2 एसई रखा गया। 2006 में, मार्केटिंग उद्देश्यों के लिए, सन ने जावा जेई, जावा एमई और जावा एसई के रूप में क्रमशः नए जे 2 संस्करणों का नाम बदल दिया।

1997 में, सन माइक्रोसिस्टम्स ने ISO / आईईसी जेटीसी 1 मानक निकाय और बाद में एक्मा इंटरनेशनल से जावा को औपचारिक बनाने के लिए संपर्क किया, लेकिन जल्द ही इस प्रक्रिया से वापस ले लिया। जावा एक वास्तविक तथ्य बना हुआ है, जो जावा सामुदायिक प्रक्रिया के माध्यम से नियंत्रित होता है। एक समय में, सूर्य ने अपने अधिकांश जावा कार्यान्वयन को बिना मालिक के सॉफ़्टवेयर स्थिति के बावजूद चार्ज किया। सूर्य ने जावा एंटरप्राइज़ सिस्टम जैसे विशिष्ट उत्पादों के लिए लाइसेंस की बिक्री के माध्यम से जावा से राजस्व अर्जित किया।

13 नवंबर, 2006 को, सूर्य ने जीएनयू जनरल पब्लिक लाइसेंस (GPL) के तहत अपनी जावा वर्चुअल मशीन (JVM) को फ्री और ओपन-सोर्स सॉफ्टवेयर, (FOSS) के रूप में जारी किया। 8 मई, 2007 को, सूर्य ने प्रक्रिया पूरी की, जिसके सभी जेवीएम के कोर कोड को मुफ्त सॉफ्टवेयर / ओपन-सोर्स वितरण शर्तों के तहत उपलब्ध कराया गया, कोड के एक छोटे से हिस्से से, जिसमें सूर्य कॉपीराइट नहीं रखता था।

सन के उपाध्यक्ष रिच ग्रीन ने कहा कि जावा के संबंध में सूर्य की आदर्श भूमिका "सुसमाचारवादी" के रूप में थी। 200 9 -10 में ओरेकल कॉर्पोरेशन के सूर्य माइक्रोसिस्टम्स के अधिग्रहण के बाद, ओरेकल ने खुद को "प्रौद्योगिकी तकनीक के प्रबंधक" के रूप में वर्णित किया है, जिसमें भागीदारी और पारदर्शिता के समुदाय को बढ़ावा देने के लिए निरंतर प्रतिबद्धता है। इसने ओरेकल को एंड्रॉइड एसडीके के अंदर जावा का उपयोग करने के लिए जल्द ही Google के खिलाफ मुकदमा दायर करने से नहीं रोका (नीचे Google अनुभाग देखें)। जावा सॉफ्टवेयर लैपटॉप से ​​डाटा सेंटर, गेम कंसोल से वैज्ञानिक सुपरकंप्यूटर तक सबकुछ पर चलता है। 2 अप्रैल, 2010 को, जेम्स गोस्लिंग ने ओरेकल से इस्तीफा दे दिया।

जनवरी 2016 में, ओरेकल ने घोषणा की कि जेडीके 9 के आधार पर जावा रनटाइम वातावरण ब्राउजर प्लगइन को बंद कर देगा।


Principles


Java भाषा के निर्माण में पांच प्राथमिक लक्ष्य थे :

यह "सरल, वस्तु उन्मुख, और परिचित" होना चाहिए।
यह "मजबूत और सुरक्षित" होना चाहिए।
यह "वास्तुकला-तटस्थ और पोर्टेबल" होना चाहिए।
इसे "उच्च प्रदर्शन" के साथ निष्पादित करना होगा।
यह "व्याख्या, धागा, और गतिशील" होना चाहिए।


Versions


20 मार्च 2018 तक, जावा 8 और 10 दोनों आधिकारिक रूप से समर्थित हैं। जावा के प्रमुख रिलीज संस्करण, उनकी रिलीज तिथियों के साथ:

जेडीके 1.0 (23 जनवरी,1996)
जेडीके 1.1 (1 9 फरवरी,1997)
जे 2 एसई 1.2 (8 दिसंबर,1998)
जे 2 एसई 1.3 (8 मई, 2000)
जे 2 एसई 1.4 (6 फरवरी, 2002)
जे 2 एसई 5.0 (30 सितंबर, 2004)
जावा एसई 6 (11 दिसंबर, 2006)
जावा एसई 7 (28 जुलाई, 2011)
जावा एसई 8 (18 मार्च, 2014)
जावा एसई 9 (21 सितंबर, 2017)
जावा एसई 10 (20 मार्च, 2018)


Execution System


Java JVM and Bytecode

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

मानक पुस्तकालय मेजबान-विशिष्ट विशेषताओं जैसे कि ग्राफिक्स, थ्रेडिंग और नेटवर्किंग तक पहुंचने के लिए एक सामान्य तरीका प्रदान करते हैं।

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

Performance

Java में लिखे गए कार्यक्रमों में धीमे होने की प्रतिष्ठा है और C++  में लिखे गए लोगों की तुलना में अधिक स्मृति की आवश्यकता है। हालांकि, जावा प्रोग्राम्स की निष्पादन गति ने JAVA 1.1 के लिए 1 99 7/1 9 8 9 में जस्ट-इन-टाइम संकलन के परिचय के साथ उल्लेखनीय सुधार किया, बेहतर कोड विश्लेषण (जैसे आंतरिक कक्षाएं, स्ट्रिंगबिल्डर वर्ग, वैकल्पिक) का समर्थन करने वाली भाषा सुविधाओं के अतिरिक्त दावा, इत्यादि), और जावा वर्चुअल मशीन में ऑप्टिमाइज़ेशन, जैसे कि हॉटस्पॉट 2000 में सूर्य के जेवीएम के लिए डिफ़ॉल्ट बन गया। जावा 1.5 के साथ, java.util.concurrent पैकेज को जोड़ने के साथ प्रदर्शन में सुधार हुआ, जिसमें लॉक फ्री कार्यान्वयन ConcurrentMaps और अन्य बहु-कोर संग्रहों का, और जावा 1.6 के साथ इसे और बेहतर किया गया था।

Non JVM

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

Automatic Memory Management

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

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

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

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

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

जावा में कई प्रकार के कचरा कलेक्टर होते हैं। डिफ़ॉल्ट रूप से, हॉटस्पॉट समांतर स्कावेन्ज कचरा कलेक्टर का उपयोग करता है। हालांकि, कई अन्य कचरा कलेक्टर भी हैं जिनका उपयोग ढेर को प्रबंधित करने के लिए किया जा सकता है। जावा में 90% अनुप्रयोगों के लिए, समवर्ती मार्क-स्वीप (सीएमएस) कचरा कलेक्टर पर्याप्त है। ओरेकल का उद्देश्य सीएमएस को कचरा-प्रथम संग्राहक (जी 1) के साथ बदलना है।


Syntax


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

C++ के विपरीत, जावा ऑपरेटर ओवरलोडिंग या वर्गों के लिए एकाधिक विरासत का समर्थन नहीं करता है, हालांकि इंटरफेस के लिए एकाधिक विरासत समर्थित है।

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

"Hello World" Example

Class HelloWorldApp{
       public static void main (String[] args){
             System.out.println("Hello World!");
    }
}

स्रोत फ़ाइलों का नाम सार्वजनिक वर्ग के नाम पर रखा जाना चाहिए, प्रत्यय को जोड़ना .java, उदाहरण के लिए, HelloWorldApp.java। इसे पहले जावा कंपाइलर का उपयोग करके बाइटकोड में संकलित किया जाना चाहिए, जिसे HelloWorldApp.class नामक फ़ाइल का उत्पादन करना होगा। केवल तभी इसे निष्पादित किया जा सकता है, या "लॉन्च" किया जा सकता है। जावा स्रोत फ़ाइल में केवल एक सार्वजनिक वर्ग हो सकता है, लेकिन इसमें सार्वजनिक एक्सेस संशोधक और सार्वजनिक आंतरिक कक्षाओं की संख्या के अलावा कई कक्षाएं हो सकती हैं। जब स्रोत फ़ाइल में एकाधिक वर्ग होते हैं, तो एक वर्ग "सार्वजनिक" बनाएं और उस सार्वजनिक वर्ग के नाम के साथ स्रोत फ़ाइल का नाम दें।

एक वर्ग जिसे सार्वजनिक घोषित नहीं किया जा सकता है किसी भी .java फ़ाइल में संग्रहीत किया जा सकता है। संकलक स्रोत फ़ाइल में परिभाषित प्रत्येक वर्ग के लिए एक क्लास फ़ाइल उत्पन्न करेगा। क्लास फ़ाइल का नाम क्लास का नाम है, जिसमें क्लास संलग्न है। कक्षा फ़ाइल पीढ़ी के लिए, अज्ञात वर्गों का इलाज किया जाता है जैसे उनका नाम उनके संलग्न वर्ग, एक $ और एक पूर्णांक के नाम का समापन था।

कीवर्ड सार्वजनिक इंगित करता है कि अन्य वर्गों में कोड से एक विधि को बुलाया जा सकता है, या कक्षा वर्ग के बाहर कक्षाओं द्वारा कक्षा का उपयोग किया जा सकता है। वर्ग पदानुक्रम निर्देशिका के नाम से संबंधित है जिसमें .java फ़ाइल स्थित है। इसे एक एक्सेस लेवल संशोधक कहा जाता है। अन्य एक्सेस लेवल संशोधक कीवर्ड निजी और संरक्षित कीवर्ड शामिल हैं।

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

कीवर्ड शून्य इंगित करता है कि मुख्य विधि कॉलर को कोई मान नहीं लौटाती है। यदि कोई जावा प्रोग्राम किसी त्रुटि कोड से बाहर निकलना है, तो उसे System.exit () को स्पष्ट रूप से कॉल करना होगा।

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

मुख्य विधि स्ट्रिंग ऑब्जेक्ट्स की एक सरणी स्वीकार करनी चाहिए। सम्मेलन से, इसे तर्क के रूप में संदर्भित किया जाता है हालांकि किसी भी अन्य कानूनी पहचानकर्ता नाम का उपयोग किया जा सकता है। जावा 5 के बाद से, मुख्य विधि सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग ... तर्क) के रूप में परिवर्तनीय तर्कों का भी उपयोग कर सकती है, जिससे मुख्य विधि को स्ट्रिंग तर्कों की मनमानी संख्या के साथ बुलाया जा सकता है। इस वैकल्पिक घोषणा का प्रभाव अर्थात् समान है (तर्क पैरामीटर जो अभी भी स्ट्रिंग ऑब्जेक्ट्स की एक सरणी है), लेकिन यह सरणी बनाने और पास करने के लिए वैकल्पिक वाक्यविन्यास की अनुमति देता है।

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

प्रिंटिंग जावा मानक लाइब्रेरी का हिस्सा है: सिस्टम क्लास एक सार्वजनिक स्थैतिक क्षेत्र को परिभाषित करता है जिसे बाहर बुलाया जाता है। आउट ऑब्जेक्ट प्रिंटस्ट्रीम क्लास का एक उदाहरण है और मानक प्रिंट करने के लिए डेटा को मुद्रित करने के लिए कई विधियां प्रदान करता है, जिसमें println (स्ट्रिंग) भी शामिल है जो पारित स्ट्रिंग में एक नई लाइन भी जोड़ती है।

स्ट्रिंग "हैलो वर्ल्ड!" स्वचालित रूप से संकलक द्वारा स्ट्रिंग ऑब्जेक्ट में परिवर्तित हो जाता है।

Example with Methods

// This is an example of a single line comment using two slashes

/* This is an example of a multiple line comment using the slash and asterisk.
 This type of comment can be used to hold a lot of information or deactivate the code, but it is very important to remember to close the comment. */

package fibsandlies;
import java.util.HashMap;

/**
 * This is an example of a Javadoc comment; Javadoc can compile documentation
 * from this text. Javadoc comments must immediately precede the class, method, or field being documented.
 */
public class FibCalculator extends Fibonacci implements Calculator {
    private static Map<Integer, Integer> memoized = new HashMap<Integer, Integer>();

    /*
     * The main method written as follows is used by the JVM as a starting point for the program.
     */
    public static void main(String[] args) {
        memoized.put(1, 1);
        memoized.put(2, 1);
        System.out.println(fibonacci(12)); //Get the 12th Fibonacci number and print to console
    }

    /**
     * An example of a method written in Java, wrapped in a class.
     * Given a non-negative number FBI INDEX, returns
     * the Nth Fibonacci number, where N equals FBI INDEX.
     * @param fibIndex The index of the Fibonacci number
     * @return The Fibonacci number
     */
    public static int Fibonacci(int fibIndex) {
        if (memoized.containsKey(fibIndex)) {
            return memoized.get(fibIndex);
        } else {
            int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);
            memoized.put(fibIndex, answer);
            return answer;
        }
    }
}


Special Classes


Applet

जावा एप्लेट्स वे प्रोग्राम थे जो अन्य अनुप्रयोगों में एम्बेडेड थे, आमतौर पर एक वेब ब्राउज़र में प्रदर्शित एक वेब पेज में। जावा एप्लेट API अब 2017 में जावा 9 के बाद से हटा दिया गया है।

Servlet

Java Servlet तकनीक वेब डेवलपर्स को वेब सर्वर की कार्यक्षमता बढ़ाने और मौजूदा व्यावसायिक प्रणालियों तक पहुंचने के लिए एक सरल, सुसंगत तंत्र प्रदान करती है। सर्वलेट सर्वर-साइड जावा ईई घटक हैं जो ग्राहकों से अनुरोध (आमतौर पर HTTP अनुरोध) अनुरोधों (आमतौर पर HTML पृष्ठ) उत्पन्न करते हैं।

Java Servlet API  को कुछ हद तक वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा अधिभारित किया गया है:

AJAX, JSON और RST सेवाओं के लिए उपयोगी रीस्टफुल वेब सर्विसेज (JAX-RS-2.0) के लिए जावा एपीआई, और
SOAP वेब सेवाओं के लिए उपयोगी XML वेब सर्विसेज (JAX-WS) के लिए JAVA API.

Java Server Pages

जावासेवर पेजेस (JSP) सर्वर-साइड जावा ईई घटक हैं जो ग्राहकों से HTTP अनुरोधों के लिए प्रतिक्रियाएं उत्पन्न करते हैं, आमतौर पर HTML पृष्ठ। जेएसपी विशेष डिलिमीटर <% और%> का उपयोग कर एक HTML पृष्ठ में जावा कोड एम्बेड करते हैं। एक JSP Java Servlet, जावा एप्लिकेशन को अपने दाहिनी ओर संकलित किया जाता है, पहली बार इसे एक्सेस किया जाता है। उसके बाद, जेनरेटेड सर्वलेट प्रतिक्रिया बनाता है।

Swing Application

स्विंग जावा एसई प्लेटफॉर्म के लिए एक ग्राफिकल यूजर इंटरफेस लाइब्रेरी है। प्लगिंग योग्य देखो और स्विंग की प्रणाली महसूस करने के माध्यम से एक अलग रूप और महसूस करना संभव है। विंडोज़, जीटीके +, और मोटीफ के क्लोन सूर्य द्वारा आपूर्ति की जाती हैं। ऐप्पल एक एक्वा देखो और मैकोज़ के लिए महसूस करता है। जहां इन दिखने और महसूस करने के पूर्व कार्यान्वयन की कमी माना जा सकता है, जावा एसई 6 में स्विंग अंतर्निहित प्लेटफार्मों के अधिक देशी जीयूआई विजेट ड्राइंग दिनचर्या का उपयोग करके इस समस्या को संबोधित करती है।

Generics

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

2016 में, टाइप सिस्टम को सुरक्षित नहीं दिखाया गया था, यह साबित साबित हुआ था।

1 comment:

test banner