Rhino (JavaScript-Engine) - Rhino (JavaScript engine)
| Entwickler | Mozilla Foundation , Mozilla Corporation |
|---|---|
| Stabile Version | 1.7.13 / 2. September 2020
|
| Repository |
|
| Geschrieben in | Java |
| Betriebssystem | Plattformübergreifend |
| Plattform | Java virtuelle Maschine |
| Typ | JavaScript-Engine |
| Lizenz | MPL 2.0 |
| Webseite |
www |
Rhino ist eine vollständig in Java geschriebene JavaScript-Engine , die von der Mozilla Foundation als Open-Source-Software verwaltet wird . Es ist getrennt von der SpiderMonkey- Engine, die ebenfalls von Mozilla entwickelt wurde, aber in C++ geschrieben und in Mozilla Firefox verwendet wird .
Geschichte
Das Rhino-Projekt wurde 1997 bei Netscape gestartet . Zu dieser Zeit plante Netscape , eine vollständig in Java geschriebene Version von Netscape Navigator zu produzieren und benötigte daher eine Implementierung von in Java geschriebenem JavaScript. Als Netscape die Arbeit an Javagator , wie es genannt wurde, einstellte , war das Rhino-Projekt als JavaScript-Engine fertig. Seitdem haben einige große Unternehmen (einschließlich Sun Microsystems) Rhino für die Verwendung in ihren Produkten lizenziert und Netscape dafür bezahlt, damit die Arbeit daran fortgesetzt werden kann.
Ursprünglich hat Rhino den gesamten JavaScript-Code in Java-Bytecode in generierten Java-Klassendateien kompiliert . Dies führte zu der besten Leistung und übertraf oft die C++-Implementierung von JavaScript, die mit Just-in-Time-Kompilierung (JIT) ausgeführt wurde, litt jedoch unter zwei Fehlern. Erstens war die Kompilierungszeit lange Zeit, da Bytecode generiert wurde und das Laden der generierten Klassen ein ressourcenintensiver Prozess war. Die Umsetzung effektiv auch, Speicher verloren , da die meist Java Virtual Machines (JVM) tat nicht collect ungenutzt Klassen oder die Saiten , die sind interniert als Folge des Ladens eine Klassendatei. (Dies hat sich in späteren Java-Versionen geändert.)
Als Ergebnis fügte Rhino im Herbst 1998 einen Interpretationsmodus hinzu. Der Generierungscode der Klassendatei wurde in ein optionales, dynamisch geladenes Paket verschoben . Das Kompilieren ist schneller und wenn Skripte nicht mehr verwendet werden, können sie wie jedes andere Java-Objekt gesammelt werden.
Rhino wurde im April 1998 an die Mozilla Foundation freigegeben . Ursprünglich wurde die Generierung von Rhino-Klassendateien von der Veröffentlichung zurückgehalten. Die Lizenzgeber von Rhino haben sich jetzt jedoch darauf geeinigt, Rhino vollständig als Open Source freizugeben, einschließlich der Generierung von Klassendateien. Seit seiner Veröffentlichung als Open Source hat Rhino eine Vielzahl von Anwendungen gefunden und eine wachsende Zahl von Leuten hat an dem Code mitgewirkt. Das Projekt hat seinen Namen von dem Tier auf dem Cover des JavaScript-Buches von O'Reilly Media . Ab Version 1.7R11 (Mai 2019) unterstützt Rhino Java 8 und höher und unterstützt eine Reihe von ECMAScript ES6/ES2015-Funktionen.
Benutzen
Rhino wandelt JavaScript-Skripte in Klassen um . Rhino funktioniert sowohl im kompilierten als auch im interpretierten Modus. Es ist für die Verwendung in Desktop- oder serverseitigen Anwendungen vorgesehen, daher gibt es keine integrierte Unterstützung für die Webbrowser- Objekte, die üblicherweise mit JavaScript verbunden sind.
Rhino kann mit der Rhino- Shell als Debugger verwendet werden . Die JavaScript-Shell bietet eine einfache Möglichkeit, Skripte im Batch-Modus oder in einer interaktiven Umgebung für explorative Programmierung auszuführen. Es kann in Anwendungen durch Einbetten von Rhino verwendet werden.
Eine leicht modifizierte Version von Rhino 1.6r2 kommt gebündelt mit der Sun Microsystems Version von Java SE Version 6, die im Dezember veröffentlicht wurde 2006. Dies macht es einfacher JavaScript als Teil der Java - Programme zu integrieren und den Zugriff auf Java - Ressourcen von JavaScript. Andere Implementierungen von Java 6 können abweichen.
Siehe auch
- JavaScript-Engine
- Liste der ECMAScript-Engines
- Nashorn (JavaScript-Engine) - der mittlerweile veraltete Nachfolger von Rhino für die JVM, ab Java 8