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.
Más información | Nashorn