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:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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:
1 | nashorn.eval( "load('src/hola.js')" ); |
Y hola.js es el archivo siguiente:
1 2 3 4 5 | 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