मैंने देखा कि ubuntu 10.04 spidermonkey पैकेज को हटा दिया। राइनो ऐसा लगता है कि यह अभी भी वहां है। गैंडो और स्पाइडरमोनकी के बीच अंतर क्या हैं (इसके अलावा वे किस भाषा में लिखे गए हैं)। और उन्होंने spidermonkey क्यों हटा दिया?rhino बनाम spidermonkey
उत्तर
मुझे डर है कि अंतर वह भाषा है जिसे वे लिखे गए हैं, या इसका क्या अर्थ है। लोग सभी प्रकार की चीजें (फ़ायरफ़ॉक्स की तरह) लिखने के लिए सी/सी ++ का उपयोग करते हैं जबकि जावा एप्लिकेशन सर्वर में सबसे अधिक प्रचलित है। http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29 से:
राइनो जावा वर्गों में जावास्क्रिप्ट स्क्रिप्ट बदल देता है। राइनो दोनों संकलित और व्याख्या मोड में काम करता है। इसका उपयोग सर्वर-साइड अनुप्रयोगों में किया जाना है, इसलिए ब्राउज़र ऑब्जेक्ट्स के लिए कोई अंतर्निहित समर्थन नहीं है जो आमतौर पर जावास्क्रिप्ट के साथ जुड़े हुए हैं।
यहां तीन महत्वपूर्ण भाग हैं। सबसे पहले, कोई डोम नहीं है (स्पाइडरमोन्की के भी सच है)। दूसरा, सर्वर पक्ष इच्छित उपयोग है। आप अपने बड़े एंटरप्राइज़-वाई एप्लिकेशन में राइनो को अधिक विज्ञापन-प्रसार आधार पर स्वचालित करने के लिए उपयोग करने में सक्षम होना चाहिए। अंत में, जावास्क्रिप्ट जावा क्लास पदानुक्रम के बाकी हिस्सों की तरह एक वर्ग बन जाता है और आप जावा कक्षाओं के साथ बातचीत कर सकते हैं (उस पृष्ठ पर कोड नमूना देखें)।
संक्षेप में, आप आसानी से अपने पीओजेओ/जेपीए-आधारित ऑब्जेक्ट्स/मैसेज बीन्स/जो भी आप अपने "एंटरप्राइज़" जावा क्लास को कॉल करना चाहते हैं, सब कुछ आसानी से राइनो के माध्यम से चलने वाले जावास्क्रिप्ट के भीतर से जोड़ सकते हैं। इसे ज्योथन से तुलना करें, जहां आप जावा के साथ बातचीत करने के लिए पाइथन सिंटैक्स और कक्षाओं का उपयोग कर सकते हैं। यदि आपके पास कुछ जावास्क्रिप्ट/पायथन है जो कार्यालय के चारों ओर लात मारने के लिए कुछ भी नहीं है तो हँडी करें।
इसके विपरीत स्पाइडरमोन्की LUA की तरह अधिक है। यह एक पटकथा भाषा है। क्या फर्क पड़ता है? खैर, मुझे संदेह है कि आप सीधे एक के लिए printf तक पहुंच प्राप्त कर सकते हैं। सीधे जावा कक्षाओं तक पहुंचने में सक्षम होने के बजाय, आपको सीधे सी/सी ++ कक्षाओं तक पहुंच नहीं मिलती है। इसके बजाय, आप भाषा की अतिरिक्त विशेषताओं के कार्यक्रम के लिए सी/सी ++ का उपयोग करते हैं।
संक्षेप में, राइनो जेएस को आपके कोड से बातचीत करने की अनुमति देता है। स्पाइडरमोन्की अतिरिक्त लाभ के साथ एक ऐसा स्वयं-कंपाइलर किट की तरह है कि एक मानक भाषा बहुत से लोगों को पता है कि पहले से ही बनाया गया है और आपको बस अपनी अनुकूलन जोड़ने की जरूरत है।
धन्यवाद - दिलचस्प और सहायक। लेकिन उबंटू में अक्सर एक विशेष समस्या का समाधान करने के लिए एक से अधिक पैकेज होते हैं। इसलिए प्रश्न बना रहता है: "उन्होंने स्पाइडरमोनकी क्यों हटा दी"? – nealmcb
@nealmcb मैं ईमानदारी से यकीन नहीं कर रहा हूँ। शायद उबंटू के लिए पैकेज बनाए रखने वाले ने ऐसा करना बंद कर दिया और उन्होंने इसे छोड़ दिया? मेरा मानना है कि "मुख्य" में होने की आवश्यकता पर्याप्त नियमित रखरखाव और अपस्ट्रीम ट्रैकिंग आदि है। यह कुछ समय बाद मैंने लिखा है, और चूंकि मैंने उबंटू का उपयोग किया है, लेकिन जब मैंने किया, तो मुझे याद है कि कई पैकेज हैं रखरखाव के मुद्दों के कारण "मुख्य" से "ब्रह्मांड" में गिरा दिया गया। मुझे संदेह है कि पीपीए के उदय को देखते हुए, यदि आप चाहें तो शायद स्पाइडरमोन्की पकड़ लें। –
उन भाषाओं के आधार पर जिन्हें विकसित किया गया है, डेवलपर को स्पिडर्मोनकी का उपयोग करके स्मृति को स्पष्ट रूप से संभालने की आवश्यकता है। जैसा कि जावा में गैंडो विकसित किया गया है जिसमें स्वचालित कचरा संग्रह शामिल है और जावा 1.6 संस्करण से सी या सी ++ की तुलना में जेवीएम की [जावा वर्चुअल मशीन] को तेज निष्पादन के लिए ट्यून किया गया है।
-1 झूठी कथन के लिए: "डेवलपर को स्पष्ट रूप से संभालने की आवश्यकता है spidermonkey का उपयोग कर स्मृति "। जावास्क्रिप्ट एक कचरा-एकत्रित भाषा है, भले ही इसमें किस भाषा को लागू किया गया हो। स्पिडर्मोन्की खोल में विशेष रूप से निम्नलिखित कार्य को वैश्विक वस्तु पर उजागर किया गया है: gczeal (स्तर) - "कचरा कलेक्टर कितना उत्साही होना चाहिए"। तो स्पष्ट रूप से Spidermonkey भी कचरा संग्रह है। साथ ही, कथन पर उद्धरण वांछित है: "जावा 1.6 संस्करण से सी या सी ++ की तुलना में जेवीएम को तेजी से निष्पादन के लिए ट्यून किया गया है"। अधिकांश मामलों में यह सच नहीं है, http://bit.ly/fyyrTX – jbeard4
के अनुसार लिंक प्राप्त होने के बाद अपडेट हो जाएगा .. जानकारी के लिए धन्यवाद –
https://developer.mozilla.org/en/SpiderMonkey_Garbage_Collection_Tips यह लिंक स्पष्ट रूप से देता है स्मृति को संभालने के लिए कुछ सुझाव! साथ ही, मुझे लगता है कि प्रश्न एपीआई के साथ एकीकृत करने के बारे में था। कृपया java6 -server बनाम C++ –
जब से मैं बड़ी कठिनाइयों जावास्क्रिप्ट गोले/दुभाषियों, विशेष रूप से rhino
के बारे में बुनियादी उदाहरण खोजने है, Ubuntu पर - मैं इस यहाँ मूल रूप से पोस्ट करेंगे ...
, मैं थोड़ा क्या स्थापित करने के लिए पर उलझन में था, और कॉल करने के लिए किस प्रकार की कमांड लाइन :)
सबसे पहले, मुझे Bug #705339 in rhino (Ubuntu): “Rhino shell crashes with NullPointerException” मिला - और महसूस किया कि ओपनजेडीके वास्तव में rhino.jar
जावा संग्रह स्थापित करता है। तो अगर आपको लगता है कि है, तो आप तुरंत बैश टर्मिनल खोल में कर सकते हैं:
$ java -jar /usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar
Rhino 1.7 release 2 2010 11 17
js> print("answer " + 42.0);
answer 42
js> quit()
और यह सब बुनियादी सामान के लिए काफी अच्छा है ...हालांकि, यदि आप DOM window
ऑब्जेक्ट का उपयोग करना चाहते हैं, या setTimeout()
फ़ंक्शन - अनिवार्य रूप से, वे "ब्राउज़र विशिष्ट कार्यान्वयन" (setTimeout
के लिए, SO:7286178) देखें, और ब्राउज़र के बिना एक स्क्रिप्टिंग इंजन उनके बारे में "पता" नहीं होगा ।
हालांकि, कम से कम rhino
के लिए, कि Envjs 'ब्राउज़र पर्यावरण' पुस्तकालय, जिसका Latest release - 1.2rhino
के लिए env.rhino.js है (rhino
में setTimeout
के लिए SO:6170676 देखें) द्वारा उपचार किया जाता है।
तो हम कुछ इस तरह कर सकते हैं:
wget http://www.envjs.com/dist/env.rhino.1.2.js
$ java -jar /usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar
Rhino 1.7 release 2 2010 11 17
js> load('env.rhino.1.2.js');
js: "env.rhino.1.2.js", line 1247: uncaught JavaScript runtime exception: TypeError: Cannot call property getCurrentContext in object [JavaPackage org.mozilla.javascript.Context]. It is not a function, it is "object".
at env.rhino.1.2.js:1247
at <stdin>:2
js> ^C
... और ओह - यह :) काम नहीं करता है हालांकि, उस Can't run 1.2 due to getCurrentContext error. - Env.js | Google Groups में स्पष्ट किया जाता है:
क्षमा करें, Envjs कर सकते हैं जावा के साथ बंडल राइनो के साथ भाग नहीं है। आप यहां से 1.7rc2 उपलब्ध का उपयोग करना होगा:
शुक्र है, बजाय उबंटू में स्रोत से निर्माण, की हम सीधे कर सकते हैं:
sudo apt-get install rhino
... के बाद से rhino filelist राज्यों के रूप में, यह पैकेज js-1.7R2.jar
स्थापित करता है। पैकेज भी एक स्क्रिप्ट rhino
है, जो अनिवार्य इन जावा संग्रह के लिए एक खोल आवरण है स्थापित करता है (less $(which rhino)
देखें) - तो हम आसानी से उपयोग कर सकते हैं, बजाय java -jar ...
लिख-लिख कर आदि:
$ rhino
Rhino 1.7 release 2 2010 11 17
js> load('env.rhino.1.2.js'); // takes a while to load
[ Envjs/1.6 (Rhino; U; Linux i386 2.6.38-11-generic; en-US; rv:1.7.0.rc2) Resig/20070309 PilotFish/1.2.13 ]
js> print("loaded " + 1.2);
loaded 1.2
js> window;
[Window]
js> ^C
हालांकि, अब एक स्क्रिप्ट के रूप में इन उसी तर्ज सहित कोशिश, चलो यह test.js
कॉल:
load('env.rhino.1.2.js'); // takes a while to load
print("loaded " + 1.2);
print(window);
और उस पर rhino
बुला की कोशिश:
$ rhino test.js
loaded 1.2
js: uncaught JavaScript runtime exception: ReferenceError: "window" is not defined.
ओह प्रिय - फिर से विफल रहता है, अब क्या? :) खैर, शुक्र है, यहां तक कि यह कुछ हद तक पर में Envjs Guide संकेत दिया है (ध्यान दें: उस पृष्ठ के लिए जावास्क्रिप्ट की अनुमति है, अन्यथा कोड मुश्किल से दिखाई जाएगी) - विशेष रूप से:
# रनिंग env.rhino। जेएस एक स्क्रिप्ट या कमांड लाइन
# ऑप्टिमाइज़ेशन सेटिंग
जावा -jar lib/js.jar -opt -1 myscript पर ध्यान दें।js
सही - तो अंत में, हम तो बस इस अनुकूलन सेटिंग जोड़ने के लिए, और:
$ rhino -opt -1 test.js
[ Envjs/1.6 (Rhino; U; Linux i386 2.6.38-11-generic; en-US; rv:1.7.0.rc2) Resig/20070309 PilotFish/1.2.13 ]
loaded 1.2
[Window]
... अंत में यह काम करता है :) संपादित करें: env.rhino.1.2.js
साथ, आप भी console.log()
का उपयोग stdout में लिखने के लिए कर सकते हैं । संपादित करें: rhino
जावा डिबगर चलाने के लिए, less $(which rhino)
का उपयोग करके देख जहां विशेष .jars स्थापित कर रहे हैं, और फिर java
सीधे कॉल करने के लिए (rhino
स्क्रिप्ट कमांड लाइन स्विच का एक अलग सेट का उपयोग करता है, और इसलिए डिबगर कॉल करने के लिए राजी नहीं किया जा सकता है) :
java -cp /usr/share/java/js.jar org.mozilla.javascript.tools.debugger.Main test.js
आप spidermonkey
साथ अब एक ही स्क्रिप्ट चलाने के लिए प्रयास करते हैं (Best way to get spidermonkey js on Ubuntu 11.04? में भी पीपीए निर्देश देखें), आप मिल जाएगा:
$ js test.js
env.rhino.1.2.js:1247: ReferenceError: Packages is not defined
... यानी spidermonkey
env.rhino.1.2.js
के साथ काम करेगा।
ठीक है, उम्मीद है कि इस मदद करता है किसी को,
चीयर्स!
आपने मेरा दिन बनाया, धन्यवाद! – Rafa
- 1. rhino एम्बेडिंग
- 2. assertWas rhino mocks में कॉल किया गया
- 3. उबंटू पर spidermonkey js पाने का सबसे अच्छा तरीका?
- 4. स्पाइडरमोन्की बनाम जावास्क्रिप्ट बनाम बनाम?
- 5. बनाम बनाम
- 6. : बनाम बनाम ::
- 7. Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार
- 8. LINQ बनाम लैम्ब्डा बनाम अज्ञात तरीके बनाम बनाम
- 9. एनएचबीर्नेट एचक्यूएल बनाम मानदंड बनाम क्वेरीरी बनाम लिंक बनाम। प्रदर्शन
- 10. डीकोड और व्याख्या को बनाम बनाम बनाम बनाम
- 11. इनलाइन बनाम __inline बनाम __inline__ बनाम __forceinline बनाम?
- 12. एपीआई बनाम टूलकिट बनाम फ्रेमवर्क बनाम लाइब्रेरी
- 13. pymssql बनाम pyodbc बनाम adodbapi बनाम ...
- 14. एटमिकोस बनाम जेओटीएम बनाम बिट्रोनिक्स बनाम?
- 15. न्यूट बनाम एमबीयूनीट बनाम एमएसटीएस्ट बनाम xUnit.net
- 16. विधि बनाम फंक्शन बनाम प्रक्रिया बनाम कक्षा?
- 17. .NET बनाम एएसपी.नेट बनाम सीएलआर बनाम एएसपी
- 18. 'विधि' बनाम 'संदेश' बनाम 'फ़ंक्शन' बनाम '???'
- 19. अक्ष 2 बनाम वसंत-बनाम बनाम जर्सी
- 20. एसीई बनाम बूस्ट बनाम पोको बनाम WxWidgets
- 21. control.BeginInvoke() बनाम डिस्पैचर बनाम SynchronizationContext बनाम .. - विश्वसनीयता
- 22. ड्रॉप ... बनाम बनाम
- 23. रेल बनाम बनाम
- 24. _Expand बनाम बनाम जीएनयू
- 25. एफ़टीपी कमांड्स बनाम बनाम
- 26. गिट में बनाम बनाम
- 27. फ़ाइल बनाम ब्लॉक बनाम
- 28. क्रिस्टलस्पेस बनाम इरलिच बनाम .....?
- 29. एएसएसईआर बनाम एटलसैट बनाम
- 30. NetSqlAzMan बनाम AzMan बनाम (?????)
संबंधित उबंटू बग रिपोर्ट पर चर्चा की गई [यहां] (https://bugs.launchpad.net/ubuntu/+source/xulrunner-1.9.2/+bug/536950) – richaux