Seguramente se acuerdan de Rhino, este framework de la asociación Mozilla permitía correr javascript en la plataforma Java. Con Java 8, Oracle decidió remplazar este framework con uno propio y este tiene el nombre de Nashorn.
Entre las características de Nashorn podemos remarcar los siguientes puntos:
- Tiene un soporte total de la especificación ECMAScript 5.1, además compila javascript a bytecode usando las nuevas características de la plataforma incluyendo invokedynamic introducido en el JDK 7.
- Si comparamos el rendimiento con Rhino es Nashorn muy superior por utilizar invokedynamic, pero si lo comparamos con motores javascript como V8 (utilizado en Chrome y en Node.js) queda mucho trabajo por hacer.
- Como Nashorn viene con JDK 8, también tiene soporte para interfaces funcionales y todas las nuevas características de la nueva versión del JDK.
Vamos a hacer una pequeña prueba, un "hola mundo" con Nashorn
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class PruebaNashorn {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
nashorn.eval("print('Hola Mundo')");
}
}
Vamos a tomar ahora las instrucciones de un archivo, para eso debemos cambiar la instrucción eval de la siguiente manera:
nashorn.eval("load('src/hola.js')");
Y hola.js es el archivo siguiente:
function saludar(nombre) {
print("Hola " + nombre);
}
saludar("Mundo");
Javascript es un lenguaje muy potente y fácil de utilizar, que nos puede ser de gran ayuda que podamos contar con el en la plataforma java es de gran utilidad.
Dejo links:
http://www.infoq.com/articles/nashorn
http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/
http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html