जवाबों:
IMO, Grails का सबसे कमजोर हिस्सा डेटा मॉडल माइग्रेशन कार्यक्षमता (ala Rails ActiveRecord माइग्रेशन) की कमी है। गुणवत्ता के विभिन्न स्तरों के कुछ तृतीय-पक्ष प्लगइन्स थे, लेकिन आधिकारिक कुछ भी नहीं।
हालाँकि, मुझे अभी पता चला है कि लिक्विबेस को डेटाबेस-माइग्रेशन प्लगइन में विस्तारित और बदल दिया गया है, और यह आशाजनक लग रहा है: http://www.grails.org/plugin/database-migration
प्लस साइड पर, मैंने जिस चीज के लिए ग्रेल्स का उपयोग किया है (सरल-से-मध्यम जटिल वेब ऐप) के लिए, यह ज्यादातर शानदार रहा है। मैं कहता हूं कि मैं जावा / हाइबरनेट / स्प्रिंग / स्प्रिंग एमवीसी स्टैक पर विकास उत्पादकता में लगभग 2x से 3 गुना वृद्धि प्राप्त कर सकता हूं।
एकीकरण परीक्षणों को चलाना धीमी गति से चल रहा था क्योंकि अनाज के वातावरण को लोड होने में समय लगता है और परीक्षण को चलाने के लिए उस समय के केवल कुछ अंश की आवश्यकता होती है। यह समय के आसपास मोड़ को बढ़ाएगा जब आप कोड विकसित कर रहे हैं जो डीबी को लिखता है। अन्य समस्या का उल्लेख कालेब ने पहले ही अपने उत्तर में (डेटा माइग्रेशन के बारे में) कर दिया है। मैंने यह भी पाया कि जब भी मैं फंस गया था, तो फ़ोरम में से कोई भी मेरी मदद के लिए सीमित नहीं था जब हाइबरनेट और वसंत के लिए उपलब्ध सहायता की तुलना में सीमित था।
फ्रेमवर्क का उपयोग करने के लिए एक वर्तमान नुकसान इसके मौजूदा खराब एकीकरण है जो कि ढाल निर्माण प्रणाली में है। यह वर्तमान में इसे पूरा करने के लिए एक प्लगइन का उपयोग करता है, लेकिन प्लगइन स्वयं नए संस्करणों के साथ टूट जाता है (जैसा कि मैंने हाल ही में उपयोग करने और ठीक करने की कोशिश की है)। वे इस समस्या को भविष्य के संस्करण में ग्रेड बिल्ड सिस्टम (गैंट के बजाय) के ग्रेडेल भाग को बनाने की योजना बनाते हैं, लेकिन एक बिल्ड सिस्टम की कमी जिसे आप आसानी से एकीकृत कर सकते हैं, एक समस्या है। हालांकि, यह नुकसान भविष्य में दूर हो जाएगा।
एक और नुकसान भाषा की गतिशील प्रकृति है। आपको वास्तव में हर चीज के लिए परीक्षण लिखना होगा। आपके कोड की अधिकांश त्रुटियां रनटाइम के दौरान पाई गई हैं। यह वास्तव में एक कार्यक्रम के बारे में सोचने का एक अलग तरीका है। अपनी गलतियों को खोजने के लिए संकलक पर रिलायंस इस ढांचे के साथ नहीं होता है। मैं यह नहीं कह रहा कि यह बुरा है, यह सिर्फ अलग है (और यदि आप इससे परिचित नहीं हैं तो एक नुकसान है)।
मुझे पूरी तरह से अनाज / ग्रूवी अवधारणा पसंद है, हालांकि मैंने व्यक्तिगत रूप से सादे ग्रूवी का उपयोग अनाज से अधिक किया है, मुझे लगता है कि वे दोनों शानदार हैं।
केवल नकारात्मक पहलू (मेरे व्यक्तिगत अनुभव में) खराब आईडीई समर्थन है। मैंने सोचा (बल्कि आशावादी रूप से) कि जैसा कि स्प्रिंगसोर्स के पास एक उत्कृष्ट ग्रहण निर्माण था और ग्रेल्स के मजबूत समर्थक थे कि यह जाने का रास्ता होगा। Groovy प्लगइन्स को स्थापित करना मुश्किल है, कोड पूरा होना परतदार है (हमेशा गतिशील भाषाओं के साथ एक समस्या है, लेकिन मुझे 60 तरीकों का विकल्प देने में मददगार नहीं है), डिबगिंग थकाऊ हो सकता है क्योंकि इसे अक्सर ग्रूवी के आंतरिक कोड के माध्यम से कदम उठाने की आवश्यकता होती है, और नवीनतम रिलीज में ग्रूवी प्लगइन स्थापित करने से जावा डीबगर टूट जाता है!
वर्तमान में इसमें सार वर्गों के लिए iffy समर्थन है। उदाहरण के लिए, आप List<T>
एक कमांड ऑब्जेक्ट में एक एकल में कार्यान्वयन की सूची को बांध नहीं सकते हैं । दी, यह मुख्य रूप से कष्टप्रद है क्योंकि मैं इसे जादुई रूप से हर चीज को बांधने के लिए उपयोग कर रहा हूं! : डी
आम तौर पर यह अभी भी "हरा" की तरह है; आप अंततः विषम सीमाओं और बगों में चले जाते हैं। यह वास्तव में कुछ वर्षों में एक लंबा रास्ता तय कर रहा है।