Motor JavaScript Nashorn en Java 8: Rendimiento y Nueva Herramienta jjs
Con Java 8 se introduce Nashorn, un motor JavaScript significativamente mejorado que reemplaza a Rhino. Nashorn ofrece un rendimiento 2 a 10 veces superior, ya que compila el código directamente en memoria y pasa el bytecode a la JVM. Utiliza la característica invokedynamics, introducida en Java 7, para optimizar el rendimiento.
La Herramienta jjs
Para el motor Nashorn, Java 8 incluye una nueva herramienta de línea de comandos, jjs, para ejecutar código JavaScript en la consola.
Interpretar Archivos .js
Crea y guarda el archivo sample.js en c:\JAVA.
sample.js
print('¡Hola Mundo!');
Abre la consola y ejecuta:
C:\JAVA>jjs sample.js
Producirá la siguiente salida:
¡Hola Mundo!
Modo Interactivo de jjs
Abre la consola y ejecuta:
C:\JAVA>jjs
jjs> print("¡Hola, Mundo!")
¡Hola, Mundo!
jjs> quit()
>>
Pasar Argumentos
Abre la consola y ejecuta:
C:\JAVA> jjs -- a b c
jjs> print('letras: ' + arguments.join(", "))
letras: a, b, c
jjs>
Llamar a JavaScript desde Java
Usando ScriptEngineManager, el código JavaScript puede ser invocado e interpretado desde Java.
Ejemplo
Crea el siguiente programa Java en C:\JAVA.
Java8Tester.java
Demo en vivoimport javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
public class Java8Tester {
public static void main(String args[]) {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
String name = "Mahesh";
Integer result = null;
try {
nashorn.eval("print('" + name + "')");
result = (Integer) nashorn.eval("10 + 2");
} catch (ScriptException e) {
System.out.println("Error ejecutando script: " + e.getMessage());
}
System.out.println(result.toString());
}
}
Verificar el Resultado
Compila la clase:
C:\JAVA>javac Java8Tester.java
Ejecuta el programa:
C:\JAVA>java Java8Tester
Debería producir el siguiente resultado:
Mahesh 12
Llamar a Java desde JavaScript
El siguiente ejemplo explica cómo importar y usar clases Java en JavaScript.
Crea y guarda sample.js en c:\JAVA.
sample.js
var BigDecimal = Java.type('java.math.BigDecimal');
function calculate(amount, percentage) {
var result = new BigDecimal(amount).multiply(new BigDecimal(percentage))
.divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
return result.toPlainString();
}
var result = calculate(568000000000000000023, 13.9);
print(result);
Abre la consola y ejecuta:
C:\JAVA>jjs sample.js
Debería producir la siguiente salida:
78952000000000000003.20
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Entendiendo Java Vector: Uso, Características y Comparación con ArrayList
- Motor JavaScript Nashorn en Java 8: Rendimiento y Nueva Herramienta jjs