मैं इस प्रश्न का उत्तर देने के लिए अच्छा और बुरा दोनों हूँ - अच्छा है, कि मैंने वास्तव में इसे पहले इस्तेमाल किया है, और बुरा है, इसमें मुझे जीडब्ल्यूटी के साथ काम करने से पहले एचटीएमएल / सीएसएस / जावास्क्रिप्ट के साथ काफी अनुभव था। इसने मुझे GWT का उपयोग करके इस तरह से पागल कर दिया कि अन्य जावा डेवलपर्स जो वास्तव में DHTML को नहीं जानते हैं, वे नहीं हो सकते हैं।
GWT यह क्या कहता है - यह जावा में जावा में जावास्क्रिप्ट और कुछ हद तक HTML को सार करता है। कई डेवलपर्स के लिए, यह शानदार लगता है। हालाँकि, हम जानते हैं कि जेफ एटवुड इसे कहते हैं, सभी अमूर्त असफलताएं हैं (जीडब्ल्यूटी पर विचार करते हुए एक पढ़ने लायक)। GWT के साथ, यह विशेष रूप से निम्नलिखित समस्याओं का परिचय देता है:
GWT बेकार में HTML का उपयोग करना।
जैसा कि मैंने कहा, कुछ हद तक, यहां तक कि HTML को भी हटा दिया गया है। यह जावा डेवलपर को अच्छा लगता है। लेकिन ऐसा नहीं है। HTML एक डॉक्यूमेंट मार्कअप फॉर्मेट है। यदि आप दस्तावेज़ को परिभाषित करने के लिए जावा ऑब्जेक्ट बनाना चाहते हैं, तो आप दस्तावेज़ मार्कअप तत्वों का उपयोग नहीं करेंगे। यह पागलपन की क्रिया है। यह भी पर्याप्त नियंत्रित नहीं है। HTML में अनिवार्य रूप से लिखने का एक तरीका है <p>Hello how are <b>you</b>?</p>
। GWT में, आपके पास B
एक P
नोड से जुड़ी 3 बाल नोड्स (पाठ , पाठ, पाठ) हैं । आप या तो पी पहले बना सकते हैं, या पहले बच्चे के नोड्स बना सकते हैं। चाइल्ड नोड्स में से एक फ़ंक्शन का रिटर्न परिणाम हो सकता है। कई डेवलपर्स के साथ कुछ महीनों के विकास के बाद, आपके जीडब्ल्यूटी कोड को ट्रेस करने से आपके एचटीएमएल दस्तावेज़ में जो दिखता है उसे समझने की कोशिश करना एक सिरदर्द-उत्प्रेरण प्रक्रिया है।
अंत में, टीम ने फैसला किया कि शायद सभी HTML के लिए HTMLPanel का उपयोग करना सही तरीका था। अब, आपने डेटा के लिए आसानी से बाँधने के लिए जावा कोड के लिए आसानी से उपलब्ध तत्वों वाले GWT के कई फायदे खो दिए हैं।
GWT बेकार में सीएसएस का उपयोग करना।
HTML एब्स्ट्रैक्शन के प्रति लगाव से, इसका मतलब है कि सीएसएस का उपयोग करने का तरीका भी अलग है। जब से मैंने GWT (लगभग 9 महीने पहले) का उपयोग किया था, तब से इसमें सुधार हुआ है, लेकिन उस समय, CSS समर्थन गड़बड़ था। GWT द्वारा आपको HTML बनाने के तरीके के कारण, आपके पास अक्सर ऐसे नोड्स होते हैं जिन्हें आप नहीं जानते थे कि उन्हें इंजेक्ट किया गया है (कोई भी CSS देव जानता है कि यह नाटकीय रूप से प्रतिपादन को कैसे प्रभावित कर सकता है)। CSS को एम्बेड करने या लिंक करने के बहुत सारे तरीके थे, जिसके परिणामस्वरूप नामस्थानों की गड़बड़ हो गई थी। उसके शीर्ष पर आपको स्प्राइट का समर्थन था, जो फिर से अच्छा लगता है, लेकिन वास्तव में आपके सीएसएस को उत्परिवर्तित किया गया था और हमें इसके गुणों को लिखने में समस्या थी, जिसे हमें बाद में स्पष्ट रूप से लिखना पड़ा, या कुछ मामलों में, हमारे हाथ से मिलान करने के हमारे प्रयासों को विफल कर दिया। सीएसएस को कोडित किया गया और इसे सिर्फ इस तरह से नया स्वरूप दिया गया कि GWT ने इसे खराब नहीं किया।
समस्याओं का संघ, लाभों का प्रतिच्छेदन
किसी भी भाषा की समस्याओं और लाभों का एक सेट है। चाहे आप इसका उपयोग करें, यह उन पर आधारित एक भारित सूत्र है। जब आपके पास एक अमूर्तता है, तो आपको जो भी मिलता है वह सभी समस्याओं का एक संघ है, और लाभों का एक चौराहा है। जावास्क्रिप्ट में समस्याएं हैं, और आमतौर पर सर्वर-साइड इंजीनियरों के बीच व्युत्पन्न है, लेकिन इसमें कुछ विशेषताएं भी हैं जो तेजी से वेब विकास के लिए सहायक हैं। क्लोजर, सिंटैक्स शॉर्टहैंड, एड-हॉक ऑब्जेक्ट, जेक्वेरी द्वारा किए गए सभी सामान (जैसे सीएसएस चयनकर्ता द्वारा डोम क्वेरी)। अब GWT में इसका उपयोग करने के बारे में भूल जाओ!
चिंताओ का विभाजन
हम सभी जानते हैं कि जैसे-जैसे एक परियोजना का आकार बढ़ता है, चिंताओं का अच्छा पृथक्करण महत्वपूर्ण होता है। सबसे महत्वपूर्ण में से एक प्रदर्शन और प्रसंस्करण के बीच अलगाव है। GWT ने इसे वास्तव में कठिन बना दिया। शायद असंभव नहीं है, लेकिन मैं जिस टीम में था वह कभी भी एक अच्छा समाधान नहीं आया था, और यहां तक कि जब हमने सोचा कि हमारे पास है, तो हम हमेशा एक दूसरे में लीक कर रहे थे।
डेस्कटॉप! = वेब
जैसा कि @Berin Loritsch ने टिप्पणियों में पोस्ट किया है, मॉडल या मानसिकता GWT को जीवित अनुप्रयोगों के लिए बनाया गया है, जहां एक कार्यक्रम में एक जीवित प्रदर्शन कसकर एक प्रसंस्करण इंजन के साथ युग्मित होता है। यह अच्छा लगता है क्योंकि ऐसा लगता है कि बहुत से वेब की कमी है। लेकिन दो समस्याएं हैं: ए) वेब HTTP पर बनाया गया है और यह स्वाभाविक रूप से अलग है। जैसा कि मैंने ऊपर बताया है, उस मंच के लिए HTTP - HTML, CSS, यहां तक कि संसाधन-लोडिंग और कैशिंग (चित्र, आदि) पर निर्मित तकनीकों का निर्माण किया गया है। बी) वेब पर काम करने वाले जावा डेवलपर्स आसानी से इस डेस्कटॉप-एप्लिकेशन मानसिकता पर स्विच नहीं करते हैं। इस दुनिया में वास्तुकला एक पूरी तरह से अलग अनुशासन है। फ्लेक्स डेवलपर्स शायद जावा वेब डेवलपर्स की तुलना में जीडब्ल्यूटी के लिए अधिक अनुकूल होंगे।
निष्कर्ष के तौर पर...
GWT सिर्फ जावा का उपयोग करके आसानी से त्वरित और गंदे AJAX अनुप्रयोगों का निर्माण करने में सक्षम है। यदि त्वरित और गंदे की तरह आवाज नहीं करता है, तो आप इसका उपयोग नहीं करते हैं। मैं जिस कंपनी के लिए काम कर रहा था, वह एक ऐसी कंपनी थी, जिसने अंतिम उत्पाद के बारे में बहुत परवाह की थी, और यह उपयोगकर्ता के लिए दृश्य और इंटरैक्टिव दोनों तरह की पॉलिश की भावना है। हमारे लिए फ्रंट-एंड डेवलपर्स, इसका मतलब यह था कि हमें HTML, CSS और JavaScript को उन तरीकों से नियंत्रित करने की आवश्यकता थी, जो GWT का उपयोग करके बनाई गई थीं जैसे कि बॉक्सिंग दस्ताने के साथ पियानो खेलने की कोशिश करना।