Rhino - ein JavaScript-Interpreter in Java
Von Netscape kommt mit "Rhino" [1] eine JavaScript-Implementierung in Java,
die nicht nur den vollen Funktionsumfang von ECMAScript Version 3 [2] sowie
eine sehr leistungsfähige Schnittstelle zu Java bietet, sondern
außerdem in der Lage ist, JavaScript-Funktionen in "Java Byte Code"
zu übersetzen - wodurch die Ausführungsgeschwindigkeit von Rhino
(nicht zuletzt auch dank der "Just-In-Time"-Compiler für Java) teilweise
sogar über der der in C geschriebenen JavaScript-Implementierung aus
dem gleichen Hause liegt [3].
Die vorliegenden Seiten geben einen kurzen Überblick über Rhino
und dokumentieren die Arbeiten des Autors im Rahmen einer Evaluierung im
Hinblick auf eine Verwendung für seine Dissertation.
Bitte beachten Sie auch die
Betrachtungshinweise sowie die
Liste der letzten Änderungen!
Themenübersicht
Die folgende Themenübersicht führt Sie unmittelbar zu der von Ihnen
gewünschten Information - klicken Sie dazu einfach auf das Thema Ihrer
Wahl:
Rhino im Überblick
Rhino ist eine JavaScript-Implementierung in Java aus dem Hause Netscape.
Quelltext und Binärcode werden unter der "Netscape Public License" (NPL)
1.1 [4] bzw. der "GNU Lesser General Public License" (GPL) [5] kostenfrei
zur Verfügung gestellt.
Zu den charakteristischen Eigenschaften von Rhino gehören:
-
Rhino ist als "embeddable system" konzipiert, kann (und muß) also in
ein umgebendes Java-Programm (die "Laufzeitumgebung") integriert werden,
um Skript-Dateien sinnvoll ausführen zu können;
-
als erste einfache Laufzeitumgebung für Skript-Dateien gehört eine
interaktive "Shell" zur Rhino-Distribution - ein entsprechendes Beispiel
im Quelltext erleichtert die Entwicklung eigener Umgebungen;
-
Rhino bietet den vollen Funktionsumfang von ECMAScript Version 3 (JavaScript
1.5);
-
eine spezielle (Netscape-eigene) Technik namens "LiveConnect" erlaubt den
unmittelbaren Zugriff auf Java-Klassen & -Objekte (insbesondere JavaBeans)
- ohne daß diese dazu eigens angepaßt werden müßten;
-
die Implementierung von JavaScript-konformen Java-Klassen ("Host Objects")
wird durch eine spezielle Namenskonvention erleichtert - Rhino übernimmt
in diesem Fall die Konvertierung zwischen JavaScript- und Java-Datentypen;
-
ein "JavaAdapter" gestattet die Implementierung von Java-Schnittstellen mithilfe
von JavaScript-Objekten sowie die Erweiterung von Java-Klassen um
JavaScript-Variablen und -Funktionen;
-
in sicherheitsempfindlichen Bereichen können "SecurityDomains" zur
Überwachung der von einem Rhino-Skript aus aufgerufenen Funktionen
implementiert werden;
-
Skripte können wahlweise interpretiert oder in "Java Byte Code"
übersetzt und ausgeführt werden;
-
der "JavaScript Compiler" kann vom Benutzer auch direkt aufgerufen werden,
um Skript-Dateien in "Java Byte Code" zu übersetzen;
-
inzwischen enthält die Distribution auch einen interaktiven Debugger
mit grafischer Benutzeroberfläche (auf der Basis von "Swing"-Komponenten).
Literaturhinweise
| [1] |
Norris Boyd
Rhino: JavaScript for Java
(siehe
http://www.mozilla.org/rhino)
die angegebene Adresse verweist auf die Leitseite des Rhino-Projektes bei
Netscape. Von hier aus kann die Rhino-Distribution heruntergeladen, die zur
Distribution gehörende Dokumentation eingesehen und auf die sich mit
Rhino befassenden Diskussionsforen zugegriffen werden; |
| [2] |
ECMA - Standardizing Information and Communication Systems
Standard ECMA-262 ECMAScript Language Specification
(siehe
ftp://ftp.ecma.ch/ecma-st/Ecma-262.pdf)
hinter der angegebenen Adresse verbirgt sich ein PDF-Dokument mit der
Spezifikation von ECMAScript Version 3 - dieses entspricht JavaScript 1.5,
der Version, die von Rhino implementiert wird; |
| [3] |
Norris Boyd
JavaScript for the Java Platform
(siehe
http://industry.java.sun.com/javaone/99/event/0.1768.629.00.html)
Rhino wurde 1999 auf der JavaOne-Konferenz in San Francisco vorgestellt.
Die Folien enthalten u.a. einen Vergleich der Ausführungsgeschwindigkeiten
zwischen Rhino und "Spider", der JavaScript-Implementierung in C aus dem
Hause Netscape; |
| [4] |
(Netscape)
Mozilla and Netscape Public Licenses
(siehe
http://www.mozilla.org/MPL/)
die angegebene Seite enthält einen Überblick über die
Lizenzmodelle von Netscape im Hinblick auf den "Mozilla"-Browser und seine
Bestandteile - für Rhino ist die "Netscape Public License" (NPL) von
Interesse; |
| [5] |
(Free Software Foundation)
Free Software Licenses
(siehe
http://www.fsf.org/licenses/licenses.html)
die angegebene Seite enthält einen Überblick über die
Lizenzmodelle der "Free Software Foundation" - für Rhino ist die "GNU
Lesser General Public License" (LGPL) von Bedeutung; |
|