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 :
- 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
- 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