जीएनयू क्लासपाथ

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

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

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

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

कुछ अन्य उपयोगों में शामिल हैं:
 * जावा के लिए जीएनयू कंपाइलर, जो जावा कोड को देशी स्टैंडअलोन निष्पादनयोग्य में संकलित करने में सक्षम है।
 * जीसीजेएप्लेट व्यूअर जावा एप्लेट्स को कमांड लाइन से लॉन्च करने के लिए यदि वे उपयोग में ब्राउज़र द्वारा समर्थित नहीं हैं।
 * IKVM.NET, जो जावा को .NET फ्रेमवर्क के साथ एकीकृत करता है
 * JNode, Java अनुप्रयोगों को चलाने के लिए एक ऑपरेटिंग सिस्टम। यह सिस्टम जावा और असेंबलर में ही लिखा गया है।
 * ओबेरॉन प्रोग्रामिंग भाषा के साथ एकीकरण के लिए Jaos जैसी विशिष्ट वर्चुअल मशीनें, और एम्बेडेड सिस्टम के लिए जमैकाVM वास्तविक समय की गारंटी के साथ।
 * Myrinet पर 128 प्रोसेसर तक वाले क्लस्टर के साथ वितरित कंप्यूटिंग के लिए वर्चुअल मशीन।
 * IcedTea प्रोजेक्ट ने GNU क्लासपाथ का उपयोग OpenJDK के मालिकाना तत्वों के प्रतिस्थापन के रूप में किया, उनके प्रतिस्थापन अपस्ट्रीम से पहले।

इतिहास
GNU क्लासपाथ का विकास 1998 में पांच डेवलपर्स के साथ शुरू हुआ। इतिहास के दौरान, समान लक्ष्यों वाली अन्य परियोजनाओं के साथ इसका कई बार विलय हुआ (काफ, लिबगसीजे)। अतीत में, जीएनयू क्लासपाथ ने अपनी वर्चुअल मशीन (जाफर) की आपूर्ति की थी। जैसा कि क्लासपाथ एक आधार पुस्तकालय बन रहा था, कई अलग-अलग परियोजनाओं के साथ साझा किया गया था, इस वर्चुअल मशीन को कम और कम ध्यान दिया गया था और अब यह समर्थित नहीं है।

अधिकांश आधिकारिक जावा 1.4 एपीआई को लागू करने के बाद, परियोजना में काम एपीआई कवरेज उन्मुख होने के बजाय अधिक बग उन्मुख हो गया। 24 अक्टूबर 2006 को अंतिम लापता 1.4 वर्ग का कार्यान्वयन, javax/swing/text/html/HTMLWriter.html HTMLWriter प्रतिबद्ध था। विकास की गति (गणितीय रूप से प्रति दिन कोड की नई स्रोत लाइनों की औसत संख्या के रूप में गणना की गई) 2006 में अपने उच्चतम स्तर पर पहुंच गई।

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

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

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

GNU क्लासपाथ लाइब्रेरी कोड कवरेज़  प्रगति को OpenJDK6 के विरुद्ध ट्रैक किया जा सकता है और ओपनजेडीके7.

वर्चुअल मशीन एकीकरण
जीएनयू क्लासपाथ में आधिकारिक जावा एपीआई नेमस्पेस से कक्षाएं शामिल हैं। जहां देशी कोड के लिए कॉल आवश्यक या अत्यधिक वांछित हैं, यह वीएम कक्षाओं की एक छोटी संख्या से किया जाता है। ऐसे वीएम वर्ग का नाम मूल विधियों की आवश्यकता वाले वर्ग के नाम से मेल खाता है, साथ ही अतिरिक्त वीएम उपसर्ग: VMObject, VMString और इसी तरह। वीएम कक्षाएं, बाकी कोड से अलग संग्रहीत, जावा सिंटैक्स # एक्सेस संशोधक हैं। इन वर्गों के तरीकों में 'देशी' कीवर्ड शामिल है, जो सहायक देशी पुस्तकालय की आवश्यकता को दर्शाता है। इस तरह के पुस्तकालय एक जावा वर्चुअल मशीन के लेखकों द्वारा प्रदान किए जाते हैं, इसलिए जीएनयू क्लासपाथ को लगभग किसी भी जावा वर्चुअल मशीन से जोड़ा जा सकता है यदि ऐसी वर्चुअल मशीन के स्रोत उपलब्ध हैं और संशोधित किए जा सकते हैं।

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

omg.org डोमेन से कक्षाएं
जीएनयू क्लासपाथ किसी भी ऐसे कोड को स्वीकार नहीं करता है जिसके पास गैर-मुक्त लाइसेंस है, या जो गैर-मुक्त लाइसेंस वाले कोड से स्वचालित रूप से उत्पन्न हुआ था। मानक जावा एपीआई में omg.org डोमेन से कई वर्ग शामिल हैं जो आम तौर पर लक्ष्य प्रबंधन समूह  द्वारा जारी इंटरफ़ेस परिभाषा भाषा फ़ाइलों से उत्पन्न होते हैं। इन फ़ाइलों का उपयोग, लेकिन कोई संशोधन लाइसेंस गैर-मुक्त के रूप में गिना जाता है। इस कारण से, जीएनयू क्लासपाथ प्रोजेक्ट में उल्लिखित कक्षाएं केवल आधिकारिक मुद्रित ओएमजी विनिर्देशों का उपयोग करके स्क्रैच से लिखी गई थीं। इसलिए जीएनयू क्लासपाथ का यह हिस्सा परियोजना में किसी भी अन्य कोड के रूप में मुफ़्त है।

यह भी देखें

 * अपाचे सद्भाव
 * जावा के लिए GNU कम्पाइलर
 * आईकेवीएम.नेट
 * जामवीएम
 * जमैका वीएम
 * Jaos
 * जेक्सआरवीएम
 * काफ
 * आइस्ड टी
 * मुफ्त जावा कार्यान्वयन
 * जावा क्लास लाइब्रेरी

बाहरी संबंध

 * : test runs and binary compatibility tests
 * : test runs and binary compatibility tests
 * : test runs and binary compatibility tests