recherche
Maisoninterface Webjs tutorielPrésentation du moteur JavaScript Nashorn

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>

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>

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");
}

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

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);
    }
}

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

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();

La sortie sera:

<code>Another thread
Another thread
One thread
One thread
Another thread</code>

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();
        }
    }

}

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>

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>

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
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
Comprendre le moteur JavaScript: détails de l'implémentationComprendre le moteur JavaScript: détails de l'implémentationApr 17, 2025 am 12:05 AM

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisationPython vs JavaScript: la courbe d'apprentissage et la facilité d'utilisationApr 16, 2025 am 12:12 AM

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Python vs JavaScript: communauté, bibliothèques et ressourcesPython vs JavaScript: communauté, bibliothèques et ressourcesApr 15, 2025 am 12:16 AM

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

De C / C à JavaScript: comment tout cela fonctionneDe C / C à JavaScript: comment tout cela fonctionneApr 14, 2025 am 12:05 AM

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Moteurs JavaScript: comparaison des implémentationsMoteurs JavaScript: comparaison des implémentationsApr 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.

Au-delà du navigateur: Javascript dans le monde réelAu-delà du navigateur: Javascript dans le monde réelApr 12, 2025 am 12:06 AM

Les applications de JavaScript dans le monde réel incluent la programmation côté serveur, le développement des applications mobiles et le contrôle de l'Internet des objets: 1. La programmation côté serveur est réalisée via Node.js, adaptée au traitement de demande élevé simultané. 2. Le développement d'applications mobiles est effectué par le reactnatif et prend en charge le déploiement multiplateforme. 3. Utilisé pour le contrôle des périphériques IoT via la bibliothèque Johnny-Five, adapté à l'interaction matérielle.

Construire une application SaaS multi-locataire avec next.js (intégration backend)Construire une application SaaS multi-locataire avec next.js (intégration backend)Apr 11, 2025 am 08:23 AM

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

See all articles

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel