Rhino est un moteur JavaScript entièrement écrit en Java et géré par la Fondation Mozilla en tant que logiciel open source . Il est distinct du moteur SpiderMonkey , lui aussi développé par Mozilla, mais écrit en C++ et utilisé dans Mozilla Firefox .
Histoire
Le projet Rhino a été lancé par Netscape en 1997. À l'époque, Netscape prévoyait de produire une version de Netscape Navigator entièrement écrite en Java et avait donc besoin d'une implémentation de JavaScript écrite en Java. Lorsque Netscape a arrêté de travailler sur Javagator , comme il s'appelait, le projet Rhino était terminé en tant que moteur JavaScript. Depuis lors, quelques grandes entreprises (dont Sun Microsystems ) ont obtenu une licence pour utiliser Rhino dans leurs produits et ont payé Netscape pour le faire, ce qui a permis de continuer à travailler dessus.
À l'origine, Rhino compilait tout le code JavaScript en bytecode Java dans des fichiers de classe Java générés . Cela produisait les meilleures performances, battant souvent l' implémentation C++ de JavaScript exécutée avec la compilation juste-à-temps (JIT), mais souffrait de deux défauts. Tout d'abord, le temps de compilation était long car la génération de bytecode et le chargement des classes générées étaient un processus gourmand en ressources. De plus, l'implémentation laissait échapper de la mémoire puisque la plupart des machines virtuelles Java (JVM) ne collectaient pas les classes inutilisées ou les chaînes qui sont internes suite au chargement d'un fichier de classe. (Cela a changé dans les versions ultérieures de Java.)
En conséquence, à l'automne 1998, Rhino a ajouté un mode interprétatif. Le code de génération du fichier de classe a été déplacé vers un package optionnel chargé dynamiquement . La compilation est plus rapide et lorsque les scripts ne sont plus utilisés, ils peuvent être collectés comme n'importe quel autre objet Java.
Rhino a été publié par la Fondation Mozilla en avril 1998. À l'origine, la génération de fichiers de classe Rhino avait été retardée. Cependant, les concédants de licence de Rhino ont désormais accepté de publier l'intégralité de Rhino en open source , y compris la génération de fichiers de classe. Depuis sa publication en open source, Rhino a trouvé une variété d'utilisations et un nombre croissant de personnes ont contribué au code. Le projet tire son nom de l'animal sur la couverture du livre JavaScript d' O'Reilly Media . À partir de la version 1.7R11 (mai 2019), Rhino prend en charge Java 8 et versions ultérieures, ainsi qu'un certain nombre de fonctionnalités ECMAScript ES6/ES2015.
Utiliser
Rhino convertit les scripts JavaScript en classes . Rhino fonctionne en mode compilé et interprété . Il est destiné à être utilisé dans des applications de bureau ou côté serveur , il n'y a donc pas de support intégré pour les objets de navigateur Web qui sont généralement associés à JavaScript.
Rhino peut être utilisé comme débogueur en utilisant le shell Rhino . Le shell JavaScript fournit un moyen simple d'exécuter des scripts en mode batch ou dans un environnement interactif pour la programmation exploratoire. Il peut être utilisé dans des applications en intégrant Rhino.
Une version légèrement modifiée de Rhino 1.6r2 est fournie avec la version 6 de Java SE de Sun Microsystems , sortie en décembre 2006. Elle facilite l'intégration de JavaScript dans les programmes Java et l'accès aux ressources Java à partir de JavaScript. D'autres implémentations de Java 6 peuvent différer.