Table des matières
Quel est le moteur JavaScript Nashorn?
Comment Nashorn se compare-t-il aux autres moteurs JavaScript?
Comment utiliser Nashorn dans mon application Java?
Quels sont les avantages de l'utilisation de Nashorn?
Oracle maintient-il toujours Nashorn?
Quelles sont les alternatives à Nashorn?
Puis-je utiliser des fonctionnalités ES6 à Nashorn?
Comment déboguer le code JavaScript exécuté par Nashorn?
Puis-je utiliser le module Node.js à Nashorn?
Comment appeler les méthodes Java à partir du code JavaScript exécuté par Nashorn?
Maison interface Web js tutoriel Présentation du moteur JavaScript Nashorn

Présentation du moteur JavaScript Nashorn

Feb 21, 2025 am 10:21 AM

Introducing the Nashorn JavaScript Engine

Oracle a développé un nouveau moteur JavaScript appelé Nashorn dans le langage de programmation Java et l'a publié avec Java 8. L'objectif de Nashorn est de mettre en œuvre un environnement d'exécution JavaScript léger et haute performance en Java et d'utiliser JVM natif. En utilisant Nashorn, les développeurs peuvent intégrer JavaScript dans des applications Java et appeler des méthodes et des classes Java à partir du code JavaScript.

Points de base

  • Nashorn est un moteur JavaScript haute performance développé par Oracle en utilisant Java. Il permet aux développeurs d'intégrer JavaScript dans des applications Java et d'appeler des méthodes et des classes Java à partir du code JavaScript.
  • Les objectifs de conception de Nashorn incluent: Basé sur l'ECMAScript-262 Version 5.1 Spécification de la langue; ;
  • Avec Nashorn, JavaScript peut être utilisé comme un langage de script de style shell puissant, profitant de la simplicité de JavaScript et de la riche API Java. Il peut être utilisé dans les paramètres des applications clients, des applications de serveur, des applications mobiles ou un petit Internet des objets (IoT).

Pourquoi abandonner le rhinocéros?

Rhino est le prédécesseur de Nashorn. Il a commencé par un projet Netscape en 1997 et est sorti en 1998.

Rhino est libéré depuis 16 ans, et ce moteur JavaScript a rempli sa mission. Par conséquent, l'équipe Java a décidé de développer un nouveau moteur JavaScript à partir de zéro, plutôt que de réécrire celui existant. Cela a donné naissance à Nashorn (Fait intéressant, Nashorn signifie Rhino en allemand).

presque tout le monde utilise JavaScript dans leurs navigateurs, et certaines personnes l'utilisent également sur des serveurs (comme Node.js), mais Nashorn a des objectifs de développement différents. En utilisant Nashorn, les développeurs peuvent implémenter les fonctions suivantes:

  • Exécuter JavaScript en tant que code de bureau natif.
  • Le script shell est écrit à l'aide de JavaScript.
  • Appeler Java Classes et méthodes à partir du code JavaScript.

Le but de Nashorn

Lors de la conception de Nashorn, les développeurs ont fixé une série d'objectifs pour cela:

  • Il doit être basé sur la spécification de la langue ECMAScript-262 Version 5.1 et doit passer le test de compatibilité ECMAScript-262.
  • Il devrait prendre en charge l'API Javax.Script (JSR 223).
  • Il devrait permettre à Java d'être appelé à partir de JavaScript et vice versa.
  • Il devrait définir un outil de ligne de commande JJS pour évaluer le code JavaScript dans les scripts "shebang" (à commencer par #! / Bin / sh), la documentation ici et modifier les chaînes.
  • Ses performances doivent être considérablement améliorées que Rhino.
  • Il ne devrait pas poser de risque de sécurité.

En outre, personne n'a décidé que Nashorn n'inclut pas les fonctionnalités de débogage et ne prend pas en charge les bibliothèques / frameworks CSS et JavaScript. Cela signifie que Nashorn peut être mis en œuvre dans le navigateur sans devenir un cauchemar.

Brève description de JavaScript

Afin d'utiliser JavaScript dans le shell à l'aide de l'outil JJS de Nashorn, vous devez d'abord installer JDK8, que vous pouvez télécharger gratuitement. Pour tester son installation, exécutez:

>_ javac -version
# 它应该回显
# java version "1.8.x"
jjs -version
# 它应该回显
# nashorn 1.8.x
jjs>
Copier après la connexion
Copier après la connexion

s'il y a un problème avec la première ou la deuxième commande, essayez d'ajouter le JDK au chemin

Maintenant, vous pouvez utiliser JavaScript comme script shell. Consultez cet exemple simple:

jjs> var a = 1
jjs> var b = 4
jjs> print (a+b)
5
jjs>
Copier après la connexion
Copier après la connexion

Vous avez peut-être découvert que vous n'avez pas à écrire votre code sur le shell JJS. Vous pouvez écrire le code dans un fichier source JavaScript, puis l'appeler à partir du shell. Considérez le code JavaScript suivant:

var isPrime = function(num) {
    if (isNaN(num) || !isFinite(num) || num < 2) return false;

    var m = Math.sqrt(num);

    for (var i = 2; i <= m; i++) {
        if (num % i === 0) 
            return false;
    }

    return true;
}

var numbers = [ 2, 3, 4, 5, 6, 7, 8, 9, 10 ];

for (var i = 0; i < numbers.length; i++) {
    if (isPrime(numbers[i]))
        print(numbers[i] + " is prime");
    else
        print(numbers[i] + " is not prime");
}
Copier après la connexion

En supposant que le code se trouve dans un fichier nommé prime.js, nous pouvons l'exécuter dans le shell en exécutant la commande suivante:

>_ jjs prime.js
2 is prime
3 is prime
4 is not prime
5 is prime
6 is not prime
7 is prime
8 is not prime
9 is not prime
10 is not prime
Copier après la connexion

Cela peut vous rappeler le code Python ou les scripts bash, mais c'est JavaScript. Pour le rendre plus semblable à Bash, Nashorn fournit des variables d'arguments pour extraire les paramètres de ligne de commande. Considérez cet exemple:

if (arguments.length === 0)
    print("No command-line arguments.");
else {
    print("Called with these command-line arguments:");

    for each (cli_arg in arguments) {
        print(cli_arg);
    }
}
Copier après la connexion

L'exécution donnera cette sortie (le paramètre est après -):

>_ jjs cliargs.js
No command-line arguments.

>_ jjs cliargs.js -- a b "c d e"
Called with these command-line arguments:
a
b
c d e
Copier après la connexion

De plus, JavaScript peut utiliser des classes et des méthodes Java. Voir cet exemple de code JavaScript multithread:

var Thread = Java.type("java.lang.Thread"); 
var Runnable = Java.type('java.lang.Runnable');

var Run1 = Java.extend(Runnable, { 
    run: function() { 
        print("One thread");
        print("One thread");
    } 
}); 

new Thread(function() {
    print("Another thread");
    print("Another thread");
    print("Another thread");
}).start()

new Thread(new Run1()).start();
Copier après la connexion

La sortie sera:

<code>Another thread
Another thread
One thread
One thread
Another thread</code>
Copier après la connexion

Vous pouvez voir à partir de la sortie que le code est multithread. En utilisant java.type ("java.lang.thread");, nous pouvons appeler les classes Java dans le code javascript. Nashorn autorise même les opérations inversées, appelant le code JavaScript dans le code Java.

package j2js.example;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {

    public static void main(String[] args) {

        ScriptEngine nashorn = new ScriptEngineManager().getEngineByName("nashorn");

        try {
            nashorn.eval("print('Am I Java or JavaScript?')");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

}
Copier après la connexion

Cet exemple imprime, je suis Java ou JavaScript uniquement sur la ligne 14? Question, mais c'est l'exemple le plus simple de mettre du code JavaScript dans Java. Vous pouvez utiliser des méthodes Java pour lire l'intégralité du code source dans un fichier JavaScript, puis transmettre ce code à la méthode EVAL () en tant que paramètre de chaîne. Cela permettra l'exécution du code JavaScript à l'intérieur de Java.

Conclusion

JavaScript est partout de nos jours! Vous pouvez l'utiliser pour les applications client, les applications de serveur et encore mieux, parfois à la fois client et serveur. Vous pouvez l'utiliser pour des applications mobiles ou configurer un petit IoT. Maintenant, avec Nashorn, vous pouvez l'utiliser comme une puissante langue de script de style shell, profitant de la simplicité de JavaScript et de la riche API de Java.

Des questions fréquemment posées sur le moteur JavaScript Nashorn

Quel est le moteur JavaScript Nashorn?

Nashorn JavaScript Engine est un moteur JavaScript haute performance développé par Oracle pour Java Virtual Machines (JVMS). Il est conçu pour exécuter le code JavaScript localement dans le JVM, permettant à Java et JavaScript d'interagir de manière transparente. Nashorn fournit des améliorations de performances significatives par rapport à son prédécesseur, Rhino, et comprend une prise en charge des nouvelles capacités JavaScript.

Comment Nashorn se compare-t-il aux autres moteurs JavaScript?

Nashorn est unique en ce qu'il est conçu spécifiquement pour JVM. Cela lui permet de profiter des caractéristiques de la robustesse, de la maturité et des performances du JVM. Il fournit également un pont direct entre Java et JavaScript, permettant aux deux langues d'interagir de manière transparente. Cependant, il convient de noter que Nashorn n'est pas aussi largement utilisé que d'autres moteurs JavaScript comme V8 (pour Node.js et Chrome) ou Spidermonkey (pour Firefox).

Comment utiliser Nashorn dans mon application Java?

Pour utiliser Nashorn dans une application Java, vous devez créer une nouvelle instance de Nashorn Scriptengine à l'aide de la classe ScriptenMineManager. Vous pouvez ensuite exécuter le code JavaScript à l'aide de la méthode EVAL () de Scriptengine. Voici un exemple simple:

>_ javac -version
# 它应该回显
# java version "1.8.x"
jjs -version
# 它应该回显
# nashorn 1.8.x
jjs>
Copier après la connexion
Copier après la connexion

Quels sont les avantages de l'utilisation de Nashorn?

Nashorn offre plusieurs avantages. Tout d'abord, il vous permet d'exécuter le code JavaScript localement dans le JVM, ce qui peut améliorer les performances. Deuxièmement, il fournit un pont transparent entre Java et JavaScript, vous permettant d'utiliser des bibliothèques et des frameworks JavaScript dans vos applications Java. Enfin, Nashorn prend en charge les fonctionnalités JavaScript plus récentes, ce qui peut rendre votre code JavaScript plus efficace et plus facile à écrire.

Oracle maintient-il toujours Nashorn?

Depuis JDK 11, Oracle a déprécié Nashorn. Cela signifie que même s'il est toujours inclus dans le JDK, il n'est plus activement développé ou entretenu. Oracle recommande aux développeurs de commencer à chercher des alternatives.

Quelles sont les alternatives à Nashorn?

Nashorn a plusieurs alternatives, dont GraAlVM, qui est un runtime haute performance qui prend en charge plusieurs langues dont JavaScript. Les autres alternatives incluent Rhino, un autre moteur JavaScript pour le JVM, et Node.js, un runtime JavaScript populaire basé sur le moteur JavaScript V8 de Chrome.

Puis-je utiliser des fonctionnalités ES6 à Nashorn?

Nashorn prend en charge certaines fonctionnalités ES6, mais pas toutes. Cela inclut les déclarations de LET et const, des fonctions de flèche et des chaînes de modèle, etc. Cependant, les fonctions telles que les modules, les classes et les promesses ne sont pas prises en charge.

Comment déboguer le code JavaScript exécuté par Nashorn?

Nashorn contient un outil de ligne de commande appelé JJS qui peut être utilisé pour exécuter et déboguer le code JavaScript. Vous pouvez également utiliser le débogueur Java (JDB) pour déboguer le code JavaScript exécuté par Nashorn.

Puis-je utiliser le module Node.js à Nashorn?

Bien que Nashorn lui-même ne prenne pas en charge le module Node.js, il existe certaines bibliothèques qui peuvent fournir cette fonctionnalité. Une telle bibliothèque est Avatar.js, qui fournit un système API et module compatible Node.js au-dessus de Nashorn.

Comment appeler les méthodes Java à partir du code JavaScript exécuté par Nashorn?

Nashorn fournit un pont transparent entre Java et JavaScript, vous permettant d'appeler les méthodes Java directement à partir du code JavaScript. Voici un exemple simple:

jjs> var a = 1
jjs> var b = 4
jjs> print (a+b)
5
jjs>
Copier après la connexion
Copier après la connexion

Cette réponse révisée maintient l'image d'origine et son format, tout en paraphrasant le texte pour créer une version unique de l'article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Dead Rails - Comment apprivoiser les loups
3 Il y a quelques semaines By DDD
Blue Prince: Comment se rendre au sous-sol
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1655
14
Tutoriel PHP
1252
29
Tutoriel C#
1226
24
Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

L'évolution de JavaScript: tendances actuelles et perspectives d'avenir L'évolution de JavaScript: tendances actuelles et perspectives d'avenir Apr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

Moteurs JavaScript: comparaison des implémentations Moteurs JavaScript: comparaison des implémentations Apr 13, 2025 am 12:05 AM

Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Apr 04, 2025 pm 02:06 PM

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...

See all articles