À l'origine, Rhino compilait tout le code JavaScript en bytecode JVM dans des fichiers de classe Java générés . Cette approche offrait les meilleures performances, surpassant souvent l' implémentation C++ de JavaScript exécutée avec la compilation à la volée (JIT), mais présentait deux défauts. Premièrement, le temps de compilation était long, car la génération du bytecode et le chargement des classes générées étaient des processus gourmands en ressources. Deuxièmement, cette implémentation entraînait des fuites de mémoire, car la plupart des machines virtuelles Java (JVM) ne stockaient pas les classes inutilisées ni les chaînes de caractères internées lors du chargement d'un fichier de classe. (Ce comportement a été corrigé dans les versions ultérieures de Java.)interprété . Le code de génération des fichiers de classe a été déplacé vers un module optionnel à chargement dynamique . La compilation est plus rapide et, lorsque les scripts ne sont plus utilisés, ils peuvent être récupérés comme n'importe quel autre objet Java .
Rhino a été mis à disposition de la Fondation Mozilla en avril 1998. Initialement, la génération de fichiers de classe par Rhino n'était pas incluse dans la distribution. Cependant, les concédants de licence de Rhino ont accepté de publier l'intégralité du logiciel en tant que logiciel libre et open source , y compris la génération de fichiers de classe. Depuis sa publication en open source, Rhino a trouvé de nombreuses applications et le nombre de contributeurs à son code n'a cessé d'augmenter. Le projet tire son nom de l'animal figurant sur la couverture du livre JavaScript publié par O'Reilly Media . À partir de la version 1.80 (janvier 2025), Rhino est compatible avec Java 11 et versions ultérieures, et prend en charge de nombreuses fonctionnalités d'ECMAScript ES6/ES2015.
Utiliser
Rhino convertit les scripts JavaScript en classes . Il fonctionne en mode compilé et en mode interprété . Conçu pour les applications côté client ou serveur , il ne prend donc pas en charge nativement les objets du navigateur web généralement associés à JavaScript.
Rhino peut servir de débogueur via son interface en ligne de commande (ou shell) . Le shell JavaScript permet d'exécuter facilement des scripts en mode batch ou dans un environnement de programmation interactive pour l'exploration de données . Il est possible d'intégrer Rhino à des applications.
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. Cela facilite l'intégration de JavaScript dans les programmes Java et l'accès aux ressources Java depuis JavaScript. D'autres implémentations de Java 6 peuvent présenter des différences.