Google वेब टूलकिट का उपयोग कब नहीं करना है? [बन्द है]


55

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

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

GWT का उपयोग करने के खिलाफ तर्क क्या हैं, और क्यों?


11
मुझे लगा कि जीडब्ल्यूटी मर गया।
एरोन मैकिवर

1
@ ऐरन, सच में?
जस

10
मैं व्यक्तिगत रूप से GWT की सिफारिश नहीं करता हूं। यह मानसिकता आपको डेस्कटॉप अनुप्रयोगों के लिए काम करने के लिए मजबूर करती है, लेकिन आपको HTML कार्यों में उस तरह से सोचने की कोशिश करने में समस्या देगी। मैं हाथ में समस्या के लिए कोडिंग प्रतिमान से मेल खाने वाला प्रशंसक हूं, और अमूर्त मेरे रास्ते में हो जाता है। यही वजह है कि हर बार जब मैंने इसका मूल्यांकन शुरू किया, तो मैंने इसका इस्तेमाल नहीं करने का फैसला किया।
बेरिन लोरिट्श

2
@ जस एक्सपीरियंस कुछ साल पहले था; यह बचपन में था और यह उस समय बहुत कच्चा लगता था। क्या यह बदल गया है? शायद .... लेकिन मैं धीरे-धीरे खुद को रूपरेखा पर भरोसा करने के बजाय चौखटे के आधार को सीखने का प्रयास कर रहा हूं। दिन के अंत में यह जेएस को मंथन करने के लिए एक मांस की चक्की है; ऐसा नहीं है कि यह एक बुरी बात है लेकिन कहीं मैं अपना प्रयास नहीं करना चाहता। इनमें से कई चौखटे टेक्नॉलॉजी एक्स नॉलेज या उसके कुछ चीज़ों की कमी के कारण चुने गए हैं ... लेकिन आपको अंततः किसी समय में टेक्नॉलॉजी एक्स में जानकार बनने की आवश्यकता होगी।
एरोन मैकिवर

10
मैं जेएस में बहुत जानकार हूं, वहां कुछ बहुत ही गंभीर चीजें लिखी हैं, हालांकि मैं अब एक बहुत महत्वपूर्ण समय परियोजना चला रहा हूं और मैं जावा से जेएस कहने के संदर्भ-स्विच द्वारा प्रेरित त्रुटियों के कारण जूनियर स्टाफ को बर्बाद करने का समय नहीं दे सकता। तो कृपया, यदि आपके पास कुछ वास्तविक दुनिया उदाहरण है कि GWT ने आपके लिए काम क्यों नहीं किया है, तो कृपया इसका वर्णन करें, अन्यथा चलो काल्पनिक और अत्यधिक व्यक्तिपरक-रंगीन चर्चाओं के साथ एक-दूसरे का समय बर्बाद न करें।
जस

जवाबों:


84

मैं इस प्रश्न का उत्तर देने के लिए अच्छा और बुरा दोनों हूँ - अच्छा है, कि मैंने वास्तव में इसे पहले इस्तेमाल किया है, और बुरा है, इसमें मुझे जीडब्ल्यूटी के साथ काम करने से पहले एचटीएमएल / सीएसएस / जावास्क्रिप्ट के साथ काफी अनुभव था। इसने मुझे 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 का उपयोग करके बनाई गई थीं जैसे कि बॉक्सिंग दस्ताने के साथ पियानो खेलने की कोशिश करना।


2
मैंने कुछ कारणों को पहचाना, जिन्हें हमने GWT के ऊपर विकेट चुना, हैट्स ऑफ प्रेजेंटेशन।
biziclop

12
एफयूडी के लिए -1, छोटे और बड़े पैमाने के अनुप्रयोगों के लिए उपयोग किए जाने वाले जीडब्ल्यूटी के साथ मेरा अनुभव नकारात्मक की तुलना में अधिक सकारात्मक रहा है। और मुझे इन "समस्याओं" में से किसी एक का सामना नहीं करना पड़ा, इस प्रकार FUD टिप्पणी। हम बहुत कम प्रयास के साथ GWT जेनरेट किए गए विजेट्स को बहुत ही जटिल HTML पेजों में सफलतापूर्वक एम्बेड करते हैं। यदि आप जानते हैं कि आप जो कर रहे हैं वह अद्भुत है, अगर आप विचार नहीं करना चाहते हैं कि चीजों को करने का एक नया बेहतर तरीका हो सकता है तो इस "उत्तर" का पालन करें और इस टिप्पणी को अनदेखा करें।

9
@Jarrod ये मुठभेड़ करने के लिए "समस्याएं" नहीं हैं, लेकिन GWT की प्रकृति का स्पष्ट वर्णन है। जहां प्रासंगिक है, मैंने विशेष रूप से हमारी परियोजना के लक्ष्यों के लेंस के भीतर नकारात्मक होने के रूप में उन्हें योग्य बनाया। यदि आपके पास एक वैकल्पिक अनुभव है तो इसे लिखने के लिए स्वतंत्र महसूस करें। तब तक, केवल अप्रमाणित जानकारी आपका दावा है कि GWT "नया और बेहतर" है। वैसे - जब से मैंने यह उत्तर लिखा है, कंपनी (मैं अब काम नहीं करता है) ने कई इंजीनियरों के काम में एक साल से अधिक समय तक फेंक दिया, और जीडब्ल्यूटी के बिना परियोजना को फिर से लिखा। कम समय में।
निकोल

1
@JarrodRoberson मैं NickC से सहमत हूं, अपने अनुभवों का एक समान रूप से विस्तृत लिखना पढ़ना बहुत अच्छा होगा।
फंकीब्रुक

8
@NickC "कम समय में" एक परियोजना को फिर से लिखने के लिए GWT IMO के लिए एक बड़ा झटका नहीं है; कोई भी परियोजना जहां आप मूल रूप से एक अलग रूपरेखा या भाषा में "कम समय" लेने के लिए पहले भी दोहरा चुके हैं।
फंकीब्रुक

24

हम एक बड़े ई-गवर्नेंस वेब एप्लिकेशन (बैकएंड में SOA) के लिए GWT का उपयोग करते हैं जिसका एक भारी उपयोग है। पुराना UI DHTML में था, लेकिन हमारे पास ब्राउज़र संगतता, प्रदर्शन अनुकूलन और विकास प्रक्रिया के साथ समस्याएं थीं, इसलिए हमने विकल्पों की तलाश की।

हमारी आवश्यकताएं हैं:

  • क्लाइंट लोड को कम करने के लिए क्लाइंट साइड UI लेयर
  • ब्राउज़र संगतता
  • वेब आधारित आर.आई.ए.
  • आसान प्रदर्शन अनुकूलन
  • कोई क्लाइंट प्लगइन्स इंस्टॉलेशन आवश्यक नहीं है, एक सादे विंडोज़ इंस्टॉलेशन के साथ काम करना चाहिए

हमने GWT को चुना और मुझे इसका कभी अफसोस नहीं है। नई टीम के पास डीएचएमटीएल का कोई अनुभव नहीं था और इसलिए जीडब्ल्यूटी की जावा देव प्रक्रिया बहुत मददगार थी। आपको बॉक्स में क्या मिलता है:

  • ब्राउज़र संगतता
  • जावा आधारित विकास प्रक्रिया और कोड का पुन: उपयोग
  • अनुरोधों को कम करना आसान है (छवि बंडल, ...)
  • आसान एग्रेसिव कैशिंग (नए ऐप्स क्लाइंट साइड में पूरी तरह से कैश हैं)
  • सभी स्रोतों का आसान संपीड़न (पुराने बग वाले IE पर js के साथ भी)
  • और भी बहुत कुछ, यहाँ उल्लेख करने के लिए

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

मेरे लिए इस बात का कोई मतलब नहीं है कि शायद HTML DOM दस्तकारी के रूप में उतना अच्छा नहीं है, यह कभी कोई मुद्दा नहीं था। जब मैं C ++ में विकसित होता हूं, तो मैं उत्पन्न कोडर कोड को नहीं देखता हूं। जब मैं जीडब्ल्यूटी में विकसित होता हूं तो मेरे लिए जेएस कोड को देखने का कोई कारण नहीं था और केवल एक बार डोम को देखने और कुछ रिफैक्टिंग करने का एक कारण था।

मेरे लिए जीडब्ल्यूटी एकमात्र विकल्प है जब यह आरआईए विकास की बात आती है और मुझे उम्मीद है कि जीडब्ल्यूटी का उज्ज्वल भविष्य है। मिशन वक्तव्य यहां देखें:

[१] http://code.google.com/intl/de-DE/webtoolkit/makinggwtbetter.html#introduction

लेकिन यह नहीं होना चाहिए कि Google अपनी कई आंतरिक परियोजनाओं पर GWT का उपयोग नहीं करता है और इस समय GWT के भविष्य के बारे में कुछ अफवाहें हैं, देखें

[२] http://googlewebtoolkit.blogspot.com/2011/11/gwt-and-dart.html
[३] https://plus.google.com/105933370793992913359/posts/bLfgagtziBC

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.