Motor Nashorn JavaScript en Java con ejemplos

Nashorn : Nashorn es un motor JavaScript que se introdujo en JDK 8. Con la ayuda de Nashorn, podemos ejecutar código JavaScript en Java Virtual Machine . Nashorn se introduce en JDK 8 para reemplazar el motor de JavaScript existente, es decir, Rhino. Nashorn es mucho mejor que Rhino en términos de rendimiento. Los usos de la función dinámica de invocación, la conversión del código JavaScript en el código de bytes directamente en la memoria, etc., hacen que el Nashorn sea más famoso en JDK 8. Podemos ejecutar el código JavaScript utilizando la herramienta de línea de comandos e incrustando el código JavaScript en el código fuente de Java. .

Ejecución de código JavaScript mediante la consola: para el motor Nashorn, Java 8 introdujo una nueva herramienta de línea de comandos, es decir, jjl . Tenemos que seguir los siguientes pasos para ejecutar el código JavaScript a través de la consola:

  • Cree un archivo con el nombre geeks.js.
  • Abra geeks.js y escriba el siguiente código en el archivo y guárdelo.

    var gfg= function(){  
        print("Welcome to Geeksforgeeks!!!");  
    };  
    gfg(); 
  • Abra CMD, escriba jjl geeks.js y presione enter. Generará el siguiente resultado:
    Welcome to Geeksforgeeks!!!
    

Ejecutar un archivo JavaScript incrustando un archivo JavaScript en el código Java: podemos ejecutar un archivo JavaScript incrustando un archivo JavaScript en el código Java con la ayuda de la clase ScriptEngine . La clase ScriptEngine se introdujo en JDK 6. Con la ayuda de la clase ScriptEngine, podemos crear un motor JavaScript y con el motor JavaScript, podemos ejecutar el archivo javaScript.

Ejemplo 1:

// Program to illustrate embedding
// of JavaScript file into Java code
  
import javax.script.*;
import java.io.*;
  
public class Geeksforgeeks {
    public static void main(String[] args)
        throws Exception
    {
  
        // Here we are generating Nashorn JavaScript Engine
        ScriptEngine ee = new ScriptEngineManager()
                              .getEngineByName("Nashorn");
  
        // Reading JavaScript file create in first approach
        ee.eval(new FileReader("geeks.js"));
    }
}

Producción:

Welcome to Geeksforgeeks!!!

Ejemplo 2:

// Program to illustrate embedding
// of JavaScript code into Java code
  
import javax.script.*;
import java.io.*;
  
public class Geeksforgeeks {
    public static void main(String[] args)
        throws Exception
    {
  
        // Here we are generating Nashorn JavaScript Engine
        ScriptEngine ee = new ScriptEngineManager()
                              .getEngineByName("Nashorn");
  
        // Instead of reading JavaScript code from a file.
        // We can directly paste the JavaScript
        // code inside Java Code
        ee.eval("print('Welcome to Geeksforgeeks!!!"
                + " Executing JavaScript code with the"
                + " help of Nashorn engine');");
    }
}

Producción:

¡¡¡Bienvenidos a Geeksforgeeks!!! Ejecutar código JavaScript con la ayuda del motor Nashorn

Aparte de lo anterior, con la ayuda de Nashorn JavaScript Engine, podemos realizar múltiples operaciones como :

  1. Proporcionar una variable JavaScript desde el código Java : supongamos que tenemos un nombre de archivo JavaScript con geeks.js y geeks.js requiere una variable durante la ejecución. Con la ayuda de Nashorn, podemos pasar la variable al archivo JavaScript desde el código Java.

    Ejemplo 1: archivo geeks.js, que necesita una variable de nombre para ejecutarse

    // JavaScript file name with geeks.js
    print("Welcome to Geeksforgeeks!!! Mr. "+name);  

    Ejemplo 2: código Java que proporciona una variable de nombre al archivo JS

    // Program to illustrate passing of variable
    // from java code to javascript file
      
    import javax.script.*;
    import java.io.*;
      
    public class Geeksforgeeks {
        public static void main(String[] args)
            throws Exception
        {
            ScriptEngine ee
                = new ScriptEngineManager()
                      .getEngineByName("Nashorn");
            Bindings bind
                = ee.getBindings(
                    ScriptContext.ENGINE_SCOPE);
            bind.put("name", "Bishal Kumar Dubey");
            ee.eval(new FileReader("geeks.js"));
        }
    }

    Producción:

    Welcome to Geeksforgeeks!!! Mr. Bishal Kumar Dubey
    
  2. Llamar a la función JavaScript desde el código Java: podemos llamar a la función JavaScript desde el código Java con la ayuda de Nashorn. Supongamos que creamos un nombre de archivo con geeks.js y el archivo contiene dos funciones como las siguientes:

    // JavaScript file name with geeks.js
      
    var func1 = function(){  
        print("Simple JavaScript function!!!");  
    }  
      
    var func2 = function(reader){  
        print("Hello "+reader);  
    }  

    // Program to illustrate calling of
    // JavaScript function from Java code
      
    import javax.script.*;
    import java.io.*;
      
    public class Geeksforgeeks {
        public static void main(String[] args)
            throws Exception
        {
            ScriptEngine ee
                = new ScriptEngineManager()
                      .getEngineByName("Nashorn");
            ee.eval(new FileReader("geeks.js"));
            Invocable invocable = (Invocable)ee;
      
            // Here we are calling func1
            invocable.invokeFunction("func1");
      
            // Here we are calling func2
            // as well as passing argument
            invocable.invokeFunction("func2",
                                     "Bishal Kumar Dubey");
        }
    }

    Producción:

    Simple JavaScript function!!!
    Hello Bishal Kumar Dubey
    

Publicación traducida automáticamente

Artículo escrito por Bishal Kumar Dubey y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *