tank java rhino openjdk nashorn

java - tank - ¿Cómo puedo comenzar a codificar con Nashorn JS Engine de Oracle y cuándo reemplazará a Rhino en el OpenJDK?



nashorn java (4)

Estoy buscando una manera de comenzar a jugar con el nuevo motor de JavaScript Nashorn de Oracle. He presentado el último OpenJDK 8 (b65) y parece que Rhino sigue siendo el único motor de script incluido.

¿Alguien sabe cuándo (o en qué compilación) Nashorn reemplazará a Rhino en el OpenJDK? O incluso mejor, ¿dónde puedo obtener un JDK incluido? Sé que Netbeans ya ha escrito un depurador para usarlo, pero no estoy seguro de dónde obtuvieron las bibliotecas / código para comenzar a escribirlo.

¿Alguien tiene algunos enlaces?

Gracias.


He estado buscando cómo usarlo recientemente y actualmente creo que la única forma en que puedes comenzar a usarlo es compilando OpenJDK desde la fuente, ya que no está en la versión actual del 7 de febrero.

Supongo que estará en la versión de vista previa para desarrolladores lanzada más tarde esta semana (21/02/2013).

Fuente: http://openjdk.java.net/projects/jdk8/


He investigado un poco más y puedes hacer que Nashorn trabaje con JDK7 usando un backport ubicado aquí:

https://bitbucket.org/ramonza/nashorn-backport

Verifique ese repositorio e intente compilarlo utilizando ant -f make/build.xml como se describe en la página de BitBucket

Aplique el parche que se encuentra en la sección de problemas here si obtiene una compilación fallida debido a un enlace dinámico (supongo que el desarrollador lo instalará en el repositorio principal pronto).

Al crearlo, debe obtener un archivo nashorn.jar dentro de la carpeta dist de su repositorio clonado.

Ahora necesita agregar este jar a su ruta de acceso de arranque usando una opción de máquina virtual similar a esta:

-Xbootclasspath/a:C:/nashorn-backport/dist/nashorn.jar

Y ahora deberías poder usar nashorn. Para asegurarme de que aquí hay un programa de prueba rápida que escribí que enumera las fábricas de motores disponibles:

import javax.script.*; public class NashornTest { public static void main(String args[]) { ScriptEngineManager manager = new ScriptEngineManager(); for (ScriptEngineFactory f : manager.getEngineFactories()) { printBasicInfo(f); System.out.println(); } } public static void printBasicInfo(ScriptEngineFactory factory) { System.out.println("engine name=" + factory.getEngineName()); System.out.println("engine version=" + factory.getEngineVersion()); System.out.println("language name=" + factory.getLanguageName()); System.out.println("extensions=" + factory.getExtensions()); System.out.println("language version=" + factory.getLanguageVersion()); System.out.println("names=" + factory.getNames()); System.out.println("mime types=" + factory.getMimeTypes()); } }

Si ejecuta eso con el conjunto bootclasspath, aparecerá Rhino y Nashorn, sin él solo verá Rhino.


Instale el JDK8 y cree un alias para los jjs (Nashorn Interpreter) de su JDK, por ejemplo, si crea un archivo llamado test.js, puede ejecutar el programa con:

$ jjs test.js

Mac OS = alias jjs = ''/ Library / Java / JavaVirtualMachines / jdk1.8.0.jdk / Contents / Home / jre / bin / jjs''

Windows = Defina una variable de entorno llamada ''JAVA8_HOME'' y apunte a su carpeta jdk8, luego puede invocar jjs ejecutando este comando:

> “%JAVA8_HOME%/jre/bin/jjs” test.js


Parece que todavía no hay señales de Nashorn en OpenJDK.

El comentario más reciente de Jim Laskey en octubre de 2012 sugiere el cuarto trimestre de 2012:

https://blogs.oracle.com/nashorn/entry/welcome_to_the_nashorn_blog#comment-1351205506968

Creo que es hora de una etiqueta nashorn en SO!

Actualización del 1 de diciembre de 2012:

Parece que a finales de diciembre de 2012, OpenJDK puede tener https://blogs.oracle.com/nashorn/entry/request_for_project_nashorn_open

Actualización del 10 de marzo de 2013:

@Seth tiene razón en que 1.7 release 3 PRERELEASE no es Nashorn. ¡Mi error!

JDK 8 b68 incluye una rama nashorn~jdk8 aún por fusionar.

El README para esta rama dice:

El repositorio de Nashorn está en proceso de migrarse a OpenJDK y, como tal, está incompleto en varias áreas. El sistema de construcción no está completamente integrado. Cuando se complete, Nashorn se instalará en su ubicación correcta en el JRE. Una vez integrado, la versión correcta del JDK se ajustará a Nashorn. Mientras tanto, asegúrate de usar JDK8 b68 o posterior.

Si selecciona nashorn ~ jdk8 desde la fuente, puede compilar nashorn.jar

cd nashorn~jdk8/nashorn/make ant clean; ant

Puede solicitar el motor "nashorn" de javax.script.ScriptEngineManager en una compilación reciente de jdk 1.8:

jrunscript -cp ./nashorn.jar -l "nashorn" -e "println(engine.factory.getParameter( javax.script.ScriptEngine.ENGINE))" > Oracle Nashorn

o con nashorn.jar en el camino:

ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("nashorn");

Actualización el 19 de marzo de 2014:

Actualización de @ncasas; JDK 8 está fuera y Nashorn es el motor JS predeterminado.