गूगल वेब टूलकिट

गूगल वेब टूलकिट (जीडबल्यूटी (GWT) ) सार्वजनिक स्रोत के उपकरणों का एक सेट है जो वेब डेवलपरों को जावा में जटिल जावास्क्रिप्ट फ्रंट-एंड अनुप्रयोगों की रचना करने और उनका रख-रखाव करने की अनुमति देता है। कुछ देशी पुस्तकालयों को छोड़कर अन्य सभी का स्रोत जावा है जिसका निर्माण जीडबल्यूटी (GWT) ऐंट बिल्ड फाइल्स (GWT Ant build files) समेत किसी भी समर्थित प्लेटफॉर्म पर किया जा सकता है। अपाची लाइसेंस संस्करण 2.0 के तहत इसे लाइसेंस प्राप्त है।

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

इतिहास 
जीडबल्यूटी (GWT) 1.0 RC 1 संस्करण (बिल्ड 1.0.20) 16 मई 2006 को रिलीज किया गया था. गूगल ने 2006 में जावावन (JavaOne) सम्मेलन में जीडबल्यूटी (GWT) की घोषणा की। 

रिलीज का इतिहास
 जीडबल्यूटी (GWT) 1.0, 17 मई 2006
 जीडबल्यूटी (GWT) 1.1, 11 अगस्त 2006
 जीडबल्यूटी (GWT) 1.2, 16 नवम्बर 2006
 जीडबल्यूटी (GWT) 1.3, 05 फ़रवरी 2007
 जीडबल्यूटी (GWT) 1.4, 28 अगस्त 2007
 जीडबल्यूटी (GWT) 1.5, 27 अगस्त 2008
 जीडबल्यूटी (GWT) 1.6, 07 अप्रैल 2009
 जीडबल्यूटी (GWT) 1.7, 13 जुलाई 2009
 जीडबल्यूटी (GWT) 2.0, 08 दिसम्बर 2009
 जीडबल्यूटी (GWT) 2.0.1, 02 फ़रवरी 2010
 जीडबल्यूटी (GWT) 2.0.2, 12 फ़रवरी 2010
 जीडबल्यूटी (GWT) 2.0.3, 18 फ़रवरी 2010
 जीडबल्यूटी (GWT) 2.0.4, 30 जून 2010 (नवीनतम)

जीडबल्यूटी (GWT) का विकास 
जीडबल्यूटी (GWT) का प्रयोग करके डेवलपर अपने पसंदीदा जावा परिनियोजन उपकरण के जरिए तेजी से जावा की भाषा में एजेएएक्स (AJAX) अनुप्रयोगों को परिनियोजित और दोष मुक्त (debug) कर सकते हैं। जब अनुप्रयोग का परियोजन हो जाता है, जीडबल्यूटी (GWT) व्यति अनुभाषक (cross-compiler) जावा अनुप्रयोग का अनुवाद स्टैंडअलोन (standalone) जावास्क्रिप्ट (JavaScript) फाइलों में कर देता है, जो कि वैकल्पिक तौर पर समझ से परे और गहराई से अनुकूलित होता है।

जीडबल्यूटी (GWT) केवल उपयोगकर्ता के इंटरफेस प्रोग्रामिंग के ईर्द-गिर्द नहीं घूमता; यह सामान्य रूप से किसी भी तरह के ग्राहक-पक्ष के उच्च निष्पादन जावास्क्रिप्ट के कार्यात्मक उपकरणों का सेट है। लाइव प्रस्तुतिकरणों में, जीडबल्यूटी (GWT) के डेवलपर इस बात पर जोर देते हैं कि "जीडबल्यूटी (GWT) इसका पुस्तकालय नहीं है" और यह केवल पुस्तकालय को शामिल करता है, न कि मौलिक तौर पर कोई अलग एजेएएक्स (AJAX) पुस्तकालय है। यह सार्वजनिक दर्शन कभी-कभी उन डेवलपरों को आश्चर्य में डाल देता है जिनके लिए जीडबल्यूटी (GWT) नया है, उन्हें उम्मीद होती है कि यह शुरू से अंत तक "ऑन रेल्स" (on rails) अनुप्रयोग फ्रेमवर्क प्रदान करता है। दरअसल, बहुत सारे प्रमुख स्थापत्य निर्णय पूरी तरह से डेवलपर के लिए छोड़ दिए जाते हैं। द जीडबल्यूटी (GWT) मिशन स्टेटमेंट जीडबल्यूटी (GWT) की भूमिका बनाम डेवलपरों की भूमिका के दार्शनिक विकार को स्पष्ट करता है। इतिहास इसका एक उदाहरण है: हालांकि उपयोगकर्ता जब ब्राउजर में पीछे या आगे के लिए क्लिक करते हैं तब जीडबल्यूटी (GWT) इतिहास संकेतों का प्रबंध करता है, इस बारे में यह कोई निर्देश नहीं देता कि एक अनुप्रयोग स्थिति में इतिहास संकेतों का नक्शा कैसे बनाएं.

जीडबल्यूटी (GWT) अनुप्रयोग दो मोड में चलाए जा सकते हैं:
 डेवलपमेंट मोड (Development mode) (पूर्व में होस्टेड मोड) (Hosted mode): यह अनुप्रयोग जेवीएम जावा वर्चुअल मशीन (जेवीएम (JVM)) के तहत बाईटकोड के रूप में चलता है। इस मोड का प्रयोग आमतौर पर परिनियोजन करने, कोड को तीव्र गमागमन करने और दोष मुक्त करने के लिए किया जाता है।
 अनुरेखक मोड (Web mode) : इसमें अनुप्रयोग विशुद्ध रूप से जावास्क्रिप्ट और एचटीएमएल (HTML) के रूप से जावा स्रोत के साथ संकलित होकर चलता है। इस मोड का इस्तेमाल आमतौर पर परिनियोजन के लिए किया जाता है।

गूगल एक प्लगइन फॉर इक्लिप्स प्रदान करता है, जो आईडीई (IDE) में प्रोजेक्टों के निर्माण समेत जीडबल्यूटी (GWT) के संकलनकर्ता को तलब करने, जीडबल्यूटी (GWT) को शुरू करने के लिए कन्फिग्यरेशन तैयार करने, प्रमाणीकरण, रचनाक्रम को चिह्नित करने आदि जैसे जीडबल्यूटी (GWT) से संबंधित ज्यादातर कार्यों को संभाल लेता है।

बहुत सारे सार्वजनिक स्रोत (ओपेन सोर्स) वाले प्लगइन जीडबल्यूटी (GWT) परिनियोजन के निर्माण को आसान बनाने के लिए आईडीई (IDE) के साथ उपलब्ध हैं। जैसे, नेटबिन्स (NetBeans), सिपल स्टूडियो फॉर जीडबल्यूटी (GWT), इक्लिप्स (Eclipse) और जेडेवलपर (JDeveloper) आदि के लिए GWT4NB

घटक 

प्रमुख जीडबल्यूटी (GWT) घटकों में निम्नलिखित शामिल हैं:

जीडबल्यूटी (GWT) जावा-से-जावास्क्रिप्ट का संकलक
जावा प्रोग्रामिंग भाषा को जावास्क्रिप्ट प्रोग्रामिंग भाषा में अनुवाद करता है।
जीडबल्यूटी (GWT) डेवलपमेंट मोड
डेवलपर्स को चलाने और विकास मोड में जीडबल्यूटी (GWT) अनुप्रयोग को कार्यान्वित करने की अनुमति देता है (जावास्क्रिप्ट संकलन के बिना JVM में जावा के होने से अनुप्रयोग चलने लगता है). 2.0 के पहले, जीडबल्यूटी (GWT) होस्टेड (पोषक) मोड जीडबल्यूटी (GWT) कोड को डिबग (दोषमार्जन) करने के लिए एक विशेष-प्रयोजनीय "होस्टेड ब्राउज़र" प्रदान करता है। 2.0 में, डिबग किये जा रहे वेब पेज को एक नियमित ब्राउज़र के भीतर देखा जाता है। बहुत से लोकप्रिय ब्राउज़रों के लिए विकास मोड गूगल वेब टूलकिट डेवलपर प्लगइन (Google Web Toolkit Developer Plugin) नामक एक नेटिव-कोड प्लगइन के उपयोग के जरिये समर्थित होता है।
जावा स्टैण्डर्ड क्लास लाइब्रेरी में आमतौर पर पयुक्त कक्षाओं का जावास्क्रिप्ट कार्यान्वयन होता है (जैसे कि अधिकांश java.lang पैकेज कक्षाएं और java.util पैकेज कक्षाओं का एक सबसेट).
जीडबल्यूटी (GWT) अनुरेखक (वेब) यूआई (UI) वर्ग पुस्तकालय
विजिट्स बनाने के लिए कस्टम इंटरफेस और वर्गों के एक सेट.

विशेषताएं 

 गतिशील और पुन: इस्तेमाल करने योग्य यूआई (UI) घटक: प्रोग्रामर दूसरे प्रकार के अधिक समय लेनेवाले गति‍शील व्यवहार को लागू करने के लिए पहले से डिजाइन किए गए वर्गों जैसे ड्रैग-एण्ड ड्रॉप (drag-and-drop) या और परिष्कृत विजुअल ट्री स्ट्रक्चर (visual tree structures) का इस्तेमाल कर सकते हैं।
 सरल आरपीसी (RPC) प्रक्रिया
 ब्राउजर इतिहास प्रबंधन
 हर तरह की विशेषताओं से लैस जावा को दोष मुक्त करने के लिए समर्थन
 जीडबल्यूटी (GWT) डेवलपर के लिए कुछ क्रॉस-ब्राउज़र मामलों को संभालता है।
 जेयूनिट (JUnit) एकीकरण
 आसान अंतर्राष्ट्रीयकरण
 डेवलपर जावा स्रोत कोड में जावास्क्रिप्ट नेटिव इंटरफेस (जेएसएनआई (JSNI)) का इस्तेमाल करके हस्तलिखित जावास्क्रिप्ट का मिश्रण कर सकते हैं।
 जीडबल्यूटी (GWT) अनुप्रयोगों में (शुरू में गूगल गियर्स (Google Gears) के लिए समर्थन) में गूगल एपीआई (API) का इस्तेमाल करने के लिए समर्थन करता है।
 सार्वजनिक स्रोत
 डेवलपर विशुद्ध रूप से वस्तुनिष्ठ फैशन में अपने अनुप्रयोगों को डिजाइन और परिनियोजित कर सकते हैं, क्योंकि वे (जावा स्क्रिप्ट के बदले) जावा का इस्तेमाल कर रहे हैं। टाइपोज और टाइप के बेमेल होने जैसी सामान्य जावास्क्रिप्ट त्रुटियां संकलन के समय पकड़ में आ जाती हैं।
 जीडबल्यूटी (GWT) संकलक जिस जावास्क्रिप्ट को उत्पन्न करते हैं, उसे स्पष्ट और आसानी से समझने लायक बनाया जा सकता है या अस्पष्ट तथा डाउनलोड करने के लिए अधिक छोटा भी बनाया जा सकता है।
 गूगल और तीसरे पक्षों द्वारा जीडबल्यूटी (GWT) के लिए बहुत सारे पुस्तकालय उपलब्ध है। इनसे जीडबल्यूटी (GWT) की विशेषताओं में विस्तार होता है।

उपलब्ध विजिट्स 
जैसे कि 2.0.3 संस्करण (फरवरी 2010) में है जीडबल्यूटी (GWT) विभिन्न तरह के विजिट्स प्रदान करता है:
 बटन (Button)
 पुश बटन (Pushbutton)
 रेडियो बटन (RadioButton)
 चेकबॉक्स (CheckBox)
 डेट पिकर (DatePicker)
 टॉगल बटन (ToggleButton)
 टेक्स्ट बॉक्स (Textbox)
 पासवर्ड टेक्स्ट बॉक्स (PasswordTextBox)
 टेक्स्ट एरिया (Textarea)
 हाइपरलिंक (Hyperlink)
 लिस्ट बॉक्स (Listbox)
 मेनू बार (Menubar)
 ट्री (Tree)
 सजेस्ट बॉक्स (SuggestBox) (ऑटो-कम्प्लीट (auto-complete))
 रिच टेक्स्ट एरिया (RichTextArea)
 टेबल (Table)
 टैब बार (TabBar)
 डायलॉग बॉक्स (DialogBox)

उपलब्ध पैनल 
जीडबल्यूटी (GWT) विजिट्स में विभिन्न पैनल भी शामिल हैं:
 पॉपअप पैनल (PopupPanel)
 स्टैक पैनल (StackPanel)
 स्टैक लेआउट पैनल ()StackLayoutPanel
 हॉरजान्टल पैनल (HorizontalPanel)
 वर्टिकल पैनल (VerticalPanel)
 फ्लो पैनल (FlowPanel)
 वर्टिकल स्प्लीट पैनल (VerticalSplitPanel)
 हॉरजान्टल स्प्लीट पैनल (HorizontalSplitPanel)
 स्प्लीट लेआउट पैनल (SplitLayoutPanel)
 डॉक पैनल (DockPanel)
 डॉक लेआउट पैनल (DockLayoutPanel)
 टैब पैनल (TabPanel)
 टैब लेआउट पैनल (TabLayoutPanel)
 डिस्क्लोजर पैनल (DisclosurePanel)

गूगल अनुरेखक (वेब) टूलकिट इनक्यूबेटर (Google Web Toolkit Incubator) जिसे विकसित किया जा रहा है, में अतिरिक्त विजिट्स हैं (भविष्य के जीडबल्यूटी (GWT) के संस्करणों में रिलीज होने की संभावना है)

बहुत सारे आम विजिट्स जीडबल्यूटी (GWT) में नहीं पाए जाते हैं, जिन्हें तीसरे पक्ष के पुस्तकालयों में लागू किया गया है, जैसे कि इएक्सटी जीडब्ल्यूटी (Ext GWT), जीडब्ल्यूटी (GWT) कॉम्पोनेन्ट लाइब्रेरी, जीडब्ल्यूटी-इएक्सटी (GWT-Ext), जीडब्ल्यूटी (GWT) विजेट लाइब्रेरी, जीडब्ल्यूटाइगर (GWTiger), रॉकेट जीडब्ल्यूटी (GWT), डोजो, स्मार्ट जीडब्ल्यूटी (GWT) आदि

जीडबल्यूटी (GWT) 2.0 
8 दिसम्बर 2009 को गूगल ने स्पीड ट्रेसर के साथ गूगल अनुरेखक (वेब) टूलकिट 2.0 को शुरू किया।

जीडबल्यूटी (GWT) का 2.0 संस्करण अनेक नयी सुविधाएं प्रदान करता है, जिनमें शामिल हैं:
 इन-ब्राउजर डेवलपमेंट मोड (In-Browser Development Mode) (पहले आउट ऑफ प्रोसेस होस्टेड मोड (Out Of Process Hosted Mode), ओओपीएचएम (OOPHM) कहलाता था): 2.0 से पहले के संस्करण में अंत:स्थापन के लिए होस्टेड मोड का इस्तेमाल होता था, जो परिनियोजन के दौरान अनुप्रयोगों के बाइटकोड संस्करण को चलाने की अनुमति देता था। 2.0 संस्करण के साथ होस्टेड मोड का फिर से नामकरण कर इसे "डेवलपमेंट मोड" का नाम दिया गया, जो किसी भी (समर्थित) ब्राउजर का इस्तेमाल करके ब्राउजर प्लगइन के जरिए दोष मुक्त किए गए पेज को देखने की अनुमति देता है। प्लगइन टीसीपी/आईपी (TCP/IP) का इस्तेमाल करके डेवलपमेंट मोड के सेल के साथ संपर्क साधता है, जो क्रॉस प्लेटफॉर्म को दोष मुक्त करने की अनुमति देता है (उदाहरण के लिए, लिनॉक्स (Linux) मशीन पर डेवलपमेंट मोड सेल चला कर विंडोज (Windows) के इंटरनेट एक्सप्लोरर (Internet Explorer) को दोष मुक्त किया जा सकता है।)
 कोड तोड़ना: डेवलपर द्वारा स्रोत कोड में मुहैया कराये गए स्प्लीट प्वाइंट के साथ जीडबल्यूटी (GWT) संकलक जावा स्क्रिप्ट कोड को एक बड़े डाउनलोड के बजाए बहुत सारे छोटे टुकड़ों में तोड़ देने में सक्षम होगा। इससे अनुप्रयोग के शुरू होने में लगनेवाला समय कम हो जाएगा, क्योंकि प्रारंभिक डाउनलोड का आकार कम हो गया है।
 डिक्लैरटिव यूजर इंटरफ़ेस: एक एक्सएमएल (XML) स्वरूप का उपयोग करके यूआईबाइंडर (UiBinder) के नाम से जानी जानेवाली नई सुविधा कोड के बजाए घोषणा के माध्यम से उपयोगकर्ता के इंटरफेसों के निर्माण की अनुमति देता है। यह यूआई (UI) के निर्माण और व्यवहार कार्यान्वयन को साफ तौर पर अलग करने की अनुमति देता है।
 रिसोर्स बंडलिंग (Resource bundling): क्लाइंट बंडल (ClientBundle) इंटरफेस किसी भी तरह के संसाधनों (चित्र, सीएसएस (CSS), टेक्स्ट, द्विआधारी (binary)) को एक साथ बांधने और एक डाउनलोड में स्थानांतरित करने की अनुमति देगा, इस कारण सर्वर के चक्कर कम लगाने होते हैं और इसलिएअनुप्रयोगों में विलंब कम होता है।

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

इन्हें भी देखें 
 जीडबल्यूटी (GWT) सुविधाओं का शोकेस/लाइव प्रदर्शन
 गूगल कोड (Google Code)
 जावास्क्रिप्ट (JavaScript) फ्रेमवर्क की तुलना
 वेब एप्लीकेशन फ्रेमवर्क की तुलना

अन्य संरचनायें 
 इएक्सटी जीडब्ल्यूटी (Ext GWT), गूगल वेब टूलकिट के लिए रिच इंटरनेट एप्लीकेशन
 ज़ेडके (ZK) (संरचना), जावास्क्रिप्ट के बिना अजक्स (Ajax) जावा फ्रेमवर्क
 स्मार्टजीडब्ल्यूटी (SmartGWT), एक व्यापक मशीन पुस्तकालय के साथ जीडबल्यूटी (GWT) संरचना
 वादिन (Vaadin), जीडबल्यूटी (GWT) पर आधारित एक समान संरचना
 जीडबल्यूटीइवेंटसर्विस (GWTEventService), एक उच्च स्तर का जीडबल्यूटी (GWT) कॉमेट / सर्वर पुश संरचना
 पैजामास (सॉफ्टवेयर) पैजामास, पाइथन से जीडबल्यूटी (GWT) का एक पोर्ट
 ज़ेडकेग्रेल्स (ZKGrails) - ग्रेल्स अजक्स फ्रेमवर्क अधिक
 रूबीजेएस (RubyJS), रूबी से जीडबल्यूटी (GWT) का एक पोर्ट
 माइक्रोसॉफ्ट (Microsoft) लाइव लेबोरेटरीज वोल्टा, माइक्रोसॉफ्ट (Microsoft) द्वारा एक दृष्टिकोण
 अल्ट्रालाइटक्लाइंट (UltraLightClient), रिच इंटरनेट एप्लीकेशन के लिए दृष्टिकोण पर
आधारित एक जावा
 डब्ल्यूटी (Wt) - वेब टूलकिट, एक सी++ (C++) वेब टूलकिट https://web.archive.org/web/20100926182832/http://www.webtoolkit.eu/wt

सन्दर्भ

ग्रंथ सूची

बाहरी कड़ियाँ
 गूगल कोड (Google code) पर जीडब्ल्यूटी (GWT) मुखपृष्ठ
 आधिकारिक जीडब्ल्यूटी (GWT) ब्लॉग
 आधिकारिक जीडब्ल्यूटी (GWT) प्रांगण
 जीडब्ल्यूटी (GWT) ट्यूटोरियल स्रोत कोड के साथ ट्यूटोरियल
 गूगल वेब (Google Web) टूलकिट इनक्यूबेटर
 एडिसन-वेस्ली, प्रेंटिस हॉल और पियर्सन एजुकेशन द्वारा आयोजित जीडबल्यूटी (GWT) पर सम्मेलन
 जीडब्ल्यूटी (GWT)-यूनाइट एक पुस्तकालय/संरचना है जो ओपेरा यूनाइट एप्लीकेशन को गूगल वेब टूलकिट (Google Web Toolkit) का उपयोग कर लिखने की अनुमति देता है

गूगल सेवाएं (Google services)
जावास्क्रिप्ट (JavaScript) पुस्तकालय
वेब डेवलपमेंट सॉफ्टवेयर
रिच इंटरनेट एप्लीकेशन फ्रेमवर्क
जावा प्लेटफॉर्म (Java platform)
गूगल परियोजना