2009-05-30 5 views
14

पृष्ठभूमि: मैं रूबी (रेल नहीं) में एक 'मानक' (विशेष नहीं) वेब अनुप्रयोग लिख रहा हूं और मुझे तैनाती के बारे में सोचना शुरू करना है।रूबी वेब अनुप्रयोगों के लिए JRuby का उपयोग करें? यह इसके लायक है?

तो मैं रूबी वेब अनुप्रयोगों को तैनात करने के लिए जेआरबीई का उपयोग करने के लिए बहुत सी सिफारिशें सुन रहा हूं, भले ही आपको वास्तव में जावा पुस्तकालयों की आवश्यकता हो या नहीं। यह कितना सच है? क्या गति के लिए जावा कार्यान्वयन का उपयोग करना उचित है? क्या मैं ऐसा करके कुछ और हासिल करूंगा? क्या मैं किसी भी मुद्दे पर चलेगा?

पीएस: मुझे जावा को अच्छी तरह से नहीं पता है, इसलिए "आप जावा में इसके कुछ हिस्सों को लिख सकते हैं" बहुत उपयोगी नहीं है।

उत्तर

21

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

जेआरबीई वास्तविक सी कार्यान्वयन से थोड़ा तेज है, लेकिन यह वास्तविक धागे का समर्थन करता है, जबकि आधिकारिक कार्यान्वयन इसे प्राप्त करने में थोड़ा संघर्ष कर रहा है (यह अभी भी Green Threads का उपयोग करता है)। JRuby से जावा थ्रेड का उपयोग करना काफी छोटा है, भले ही आपको जावा के साथ अपने कोड को जोड़ने की आवश्यकता होगी (थोड़ा DI के साथ, यह युग्मन केवल एक बार होगा)।

एक अन्य लाभ: रनटाइम उपकरण। जावा, प्लेटफ़ॉर्म के रूप में, किसी भाषा की बजाय, बहुत रनटाइम टूल के लिए समस्याओं का निदान करने और एप्लिकेशन की स्थिति (प्रोफाइलर्स, जेकोनोल, और इसी तरह) की जांच करने में सहायता के लिए है।

Twitter इंजीनियर भी उल्लेख किया है कि रूबी वीएम थोड़े मुसीबत लंबे रहते थे प्रक्रियाओं के लिए एक वातावरण में किया जा रहा है, जबकि JVM, उस पर बहुत अच्छा है, क्योंकि यह पिछले दस वर्षों से अधिक कि के लिए अनुकूलित किया गया है है।

रूबी के पास हाल ही में एक छोटी सी सुरक्षा समस्या थी, जिसने जेआरबी के कार्यान्वयन को प्रभावित नहीं किया।

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

+1

बहुत बढ़िया जवाब यह है कि वास्तव में क्या मुझे पता है की जरूरत है। धन्यवाद। :) –

+3

ट्विटर डेवलपर्स 'रूबी पर लेते हैं कुछ हद तक विशिष्ट है। अगर समस्या यह थी कि वे क्या कह रहे थे, समझदार बात JRuby के साथ जाना होगा। उन्होंने अपने रूबी कोड को जावा में नहीं ले जाया - वे इसे स्कैला में फिर से लिखते हैं। ऐसा लगता है कि एमआरआई के मुकाबले उनकी समस्या उनके कोड के साथ अधिक थी। – Chuck

+4

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

6

मैं दैनिक आधार पर जेआरबी का उपयोग करता हूं और प्यार करता हूं, लेकिन मेरा सुझाव है कि आप एमआरआई (ए.के.ए. सी-रूबी) का उपयोग करें जब तक कि आपको जरुबी की वास्तविक आवश्यकता न हो। JRuby प्रयोग करने के लिए

कारण:

  1. जावा एकीकरण
  2. प्रतिबंधित पर्यावरण (अपने मशीन जावा माणिक नहीं द्वारा स्थापित किया गया है और आप रूट नहीं है)
  3. प्रतिबंधित पर्यावरण (आप गहरे लाल रंग का स्थापित किया है लेकिन इसलिए जवाहरात आप की जरूरत) स्थापित नहीं कर सकता जड़ नहीं है
  4. आप रूबी 1.8 प्रदर्शन की सीमाओं पर पहुंचने के 1.9
उपयोग नहीं कर सकते

आपने जो वर्णन किया है उससे, आपके पास उपरोक्त कारणों में से कोई भी नहीं है।

सी-रूबी 1।सी-रूबी 1.8 पर 9 में महत्वपूर्ण प्रदर्शन सुधार है। मैंने अभी तक पढ़ना नहीं है (या खुद के लिए खोज) कैसे सी-रूबी 1.9 जेआरबी 1.8 या जेआरबी 1.9 के साथ तुलना करता है। किसी भी प्रकार में, आपके पास कोई प्रदर्शन समस्या नहीं है (अभी तक) इसलिए इसके बारे में चिंता न करें।

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

जैसा ऊपर बताया गया है, रूबी रत्न जिनके पास सी एक्सटेंशन हैं, JRuby के तहत स्थापित नहीं किए जा सकते हैं। उम्मीद है कि यह भविष्य में बदल जाएगा यदि रूबी सी एक्सटेंशन एफएफआई का उपयोग करते हैं।

http://kenai.com/projects/ruby-ffi/pages/Home

http://isitjruby.com/

+0

वैसे मैं किसी भी सी एक्सटेंशन का उपयोग नहीं कर रहा हूं जिसमें जावा समकक्ष नहीं हैं, इसलिए यह कोई समस्या नहीं है। मेरे पास इस बिंदु पर जेआरबीई का उपयोग करने के लिए दो प्रोत्साहन हैं: 1) असली धागे बनाम "नकली" धागे जो एमआरआई और याएआरवी उपयोग करते हैं (हालांकि मुझे लगता है कि यह एक सौदा बहुत बड़ा नहीं है), और 2) जावा पुस्तकालयों तक पहुंच (जो, मैंने ऊपर बताया है, इसका मतलब है कि मैं जावा-विशिष्ट डेटाबेस, या ऐसा कुछ भी उपयोग कर सकता हूं)। क्या एमआरआई/याएआरवी मैच कर सकता है? –

+0

यदि आप बहु-थ्रेडेड जाने की सोच रहे हैं, तो मुझे लगता है कि जेआरबी के वास्तविक धागे एक बड़े सौदे हैं। सी-रूबी के लिए वैकल्पिक डिज़ाइन के साथ, आप पृष्ठभूमिआरबी http://backgroundrb.rubyforge.org/ या अन्य "ऑफलोडिंग" तकनीकों जैसे विश्वसनीय-msgstr http://github.com/assaf/reliable-msg का उपयोग कर सकते हैं/पेड़/मास्टर – Rob

+0

हम्म, पृष्ठभूमिआरबी दिलचस्प लग रहा है, मैं एक नज़र डालूंगा! धन्यवाद! –

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

  • कोई संबंधित समस्या नहीं^_^