Nashorn gegen Spidermonkey
Bemerkte ich ubuntu 10.04 entfernt die spidermonkey-Paket. Rhino sieht aus wie es ist immer noch da, obwohl. Was sind die Unterschiede zwischen rhino und spidermonkey (neben welcher Sprache sind Sie geschrieben). Und warum haben Sie entfernen Buntbarsch?
InformationsquelleAutor der Frage Tyler Gillies | 2010-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich fürchte, der Unterschied ist die Sprache, die Sie geschrieben sind, oder was es bedeutet. Die Leute benutzen C/C++ zu schreiben, die alle möglichen Dinge (wie Firefox), während Java ist am weitesten verbreitet in der Anwendung-Server. Von http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29:
Gibt es drei wichtige Teile hier. Erstens, es gibt keine DOM (gilt auch für Buntbarsch). Zweitens -, server-Seite ist die beabsichtigte Verwendung. Sie sollen in der Lage sein zu verwenden Rhino in Ihrem großen enterprise-y-Anwendung für die Automatisierung von Zeug auf eine weitere ad-hoc-basis. Endlich, das Javascript wird eine Klasse genau wie der rest des Java-Klassen-Hierarchie, und Sie können interagieren mit Java-Klassen (siehe code-Beispiel auf dieser Seite).
Kurz gesagt, Sie könnte sehr leicht zu manipulieren Ihre POJOs/JPA-basierte Objekte/Message Beans/was auch immer Sie wollen, nennen Sie Ihre "enterprise" - Java-Klasse, alle aus innerhalb einer javascript-Runtime durch Rhino. Vergleichen Sie diese für Jython, wo Sie können die Verwendung von Python-syntax und-Klassen für die Interaktion mit Java. Praktisch, wenn Sie einige JavaScript/Python saust munter rund um das Büro mit nichts zu tun.
Buntbarsch dagegen ist mehr wie LUA. Es ist eine Skriptsprache. Was ist der Unterschied? Naja, ich bezweifle, dass Sie bekommen Zugang zu printf direkt, für. Anstatt Zugriff auf Java-Klassen direkt aus, bekommen Sie nicht, Zugriff auf C/C++ - Klassen gerade aus. Vielmehr haben Sie die Verwendung von C/C++ Programm zusätzliche Funktionen der Sprache.
Kurz -, Rhino-JS erlaubt die Interaktion mit Ihrem code. SpiderMonkey ist mehr wie ein do-it-yourself-compiler kit mit dem zusätzlichen Vorteil, dass eine standard-Sprache, die eine Menge Leute wissen bereits gebaut worden, und Sie müssen nur fügen Sie Ihre Anpassungen.
InformationsquelleAutor der Antwort
Da habe ich große Schwierigkeiten basic-Beispiele zu JavaScript shells/Dolmetscher, vor allem
rhino
auf Ubuntu - werde ich das hier posten...Im Grunde war ich ein wenig verwirrt, auf was Sie installieren und welche Art von Befehl Linie zu nennen 🙂
Zunächst fand ich Bug #705339 in rhino (Ubuntu): "Rhino-shell stürzt mit NullPointerException" - und erkannte, dass OpenJDK tatsächlich installiert eine
rhino.jar
Java-Archiv. Also, wenn Sie dass haben, können Sie sofort in der bash-terminal shell:Und das ist alles gut genug für grundlegende Dinge... Jedoch, wenn Sie verwenden möchten, DOM
window
Objekt, odersetTimeout()
Funktion - im wesentlichen sind diese "browser-spezifische Implementierungen" (fürsetTimeout
finden Sie auch ALSO:7286178), und eine scripting-engine, ohne einen browser wäre nicht "wissen" über Sie.Jedoch, zumindest für
rhino
das ist behoben durch die Envjs die browser-Umgebung " Bibliothek, deren Neueste Version - 1.2 fürrhino
ist env.rhino.js (sehen ALSO:6170676 fürsetTimeout
imrhino
).Also können wir tun so etwas wie dieses:
... und ooops - es funktioniert nicht 🙂 Aber, dass geklärt wird, in Nicht ausführen können 1.2 aufgrund getCurrentContext Fehler. - Env.js | Google Groups:
Glücklicherweise, anstelle der Gebäude aus den Quellen, in Ubuntu können wir direkt tun:
... da die rhino filelist Staaten, die dieses Paket installiert
js-1.7R2.jar
. Das Paket installiert auch ein Skriptrhino
die im wesentlichen ein shell-wrapper für diese Java-Archive (sieheless $(which rhino)
) - so können wir bequem benutzen, anstattjava -jar ...
etc:Jedoch nun versuchen, auch diese gleichen Linien wie ein Skript, nennen wir es
test.js
:und versuchen Sie den Aufruf
rhino
:Oh je - der Fehler wieder Auftritt, was nun ? 🙂 Gut, zum Glück, auch das ist etwas, was man im Envjs Guide (Hinweis: erlauben Sie javascript für diese Seite, da sonst der code wird kaum sichtbar sein) - insbesondere:
Recht - so endlich, wir fügen Sie einfach diese Optimierung und die Einstellung:
... endlich funktioniert es 🙂 EDIT: mit
env.rhino.1.2.js
können Sie auchconsole.log()
schreiben auf stdout. EDIT: laufen dierhino
Java-debugger finden Sie unter verwenden vonless $(which rhino)
wo sind die besonderen .Gläser installiert, und rufen Sie dannjava
direkt (dierhino
Skript verwendet eine andere Reihe von command line switches, und so nicht überzeugt werden kann, rufen Sie den debugger):Wenn Sie versuchen, führen Sie das gleiche Skript nun mit
spidermonkey
(siehe auch PPA Anweisungen in Beste Weg, um spidermonkey js auf Ubuntu 11.04?), erhalten Sie:... das ist
spidermonkey
wird nicht Arbeit mitenv.rhino.1.2.js
.Gut, hoffe, das hilft jemand,
Prost!
InformationsquelleAutor der Antwort sdaau
Basierend auf den Sprachen, die Sie wurden entwickelt, Entwickler muss explizit behandeln-Speicher mit spidermonkey. Als Nashorn wurde in java entwickelt, die mit automatischer garbage collection und JVM [ Java Virtual Machine ] wurden optimiert für eine schnellere Ausführung als c oder c++ aus Java 1.6 Version.
InformationsquelleAutor der Antwort Ratna Dinakar