जावा क्लास लाइब्रेरी

जावा क्लास लाइब्रेरी (JCL) लाइब्रेरी (कंप्यूटर साइंस) # डायनेमिक लिंकिंग का एक सेट है जो JVM भाषाओं की सूची | जावा वर्चुअल मशीन (JVM) भाषाएँ रन टाइम (प्रोग्राम जीवनचक्र चरण) पर कॉल कर सकती हैं। क्योंकि जावा प्लेटफार्म किसी विशिष्ट ऑपरेटिंग सिस्टम पर निर्भर नहीं है, एप्लिकेशन किसी भी प्लेटफ़ॉर्म-देशी लाइब्रेरी पर भरोसा नहीं कर सकते हैं। इसके बजाय, जावा प्लेटफ़ॉर्म मानक पुस्तकालय का एक व्यापक सेट प्रदान करता है, जिसमें आधुनिक ऑपरेटिंग सिस्टम के लिए सामान्य कार्य शामिल हैं।

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

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

लगभग सभी JCL को एक एकल JAR (फ़ाइल स्वरूप) फ़ाइल में संग्रहीत किया जाता है जिसे rt.jar कहा जाता है जो जावा क्रम पर्यावरण और जावा विकास किट वितरण के साथ प्रदान किया जाता है। जावा क्लास लाइब्रेरी (rt.jar) डिफ़ॉल्ट बूटस्ट्रैप क्लासपाथ में स्थित है और आवेदन के लिए घोषित क्लासपाथ (जावा) में उपस्थित होने की आवश्यकता नहीं है। JCL को खोजने के लिए जावा रनटाइम एनवायरनमेंट बूटस्ट्रैप क्लास लोडर का उपयोग करता है।

जावा मॉड्यूल सिस्टम (जावा 9 रिलीज़ का हिस्सा) ने अखंड rt.jar JAR फ़ाइल को तोड़ दिया और निर्दिष्ट निर्भरता वाले कई मॉड्यूल में JCL को ही मॉड्यूलर कर दिया।

अनुरूपता
किसी भी जावा कार्यान्वयन को अनुपालन के लिए जावा प्रौद्योगिकी संगतता किट परीक्षण पास करना होगा, जिसमें जेसीएल परीक्षण शामिल हैं।

मुख्य विशेषताएं
जावा पैकेज में प्रदान की गई कक्षा (कंप्यूटर विज्ञान) के माध्यम से जेसीएल सुविधाओं का उपयोग किया जाता है।
 * भाषा और जावा रनटाइम एनवायरनमेंट से निकटता से जुड़े मौलिक वर्ग और इंटरफ़ेस (जावा) शामिल हैं।
 * इनपुट/आउटपुट|I/O और संगणक संजालिंग प्लेटफ़ॉर्म फाइल सिस्टम तक पहुँचते हैं, और आम तौर पर कंप्यूटर नेटवर्क के माध्यम से, और  संकुल। नेटवर्किंग के लिए, SCTP के माध्यम से उपलब्ध है.
 * जाओ। गणित: गणितीय अभिव्यक्तियाँ और मूल्यांकन प्रदान करता है, साथ ही मनमाना-सटीक दशमलव और पूर्णांक संख्या डेटाटाइप भी प्रदान करता है।
 * संग्रह वर्ग और उपयोगिताएँ: नियमित अभिव्यक्ति, समवर्ती कंप्यूटिंग, कंप्यूटर डेटा लॉगिंग और डेटा संपीड़न के लिए अंतर्निहित संग्रह डेटा संरचनाएं और उपयोगिता कक्षाएं।
 * जीयूआई और 2डी कंप्यूटर ग्राफिक्स: सार विंडो टूलकिट पैकेज बुनियादी जीयूआई संचालन और अंतर्निहित मूल प्रणाली से जुड़ता है। इसमें 2D ग्राफ़िक्स API भी शामिल है। द स्विंग (जावा) पैकेज  AWT पर बनाया गया है और एक प्लेटफ़ॉर्म-स्वतंत्र विजेट टूलकिट प्रदान करता है, साथ ही प्लग करने योग्य लुक और फील भी देता है। यह संपादन योग्य और गैर-संपादन योग्य टेक्स्ट घटकों से भी संबंधित है।
 * ध्वनि: ध्वनि डेटा के पढ़ने, लिखने, संगीत अनुक्रमक और सिंथेसाइज़र के लिए इंटरफेस और कक्षाएं।
 * मूलपाठ: पाठ, दिनांक, संख्या और संदेशों से संबंधित है।
 * छवि पैकेज: और  छवियों को लिखने, पढ़ने और संशोधित करने के लिए एपीआई प्रदान करें।
 * XML: XML के लिए सरल API, दस्तावेज़ ऑब्जेक्ट मॉडल, StAX, XSL ट्रांसफ़ॉर्मेशन, XPath और वेब सेवाओं के लिए विभिन्न API, XML वेब सेवाओं के लिए SOAP और Java API के रूप में | JAX-WS।
 * सुरक्षा प्रदान की जाती है और एन्क्रिप्शन सेवाएं द्वारा प्रदान की जाती हैं.
 * डेटाबेस: के माध्यम से SQL डेटाबेस तक पहुंच
 * स्क्रिप्टिंग इंजन तक पहुंच: }} पैकेज किसी भी अनुरूप स्क्रिप्टिंग भाषा तक पहुंच प्रदान करता है।
 * जावा एप्लेट: अनुप्रयोगों को एक नेटवर्क पर डाउनलोड करने और एक संरक्षित सैंडबॉक्स के भीतर चलाने की अनुमति देता है
 * जावाबीन: पुन: प्रयोज्य घटकों में हेरफेर करने के तरीके प्रदान करता है।
 * आत्मनिरीक्षण और प्रतिबिंब: java.lang.Class एक वर्ग का प्रतिनिधित्व करता है, लेकिन अन्य वर्ग जैसे विधि और निर्माता हैं में उपलब्ध.

पूर्व लाइसेंस
ओपनजेडीके के जारी होने से पहले, जावा डेवलपमेंट किट एक मालिकाना सॉफ्टवेयर पर आधारित था।

2007 की पहली छमाही में लगभग पूरी तरह से मुक्त और ओपन-सोर्स कोड के आधार पर पूरी तरह से निर्मित जावा डेवलपमेंट किट जारी करने के अपने वादे के बाद, Sun ने 8 मई, 2007 को GPL के तहत क्लास लाइब्रेरी का पूर्ण स्रोत कोड जारी किया, कुछ सीमित भागों को छोड़कर, जिन्हें Sun द्वारा तीसरे पक्ष से लाइसेंस प्राप्त था, जो नहीं चाहते थे कि उनका कोड एक ओपन-सोर्स लाइसेंस के तहत जारी किया जाए। सन का लक्ष्य उन हिस्सों को बदलना था जो वैकल्पिक कार्यान्वयन के साथ मालिकाना और बंद स्रोत बने रहते हैं और क्लास लाइब्रेरी को पूरी तरह से मुक्त और खुला स्रोत बनाते हैं।

दिसंबर 2010 तक, JDK का शेष भारित हिस्सा सन माइक्रोसिस्टम्स द्वारा तब Oracle Corporation द्वारा बाइनरी प्लग के रूप में उपलब्ध कराया गया था। जो JDK के निर्माण के लिए आवश्यक थे लेकिन इसे चलाने के लिए आवश्यक नहीं थे।, क्लास लाइब्रेरी का एकमात्र हिस्सा जो मालिकाना और बंद-स्रोत बना रहा (4% ओपनजेडीके 7 के लिए, और 1% से कम  और ओपनजेडीके 6  ) था सरल नेटवर्क प्रबंधन प्रोटोकॉल कार्यान्वयन। पहली मई 2007 की रिलीज़ के बाद से, सन, समुदाय की मदद से, ओपन-सोर्स के रूप में जारी किया गया या ओपन-सोर्स विकल्पों के साथ प्रतिस्थापित किया गया, लगभग सभी भारित कोड:
 * संगीत वाद्ययंत्र डिजिटल इंटरफ़ेस सहित सभी ऑडियो इंजन कोड ओपन सोर्स बन गए। बंद-स्रोत सॉफ़्टवेयर सिंथेसाइज़र को विशेष रूप से ओपनजेडीके के लिए विकसित एक नए सिंथेसाइज़र द्वारा प्रतिस्थापित किया गया है जिसे गेरविल कहा जाता है,
 * सभी क्रिप्टोग्राफी कक्षाएं ओपन-सोर्स के रूप में जारी की गईं,
 * वह कोड जो स्केल करता है और कंप्यूटर फॉन्ट को रेखांकन करता है, ओपन सोर्स फ्री टाइप का उपयोग करता है
 * देशी रंग प्रबंधन ओपन-सोर्स LittleCMS का उपयोग करता है। JDK में एक प्लग करने योग्य परत है, ताकि जावा की व्यावसायिक रिलीज़ मूल, मालिकाना रंग प्रबंधन प्रणाली का उपयोग कर सके और OpenJDK LittleCMS का उपयोग कर सके।
 * स्थानिक एंटी-अलियासिंग|एंटी-अलियासिंग ग्राफिक्स रेखांकन कोड फोनएमई परियोजना में उपयोग किए जाने वाले ओपन सोर्स मीन रेंडरर का उपयोग करता है।
 * जावास्क्रिप्ट प्लगइन खुला स्रोत है (राइनो (जावास्क्रिप्ट इंजन) स्वयं शुरुआत से ही खुला स्रोत था)।

ओपन सोर्स रिलीज़
दिसंबर 2010 से शुरू होकर, सभी तथाकथित बाइनरी प्लग को ओपन-सोर्स मॉडल रिप्लेसमेंट द्वारा बदल दिया गया, जिससे संपूर्ण JDK खुला हो गया।

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

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

यह भी देखें

 * जावा प्लेटफार्म, मानक संस्करण
 * जावा एपीआई की सूची
 * ओपनजेडीके
 * मुफ्त जावा कार्यान्वयन
 * मानक पुस्तकालय
 * जावा एप्लेट

बाहरी संबंध

 * Java SE Main page
 * Java SE API documentation
 * Java software development kits (status ):
 * 1.7 (early development)
 * 1.6 (stable, current)
 * 1.5 (stable)
 * 1.4 (stable)
 * 1.3 (obsolete)
 * 1.3 (obsolete)