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

From Vigyanwiki

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

जेसीएल, जेवीएम के भीतर इसके मुख्य तीन उद्देश्यों को पूरा करता है:

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

कार्यान्वयन और विन्यास

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

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

जावा मॉड्यूल सिस्टम (जावा 9 रिलीज़ का संस्करण) ने मुख्यतः rt.jar जेएआर फ़ाइल को ब्रेक कर दिया हैं और निर्दिष्ट निर्भरता वाले कई प्रारूपों में जेसीएल को प्रारूपित कर दिया हैं।[2]

अनुरूपता

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

मुख्य विशेषताएं

जावा पैकेज में प्रदान की गई क्लास (कंप्यूटर विज्ञान) के माध्यम से जेसीएल सुविधाओं का उपयोग करती है।

  • java.lang भाषा और जावा रनटाइम एनवायरनमेंट से निकटता से जुड़े मौलिक वर्ग और इंटरफ़ेस (जावा) सम्मलित हैं।
  • इनपुट/आउटपुट|I/O और कंप्यूटर संजालिंग प्लेटफ़ॉर्म द्वार फाइल सिस्टम तक पहुँचते हैं, और सामान्यतः कंप्यूटर नेटवर्क के माध्यम से java.io, java.nio और java.net संकुल तक पहुँचते हैं। इस प्रकार नेटवर्किंग के लिए, एससीटीपी (SCTP) के माध्यम से com.sun.nio.sctp उपलब्ध होता है।
  • जावा में गणित: java.math गणितीय अभिव्यक्तियाँ और मूल्यांकन प्रदान करता है, साथ ही त्रुटिहीन दशमलव और पूर्णांक संख्या के डेटाटाइप को भी प्रदान करता है।
  • संग्रह वर्ग और उपयोगिताएँ: नियमित अभिव्यक्ति, समवर्ती कंप्यूटिंग, कंप्यूटर डेटा लॉगिंग और डेटा संपीड़न के लिए अंतर्निहित संग्रह डेटा संरचनाएं और उपयोगिता क्लासेस प्रदान करता हैं।
  • जीयूआई और 2डी कंप्यूटर ग्राफिक्स: सार विंडो टूलकिट पैकेज (java.awt) बुनियादी जीयूआई संचालन और अंतर्निहित मूल प्रणाली से जुड़ता है। इसमें 2D ग्राफ़िक्स एपीआई भी सम्मलित है। द स्विंग (जावा) पैकेज (javax.swing) एडब्ल्यूटी पर बनाया गया है और एक प्लेटफ़ॉर्म-स्वतंत्र विजेट टूलकिट प्रदान करता है, इसके साथ ही प्लग करने योग्य लुक और फील भी देता है। यह संपादन योग्य और गैर-संपादन योग्य टेक्स्ट घटकों से भी संबंधित रहता है।
  • ध्वनि: ध्वनि डेटा के पढ़ने, लिखने, संगीत अनुक्रमक और सिंथेसाइज़र के लिए इंटरफेस और क्लासेस उपलब्ध रहती हैं।
  • मूलपाठ: java.text पाठ, दिनांक, संख्या और संदेशों से संबंधित है।
  • इमेज पैकेज: java.awt.image और javax.imageio इमेजस को लिखने, पढ़ने और संशोधित करने के लिए एपीआई प्रदान करता हैं।
  • एक्सएमएल (XML): एक्सएमएल के लिए सरल एपीआई, ऑब्जेक्ट मॉडल, स्टैक्स, एक्सएसएल ट्रांसफ़ॉर्मेशन, एक्स पाथ और वेब सेवाओं के लिए विभिन्न एपीआई, एक्सएमएल वेब सेवाओं के लिए एसओएपी (SOAP) और जावा एपीआई के रूप में जैक्स-डब्ल्यूएस उपलब्ध करे जाते हैं।
  • java.security द्वारा सुरक्षा प्रदान की जाती है और javax.crypto द्वारा एन्क्रिप्शन सेवाएं द्वारा प्रदान की जाती हैं।
  • डेटाबेस: java.sql के माध्यम से एसक्यूएल-SQL डेटाबेस तक पहुंचने में सफल हो पाता हैं।
  • स्क्रिप्टिंग इंजन तक पहुंचने के लिए: javax.script}} पैकेज किसी भी अनुरूप स्क्रिप्टिंग भाषा तक पहुंचने के लिए पाथ प्रदान करता है।
  • जावा एप्लेट: java.applet अनुप्रयोगों को एक नेटवर्क पर डाउनलोड करने और एक संरक्षित सैंडबॉक्स के भीतर चलाने की अनुमति देता है।
  • जावाबीन: java.beans पुन: प्रयोज्य घटकों में हेरफेर करने की विधि प्रदान करता है।
  • आत्मनिरीक्षण और प्रतिबिंब: java.lang.Class का प्रतिनिधित्व करता है, लेकिन अन्य वर्ग जैसे विधि और निर्माता java.lang.reflectमें उपलब्ध होते हैं।

लाइसेंसिंग

पूर्व लाइसेंस

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

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

दिसंबर 2010 तक, जेडीके का शेष भाग को सन माइक्रोसिस्टम्स द्वारा तब औरेकल काॅर्पोरेशन द्वारा बाइनरी प्लग के रूप में उपलब्ध कराया गया था।[5] जो जेडीके के निर्माण के लिए आवश्यक थे लेकिन इसे चलाने के लिए आवश्यक नहीं थे। क्लास लाइब्रेरी का एकमात्र भाग जिस पर स्वामित्व और क्लोज-स्रोत बना रहा (4% ओपनजेडीके 7 के लिए,[6] और 1% से कम और ओपनजेडीके 6[7][8]) था,[9] इस प्रकार सरल नेटवर्क प्रबंधन प्रोटोकॉल का कार्यान्वयन किया गया था।[10]

पहली मई 2007 की प्रस्तुति के पश्चात् सन समुदाय की सहायता से इसे ओपन-सोर्स के रूप में प्रस्तुत किया गया था औऱ ओपन-सोर्स विकल्पों के साथ प्रतिस्थापित किया गया।

इस प्रकार सभी कोड इस प्रकार हैं:

  • संगीत वाद्ययंत्र डिजिटल इंटरफ़ेस सहित सभी ऑडियो इंजन कोड ओपन सोर्स बन गए थे।[10][11] क्लोज्ड-स्रोत सॉफ़्टवेयर सिंथेसाइज़र को विशेष रूप से ओपनजेडीके के लिए विकसित नए सिंथेसाइज़र द्वारा प्रतिस्थापित किया गया है जिसे गेरविल कहा जाता है।[12]
  • सभी क्रिप्टोग्राफी कक्षाएं ओपन-सोर्स के रूप में प्रस्तुत की गईं थी।[13]
  • वह कोड जो स्केल करता है और कंप्यूटर फॉन्ट को रेखांकन करता है, इस प्रकार ओपन सोर्स फ्री टाइप का उपयोग करता है।[14][15][16]
  • रंग प्रबंधन के लिए ओपन-सोर्स लिटिल सीएमएस का उपयोग करता है।[15] इस प्रकार जेडीके में प्लग करने योग्य लेवलिंग भी होती है, जिससे कि जावा की व्यावसायिक प्रस्तुति मौलिक रूप से यह स्वयं के रंग प्रबंधन प्रणाली का उपयोग कर सके और ओपेन जेडीके लिटिल सीएमएस का उपयोग करने में सक्षम हो सकें।
  • स्थानिक एंटी-अलियासिंग|एंटी-अलियासिंग ग्राफिक्स रेखांकन कोड फोनएमई परियोजना में उपयोग किए जाने वाले ओपन सोर्स मीन रेंडरर का उपयोग करता है।[15][17][18]
  • जावास्क्रिप्ट प्लगइन ओपेन स्रोत है, जिसके लिए राइनो (जावास्क्रिप्ट इंजन) द्वारा स्वयं से प्रारंभ किया गया विशेष ओपेन स्रोत था।[19]

ओपन सोर्स रिलीज़

दिसंबर 2010 से प्रारंभ होकर, तथाकथित सभी बाइनरी प्लगों को ओपन-सोर्स मॉडल रिप्लेसमेंट द्वारा परिवर्तित कर दिया गया था, जिससे संपूर्ण जेडीके ओपेन प्लेटफार्म में परिवर्तित हो जाए।[20]

वैकल्पिक कार्यान्वयन

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

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

यह भी देखें

संदर्भ

  1. "How Classes are Found". Oracle Corporation. Retrieved 2015-12-05.
  2. "JDK Module Summary". Oracle Corporation. 2015-10-23. Retrieved 2015-11-29.
  3. http://www.sun.com/software/opensource/java/faq.jsp#b4
  4. Rich Green (2007-05-08). "Open JDK is here!". Sun Microsystems. Retrieved 2011-11-25.
  5. "OpenJDK Binary Plugs". Sun Microsystems. 2007-05-08. Archived from the original on 2012-08-26. Retrieved 2011-11-25.
  6. Fitzsimmons, Thomas (2007-05-18). "Plans for OpenJDK". Retrieved 2007-05-22.
  7. Angel, Lillian (2008-03-13). "OpenJDK to replace IcedTea in Fedora 9". Archived from the original on 2012-12-10. Retrieved 2008-04-05.
  8. Wade, Karsten (2008-03-13). "OpenJDK in Fedora 9!". redhatmagazine.com. Archived from the original on 2008-04-21. Retrieved 2008-04-05. Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
  9. Herron, David (2007-10-04). "Plans for OpenJDK". Archived from the original on 2007-10-11. Retrieved 2007-10-09.
  10. 10.0 10.1 "OpenJDK 6 b10 source posted". 2008-05-30. Retrieved 2008-06-01.
  11. audio-engine project page
  12. "Gervill - Software Synthesizer". Archived from the original on 2011-10-04. Retrieved 2008-06-01.
  13. "Crypto has been added to OpenJDK". 2007-09-27. Retrieved 2007-10-07.
  14. font-scaler projectpage
  15. 15.0 15.1 15.2 Java2D project page
  16. "Freetype font rasteriser". 2007-08-07. Retrieved 2007-11-24.
  17. phoneme.dev.java.net/ Archived 2007-06-10 at the Wayback Machine
  18. graphics-rasterizer project page
  19. "Javascript is encumbered and there is no javascript plugin support". IcedTea. 2008-03-11. Retrieved 2008-06-01. Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support.
  20. Kelly O'Hair (December 2010). "OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed". Oracle Corporation. Retrieved 2011-11-25.

बाहरी संबंध