Abstract Window Toolkit
एब्स्ट्रैक्ट विंडो टूलकिट (ए. डब्ल्यू. टी.) जावा का मूल प्लेटफॉर्म-निर्भर विंडो, ग्राफिक्स और उपयोगकर्ता-इंटरफेस विजेट टूलकिट है, जो स्विंग से पहले है। ए. डब्ल्यू. टी. जावा फाउंडेशन क्लास (जे. एफ. सी.) का हिस्सा है-जावा प्रोग्राम के लिए एक ग्राफिकल यूजर इंटरफेस (जी. यू. आई.) प्रदान करने के लिए मानक ए. पी. आई। ए. डब्ल्यू. टी. कई जावा एम. ई. प्रोफाइलों के लिए जी. यू. आई. टूलकिट भी है। उदाहरण के लिए, कनेक्टेड डिवाइस कॉन्फ़िगरेशन प्रोफाइल को एब्स्ट्रैक्ट विंडो टूलकिट का समर्थन करने के लिए मोबाइल टेलीफोन पर जावा रनटाइम की आवश्यकता होती है। इतिहास जब सन माइक्रोसिस्टम्स ने पहली बार 1995 में जावा को जारी किया, तो ए. डब्ल्यू. टी. विजेट ने अंतर्निहित देशी उपयोगकर्ता-इंटरफेस पर अमूर्तता का एक छोटा स्तर प्रदान किया। उदाहरण के लिए, एक ए. डब्ल्यू. टी. चेक बॉक्स बनाने से ए. डब्ल्यू. टी. सीधे अंतर्निहित देशी सबरूटीन को कॉल करेगा जिसने एक चेक बॉक्स बनाया था। हालाँकि, विंडोज पर चेक बॉक्स मैकोस पर या विभिन्न प्रकार के यूनिक्स पर चेक बॉक्स के समान नहीं है। कुछ एप्लिकेशन डेवलपर्स इस मॉडल को पसंद करते हैं क्योंकि यह अंतर्निहित देशी विंडो टूलकिट और देशी अनुप्रयोगों के साथ निर्बाध एकीकरण के लिए उच्च स्तर की निष्ठा प्रदान करता है। दूसरे शब्दों में, ए. डब्ल्यू. टी. का उपयोग करके लिखा गया एक जी. यू. आई. प्रोग्राम विंडोज पर चलने पर एक देशी माइक्रोसॉफ्ट विंडोज एप्लिकेशन की तरह दिखता है, लेकिन मैक आदि पर चलने पर वही प्रोग्राम एक देशी एप्पल मैकिंटोश एप्लिकेशन की तरह दिखता है। हालांकि, कुछ एप्लिकेशन डेवलपर्स इस मॉडल को नापसंद करते हैं क्योंकि वे अपने एप्लिकेशन को हर प्लेटफॉर्म पर बिल्कुल समान दिखना पसंद करते हैं। जे2एसई 1.2 में, स्विंग टूलकिट ने काफी हद तक ए. डब्ल्यू. टी. के विजेट को हटा दिया। यू. आई. विजेटों का एक समृद्ध सेट प्रदान करने के अलावा, स्विंग ऑपरेटिंग सिस्टम के उच्च-स्तरीय यूजर इंटरफेस मॉड्यूल पर भरोसा करने के बजाय अपने स्वयं के विजेट (स्थानीय ग्राफिक्स सबसिस्टम में निम्न-स्तरीय सबरूटीन में कॉल करने के लिए जावा 2डी का उपयोग करके) खींचता है। स्विंग या तो देशी प्लेटफॉर्म के "लुक एंड फील" या एक क्रॉस-प्लेटफॉर्म लुक एंड फील ("जावा लुक एंड फील") का उपयोग करने का विकल्प प्रदान करता है जो सभी विंडो सिस्टम पर समान दिखता है। वास्तुकला ए. डब्ल्यू. टी. ए. पी. आई. के दो स्तर प्रदान करता हैः जावा और मूल प्रणाली के बीच एक सामान्य इंटरफेस, जिसका उपयोग विंडो, घटनाओं और लेआउट प्रबंधकों के लिए किया जाता है। यह एपीआई जावा जीयूआई प्रोग्रामिंग के मूल में है और इसका उपयोग स्विंग और जावा 2डी द्वारा भी किया जाता है। इसमें शामिल हैंः देशी विंडो प्रणाली और जावा अनुप्रयोग के बीच इंटरफेस; जीयूआई घटना उप-प्रणाली का मूल; कई लेआउट प्रबंधक; माउस और कीबोर्ड जैसे उपकरणों को इनपुट करने के लिए इंटरफेस; और क्लिपबोर्ड और ड्रैग एंड ड्रॉप के साथ उपयोग के लिए एक पैकेज। जी. यू. आई. विजेटों का एक बुनियादी समूह जैसे बटन, टेक्स्ट बॉक्स और मेनू। यह ए. डब्ल्यू. टी. नेटिव इंटरफेस भी प्रदान करता है, जो ए. डब्ल्यू. टी. ऑब्जेक्ट ड्राइंग सतह पर सीधे आकर्षित करने के लिए नेटिव कोड में संकलित पुस्तकालयों को प्रस्तुत करने में सक्षम बनाता है। ए. डब्ल्यू. टी. अनुप्रयोगों के लिए कुछ उच्च स्तर की कार्यक्षमता भी उपलब्ध कराता है, जैसे किः सहायक प्रणालियों पर सिस्टम ट्रे तक पहुंच; और कुछ डेस्कटॉप अनुप्रयोगों जैसे कि वेब ब्राउज़र और जावा अनुप्रयोग से ईमेल क्लाइंट को लॉन्च करने की क्षमता। न तो ए. डब्ल्यू. टी. और न ही स्विंग स्वाभाविक रूप से सुरक्षित है। इसलिए, जो कोड जी. यू. आई. को अपडेट करता है या घटनाओं को संसाधित करता है, उसे इवेंट डिस्पैचिंग थ्रेड पर निष्पादित करना चाहिए। ऐसा करने में विफलता के परिणामस्वरूप गतिरोध या दौड़ की स्थिति हो सकती है। इस समस्या को हल करने के लिए, स्विंगवर्कर नामक एक उपयोगिता वर्ग अनुप्रयोगों को इवेंट डिस्पैचिंग थ्रेड में उपयोगकर्ता-बातचीत की घटनाओं के बाद समय लेने वाले कार्यों को करने की अनुमति देता है। ए. डब्ल्यू. टी. और स्विंग घटकों का मिश्रण जहां ए. डब्ल्यू. टी. घटक का एक स्विंग संस्करण है, वह जे-से शुरू होगा और ए. डब्ल्यू. टी. संस्करण की जगह विशेष रूप से इसका उपयोग किया जाना चाहिए। उदाहरण के लिए, स्विंग में केवल जे-बटन का उपयोग करें, कभी भी बटन क्लास का उपयोग न करें। जैसा कि ऊपर उल्लेख किया गया है, AWT कोर वर्ग, जैसे कि रंग और फ़ॉन्ट, अभी भी स्विंग में उपयोग किए जाते हैं। स्विंग में चित्र बनाते समय, ए. डब्ल्यू. टी. पेंट () विधियों का उपयोग करने के बजाय जे. पी. एन. एल. का उपयोग करें और पेंटकंपोनेंट (ग्राफिक्स जी) को ओवरराइड करें। जावा 6 अपडेट 12 से पहले, स्विंग घटकों और बुनियादी एडब्ल्यूटी विजेटों को मिलाने से अक्सर अवांछित दुष्प्रभाव होते थे, जिसमें एडब्ल्यूटी विजेट स्विंग विजेटों के शीर्ष पर उनके परिभाषित जेड-ऑर्डर की परवाह किए बिना दिखाई देते थे। यह समस्या इसलिए थी क्योंकि स्विंग द्वारा ए. डब्ल्यू. टी. से हेवीवेट शीर्ष कंटेनर उधार लेने के बावजूद, दो विजेट टूलकिट की प्रतिपादन संरचना बहुत अलग थी। जावा 6 अपडेट 12 से शुरू करके, जेड-ऑर्डर समस्याओं के बिना स्विंग और एडब्ल्यूटी विजेट को जोड़ना संभव है। उदाहरण आयात java.awt। *; आयात java.awt.event.WindowAdapter; आयात java.awt.event.WindowEvent; सार्वजनिक वर्ग माईऐप {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्गस) {फ्रेम फ्रेम = नया फ्रेम ("अनुप्रयोग"); frame.add (नया लेबल ("हैलो! "); frame.setSize (500,500); frame.setLocationRelativeTo (शून्य);// विंडो को केंद्र में रखते हुए frame.addWindowListener (नया विंडो एडाप्टर () {@Override सार्वजनिक शून्य विंडो बंद (विंडो इवेंट ई) {frame.dispose ();// देशी स्क्रीन संसाधनों को जारी करता है); frame.setVisible (सही);} कार्यान्वयन चूंकि AWT अंतर्निहित मूल उपयोगकर्ता-इंटरफेस के लिए एक सेतु है, इसलिए एक नए ऑपरेटिंग सिस्टम पर इसके कार्यान्वयन में बहुत काम शामिल हो सकता है, खासकर अगर इसमें कोई भी AWT GUI विजेट शामिल हो, क्योंकि उनमें से प्रत्येक के लिए अपने मूल साथियों को खरोंच से विकसित करने की आवश्यकता होती है। एक नई परियोजना, कैसिओकावेल्लो, बनाई गई है, जो नई प्रणालियों पर एडब्ल्यूटी कार्यान्वयन को आसान बनाने के लिए एक ओपनजेडीके-आधारित जावा एपीआई प्रदान करती है। परियोजना ने जावा2डी का उपयोग करके ए. डब्ल्यू. टी विजेट को सफलतापूर्वक लागू किया है। सभी आवश्यक कोर-जे. डी. के. संशोधनों को तब से ओपन. जे. डी. के. 7 पर धकेल दिया गया है, जिसका अर्थ है कि जावा का उपयोग अब आधिकारिक जे. डी. के. (एक्स विंडो सिस्टम, ओपन. जी. एल. या डायरेक्ट. एक्स.) द्वारा प्रदान किए गए ग्राफिक्स स्टैक के अलावा एक बाहरी पुस्तकालय को शामिल करके और कुछ सिस्टम गुणों को सेट करके किया जा सकता है। कैसिओकावेल्लो के लिए एक डायरेक्टएफबी बैकएंड विकसित किया जा रहा है, जैसा कि एक एचटीएमएल5 बैकएंड है; इसका उद्देश्य मौजूदा स्विंग अनुप्रयोगों को-जावा समर्थन के बिना-एक वेब सर्वर पर चलने वाले सामान्य वेब अनुप्रयोगों के रूप में तैनात करना है। स्विंग (जावा) मानक विजेट टूलकिट संदर्भ बाहरी लिंक (ए. डब्ल्यू. टी. जावाडॉक ए. पी. आई. प्रलेखन) ए. डब्ल्यू. टी./स्विंग java.awt जावा कोड जावा ए. पी. आई. विजेट टूलकिट के उदाहरण वाले लेख भी देखें।