2010-11-17 17 views
10

मैं एक ग्रीनफील्ड वेब अनुप्रयोग विकसित करना चाहता हूं जो बहुत से जावा घटकों का पुन: उपयोग करेगा। मेरे लिए, रेल के लिए स्पष्ट विकल्प Grails या jRuby हैं, लेकिन मुझे दोनों की उद्देश्य तुलना खोजने में परेशानी हो रही है। क्यारेल बनाम Grails पर jRuby

  1. मौजूदा जावा घटकों (लगातार डोमेन के बाहर) के साथ एकीकरण की आसानी के संबंध में एक को चुनने के कोई स्पष्ट कारण हैं, उदा। JMS, कार्यात्मक परीक्षण के लिए EIP
  2. समर्थन एक मशीन
  3. scalability

पर चौखटे

  • प्रदर्शन मैं नहीं डेवलपर्स या समुदायों की गतिविधि की उपलब्धता से संबंधित सवालों के जवाब की तलाश में हूँ।


    (मैं Grails vs. Rails देख लिया है, और यह मेरे लिए प्रासंगिक नहीं है)

  • +0

    उपर्युक्त उत्तरों को जोड़ते हुए, grails में भी एक [जेएमएस के लिए प्लगइन] है (http://www.grails.org/plugin/jms)। –

    +0

    मुझे लगता है कि उत्तर में यह देखकर जवाब हो सकता है कि प्रत्येक में कौन से रत्न या प्लगइन्स हैं जो एकीकरण के साथ मदद कर सकते हैं। –

    उत्तर

    4
    • आसानी उपयोग करना प्रारंभ कर सकता है:

    यह ग्रूवी साथ आसान है, ग्रूवी कारण मूल रूप से जावा है। आप कार्यात्मक परीक्षण के लिए

    • समर्थन चौखटे

    गहरे लाल रंग का यह rspec/चाहिये/ककड़ी/स्टेक और टन अधिक की तरह परीक्षण चौखटे के स्वयं के ढेर है है बड़ा संदर्भ स्विच नहीं है। के बाद से मैं गहरे लाल रंग का वाक्य रचना की तरह मैं उन

    • प्रदर्शन एक मशीन पर

    जहाँ तक मुझे पता है, grails, बहु सूत्रण में बेहतर है, क्योंकि रेल नहीं किया फोकस बहुत ज्यादा उस पर अतीत में पसंद करेंगे । वे वर्तमान में पकड़ रहे हैं, इसलिए यह टाई हो सकती है।

    • scalability

    JVM environement के साथ दोनों पैमाने। यदि आपके पास जावा के लिए एक बुनियादी ढांचा है, तो grails को एकीकृत करना आसान है।

    +1

    उत्तर के लिए धन्यवाद। 1. JRuby की तुलना में ग्रोवी के लिए कितना आसान एकीकरण पर कोई भावना है? 2. परीक्षण के लिए रुबी के विकल्पों के बारे में सुनना अच्छा है; क्या ये सभी जरुबी के साथ संगत हैं? 3. मैं समझता हूं कि जेआरबी का थ्रेडिंग मॉडल मानक रूबी के लिए काफी अलग है (उदाहरण के लिए यह वास्तव में धागे का उपयोग करता है); क्या आपने इसे ध्यान में रखा है? 4. स्केलिंग JRuby हालांकि रेल अनुप्रयोगों को स्केल करने के समान सरल हो सकता है - बस रूबी के बजाय जावा एप्लिकेशन सर्वर का उपयोग करना। कोई विचार? – Armand

    +0

    1. यह ग्रोवी बनाम जेआरबीबी के एकीकरण के बारे में नहीं है, यह रेलों पर जेरीबी बनाम जेरीबी के एकीकरण के बारे में है। Grails आसान है, क्योंकि यह सिर्फ एक और जावा lib है। जेआरओआर टॉर्कबॉक्स जैसे वॉर्बलर या कस्टम स्टैक्स जैसे टूल का उपयोग करता है। 2. यह निर्भर करता है। 3. 1 में। यह रेल के धागे समर्थन के बारे में है। रेल 3 में डिफ़ॉल्ट रूप से अनुरोध-लॉक होता है। 4. नहीं, देखें 3. – phoet

    5

    मैं Grails अच्छी तरह जानते हैं (अभी मैं एक Grails परियोजना पर काम कर रहा हूँ), लेकिन नहीं JRuby, तो यह ले संभवतः पक्षपातपूर्ण राय के रूप में: जेआरबी दस्तावेज़ीकरण को देखते हुए, ऐसा लगता है कि जावा के साथ जेआरबीआईएस एकीकरण थोड़ा अधिक बोझिल है, क्योंकि जावा रूबी में ग्रोवी में अधिक देशी है; इसलिए, जेआरबी में, आपके पास बहुत सारे जावा-विशिष्ट कीवर्ड और विधियां हैं (उदा। java_import, java_send)। बस रखें, ग्रोवी विशेष रूप से जावा दुनिया में लक्षित एक भाषा है, जबकि जेआरबीई अच्छी तरह से है, रूबी ने जेवीएम पर रखा है।

    Grails में बनाया JUnit परीक्षण है।

    प्रदर्शन और scalability के बारे में ज्यादा नहीं कह सकते हैं, लेकिन जावा के साथ अच्छा एकीकरण को देखते हुए, एक हमेशा जावा में प्रदर्शन महत्वपूर्ण भागों में लिख सकते हैं जब ग्रूवी बहुत धीमी है।

    +0

    धन्यवाद, आपने पहले बिंदु का सामना किया है। क्या आपको इस एकीकरण का अधिक अनुभव है? कोड स्निपेट की तुलना उपयोगी हो सकती है। जुनीट के लिए, मुझे लगता है कि यह कार्यात्मक परीक्षण की तुलना में यूनिट परीक्षण की दिशा में अधिक तैयार है; कृपया मुझे सुधारें अगर मैं गलत हूं। यदि मैं सही ढंग से समझता हूं, प्रदर्शन कारणों से जावा में कोड को फिर से लिखना एक विकल्प है जो ग्रोवी या जेआरबी का उपयोग कर रहा है। फिर; कृपया मुझे सुधारें अगर मैं गलत हूं। – Armand

    +0

    एलिसन: ग्रोवी जावा के साथ सहजता से एकीकृत करता है, जावा ऑब्जेक्ट की एक विधि को बुलाते हुए ग्रोवी विधि का एक कोड स्निपलेट, ग्रोवी कॉलिंग ग्रोवी या जावा कॉलिंग जावा जैसा दिखता है। कार्यात्मक परीक्षण के बारे में: आप सही हैं, लेकिन यह लिंक आपको मदद करता है: http://www.grails.org/Functional+Testing –

    +0

    जावा में रीवाइटिंग JRuby में भी एक विकल्प है, निश्चित रूप से, लेकिन ग्रोवी का वाक्यविन्यास (जो अपेक्षाकृत करीब है जावा के लिए) और निर्बाध एकीकरण Grails –

    3

    अंत में, आप व्यक्तिगत पसंद, दो भाषाओं के साथ आराम और संसाधनों की उपलब्धता पर निर्णय लेने जा रहे हैं, लेकिन अंत में, तथ्य यह है कि ग्रिल स्प्रिंग पर आधारित है, यह निष्कर्ष निकाला है कि यह मेरे लिए सही विकल्प था। मैं जानता था कि यदि सब और विफल रहा है मैं मौजूदा जावा घटकों के साथ की कोशिश की और सच स्प्रिंग फ्रेमवर्क एकीकरण के

    +0

    धन्यवाद में थोड़ा आसान बना सकता है। मैं थोड़ी उम्मीद कर रहा था कि एक उद्देश्य निर्णय लेना संभव होगा, लेकिन आप सही हो सकते हैं। – Armand

    20

    दोनों को आजमाएं, और उस भाषा और पर्यावरण को चुनें जो आपको सबसे अच्छा लगे। यह सच है कि बॉक्स के बाहर फैले ग्रेल्स जावा एकीकरण के लिए अधिक उपयुक्त हैं, लेकिन कई घटक रेल के साथ एकीकरण से रूबी कोड की कुछ पंक्तियां हैं। रेल 3 एक महान रिलीज है जिसे आपको ActiveRecord का उपयोग करने की आवश्यकता नहीं है, वास्तव में इसके बजाय आपके मॉडल के लिए हाइबरनेट का उपयोग करना मुश्किल होगा। SQLMap और NoSQL डेटाबेस के लिए डेटामैपर, मोंगोमैपर और डेटाबेस एडेप्टर के पूरे मेजबान को भी देखें।

    इसके अलावा, जुनीट! = कार्यात्मक परीक्षण। इसके बजाय, एक एकीकृत ब्राउज़र स्वचालन परीक्षण अनुभव के लिए ककड़ी + ककड़ी-रेल + कैपिबारा + सेलेनियम पर एक नज़र डालें। उदाहरण के लिए https://github.com/elabs/front_end_testing पर एक नज़र डालें जो इस ढेर को प्रदर्शित करता है।

    मैं सुझाव दूंगा कि रूबी वेब एकीकरण भाषा के रूप में बेहतर अनुकूल है, और जेआरबी ने जावा के साथ एकीकरण करने के साथ-साथ आपके लिए उपलब्ध गैर-जावा पुस्तकालयों की संपत्ति बनाने के लिए सुखद बनाने के मीठे स्थान को भी हिट किया है। ऐसा मत सोचो कि ग्रोवी स्वचालित रूप से जीतता है क्योंकि यह जावा के "करीब" है। कभी-कभी किसी समस्या को हल करने के तरीके पर एक नया रूप देखने के लिए आपको एक ताज़ा वातावरण में कदम उठाने की आवश्यकता होती है।

    प्रकटीकरण: जेआरबी टीम के सदस्य के रूप में मेरी पूर्वाग्रह मेरे उत्तर में स्पष्ट है।

    +4

    वाह, 15 अपवॉट्स (अब तक) ?! किस लिए? - प्रश्नकर्ता ने चार मानदंड निर्दिष्ट किए हैं जो समाधान का उत्तर देंगे। - हालांकि, आप केवल उन (कार्यात्मक परीक्षण) में से एक का जवाब दे रहे हैं। - जावा एंटरप्राइज़ टेक्नोलॉजीज को एकीकृत करने के बारे में क्या है जैसे कि जेएमएस (यह प्रश्न में एक आवश्यकता है)? सबसे अधिक संभावना है, JRuby से उन लोगों के लिए एक लंबी दूरी है। – robbbert

    +0

    (समझदारी से पक्षपातपूर्ण) प्रतिक्रिया के लिए धन्यवाद। जैसा कि @robbbert कहते हैं, हालांकि, यह उल्लिखित सभी बिंदुओं को संबोधित नहीं करता है। साथ ही, मुझे पता है कि जुनीट कार्यात्मक परीक्षण के लिए इतना नहीं है; शायद यह @ ammoQ के जवाब पर एक टिप्पणी होनी चाहिए? – Armand

    +1

    @robbert +1। स्केलेबिलिटी और प्रदर्शन के बारे में क्या? http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ इसके अलावा Grails सिंटैक्स में जावा के नजदीक नहीं बल्कि एकीकरण के आसान में भी है। यह वसंत समर्थित वास्तुकला भयानक और उपयोग करने में बहुत आसान है। –

    4
    1. phoet के रूप में कहा, Grails प्रथम श्रेणी के वसंत समर्थन हासिल है, तो यह आम तौर पर वसंत पुस्तकालयों एकीकृत करने के लिए बहुत आसान है - कि क्या कई प्लग JMS प्लगइन सहित, करते हैं।

      जावा कोड या तो JAR में प्रदान किया जा सकता है या प्रोजेक्ट की src/java निर्देशिका में डाल दिया जा सकता है। ग्रोवी कक्षाएं जावा कक्षाओं का संदर्भ दे सकती हैं जो ग्रोवी कक्षाओं का संदर्भ दे सकती हैं। यह बहुत सहज है।

    2. Grails को विभिन्न प्लगइन के माध्यम से HtmlUnit, सेलेनियम-आरसी & वेबड्राइवर के लिए समर्थन है। Geb इस समय बहुत रुचि रखते हैं, खासकर जब स्पॉक के साथ मिलकर।

    3. उनका परीक्षण करें। मुझे नहीं पता कि कोई हालिया तुलना है या नहीं, लेकिन प्रदर्शन आमतौर पर आपके आवेदन पर निर्भर करता है। http://grails.org/ और http://beta.grails.org/ दोनों एक ही मशीन पर चल रहे हैं - और दोनों Grails अनुप्रयोग हैं।

    4. मैं टेराकोटा के माध्यम से क्लस्टर ग्रिल को क्लस्टर करना बहुत आसान बनाता हूं। यदि आप चाहें तो आप इसे सादे टोमकैट के साथ भी कर सकते हैं। वितरित कैशिंग के विकल्प हैं - स्प्रिंगसोर्स की अपनी खुद की (वाणिज्यिक) पेशकश जेमफायर के रूप में है।

    आशा है कि मदद करता है, और पूर्ण प्रकटीकरण के हित में मैं Grails टीम का सदस्य हूं।

    1

    2012 में इस सवाल में रुचि रखते नए चेहरे के लिए ...

    "@CompileStatic के साथ, ग्रूवी के प्रदर्शन के बारे में 1-2 बार जावा की तुलना में धीमी है, और ग्रूवी बिना, यह लगभग 3-5 गुना धीमी है (...) इसका मतलब है कि ग्रोवी उन अनुप्रयोगों के लिए तैयार है जहां प्रदर्शन जावा के साथ कुछ हद तक तुलनीय होना चाहिए।"

    प्रदर्शन टेस्ट:। ग्रूवी 2.0 बनाम जावा http://java.dzone.com/articles/groovy-20-performance-compared

    और लेखक के अलावा, मैं 2008 के बाद से ग्रूवी का उपयोग किया है बड़ी सफलता, सीवी के लिए न केवल के साथ, बस काम समय के कारोबार की जरूरत में किया बनाने के लिए प्रदर्शन आप जो करना चाहते हैं उससे संबंधित है।

    एकीकरण के बारे में, Grails वास्तव में "वह अच्छा" है। मुझे मौजूदा पुस्तकालयों के साथ इसे एकीकृत करने के लिए एक कदम आगे बढ़ाने की आवश्यकता नहीं है। इसके विपरीत, वसंत-आधारित Grails की प्रकृति ने नौकरी को और भी आसान बना दिया।

    उन लोगों के लिए जो माइक्रो-बेंच के बारे में शिकायत कर सकते हैं आर्क और वास्तविक उपयोग के मामलों, यहां कुछ हद तक पुराना है (Grails 1.8) लेकिन वेब ढांचे के साथ अच्छा (Grails 1.3.7): http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/

    आशा है कि इससे मदद मिलती है!

    पीएस .: मैं हाल ही में जेआरबी और अन्य वास्तव में गतिशील जेवीएम भाषाओं के साथ बेंचमार्क देखना चाहता हूं।

    संबंधित मुद्दे