Si vous voulez voir comment les différents dans le navigateur moteurs Javascript empilent, installez Safari 4 (oui, il fonctionne sur windows maintenant aussi!), Chrome V8, Firefox 3.5 et IE 8 (si vous êtes sur windows) et exécutez le benchmark:
http://www2.webkit.org/perf/sunspider-0.9/sunspider.html
Je crois que dit Pointy ci-dessus, la new Firefox 3.5 utilise TraceMonkey qui compile aussi pour interméditer le code à la volée en utilisant quelques f orm de JIT. Donc, il devrait comparer à V8 assez favorablement. Au moins, il ne sera pas 10x plus lent que V8 comme Firefox 3 SpiderMonkey (sans JIT) était. Pour moi ... safari 4.0.3 était 2.5x plus rapide que Tracemonky dans Firefox 3.5.3 sur Win XP. IE8 était beaucoup plus lent. Je n'ai pas installé Chrome pour le moment.
Je ne connais pas la compilation de Rhino en bytecode java. S'il interprète toujours les caractéristiques dynamiques de Javascript, par exemple en ajoutant des attributs aux instances d'objets lors de l'exécution (exemple obj.someNewAttribute = "someValue" qui est autorisé en Javascript) ...Je ne suis pas sûr qu'il soit entièrement "compilé" en bytecode, et vous n'obtiendrez peut-être pas de meilleures performances si ce n'est que vous n'avez pas besoin de compiler du code source Javascript chaque fois que votre Javascript fonctionne. Rappelez-vous que Javascript permet une syntaxe très dynamique telle que eval ("x = 10; y = 20; z = x * y"); ce qui signifie que vous pouvez créer des chaînes de code compilées lors de l'exécution. C'est pourquoi je pense que Rhino serait en mode mixte interprété/compilé même si vous compiliez en JVM bytecode.
La JVM est toujours un interpréteur, mais très bon avec le support JIT. J'aime donc penser à Rhino-on-JVM comme 2 couches interpréteur (interprète sur interpréteur) ou interprète^2. Alors que la plupart de vos autres moteurs Javascript sont écrits en C, et en tant que tel devrait ressembler plus à l'interpréteur^1. Chaque couche d'interpréteur peut ajouter 5 à 10 fois plus de dégradation que C ou C++ (ref Perl ou Python ou Ruby par exemple), mais avec JIT, la performance peut être beaucoup plus faible de l'ordre de 2-4x. Et la JVM possède l'un des moteurs JIT les plus robustes de tous les temps.
Donc, votre kilométrage va certainement varier et vous pourriez probablement bénéficier de quelques benchmarks sérieux si vous voulez une vraie réponse pour votre application prévue sur votre propre matériel & OS. Rhino ne peut pas être trop terriblement lent, car je sais que beaucoup de gens l'utilisent. Je pense que son principal attrait n'est pas sa rapidité, mais le fait qu'il soit facile à coder/léger/embarqué/interpréteur qui a des liens dans les bibliothèques Java, ce qui le rend parfait pour le script/configuration/extensibilité de votre projet logiciel. Certains éditeurs de texte comme UltraEdit intègrent même Javascript comme moteur alternatif de script de macro. Chaque programmeur semble être capable de trébucher facilement via javascript, il est donc facile de le récupérer. Un des avantages de Rhino est qu'il s'exécute à peu près partout où la JVM s'exécute. Dans mon expérience, essayer de faire fonctionner TraceMonkey ou SpiderMonkey en mode autonome pour construire & depuis la ligne de commande peut être un peu douloureux sur des systèmes comme Windows. Et l'intégration dans votre propre application peut prendre encore plus de temps. Mais le retour sur investissement d'un langage intégrable vaudra la peine pour un gros projet, comparé au fait d'avoir à faire «rouler sa propre» mini-solution de script si c'est ce que vous cherchez à faire.
Il est très facile de créer des scripts avec Rhino si vous avez Java et le pot de rhinocéros, il vous suffit d'écrire votre javascript et de l'exécuter à partir de la ligne de commande. Je l'utilise tout le temps pour des tâches simples.
Rhino peut être compilé en code octet Java. https://developer.mozilla.org/en/Rhino_JavaScript_Compiler – Thilo