2009-09-24 12 views
13

He estado leyendo acerca de Rhino como una forma útil de implementar JavaScript dentro de mi código Java.Ventajas de usar Rhino (rinoceronte de mozilla)

Después de leer por un tiempo, buscando en google y aquí, no pude encontrar una razón real por la que usaría JavaScript dentro de Java.

¿Podría señalar algunas ventajas reales que encuentra al usar Rhino para una aplicación Java normal?

+0

Además de lo que otros dijeron, el desarrollo de juegos es un gran ejemplo. Tener scripts externos es una práctica muy común en el desarrollo de juegos por varias razones, y si estás escribiendo un juego en Java y quieres usar JavaScript como tu lenguaje de scripting, Rhino es genial. – Josh1billion

Respuesta

10
  1. Procesamiento de XML con Rhino y E4X es una alegría en comparación con la mayoría de las API de Java XML
  2. Has JavaScript existentes que "simplemente funciona" y que no quieren volver a escribir. Esto puede suceder si tiene algún cálculo o procesamiento que ocurra en el lado del cliente y lo mueva al servidor.
  3. Todo tipo de ordenado almacenamiento en caché y trucos de carga de código.
  4. Su problema se resuelve mejor con un lenguaje más dinámico que Java.
  5. Las listas por comprensión;)
+1

Tienes razón. Utilizaría Jython en lugar de JavaScript para cubrir la mayoría de los puntos que me has dado. Pero tu probablemente un chico java no lo haría. – Santi

5

La ventaja de incrustar un lenguaje de script como javascript en su software es que puede ofrecer a los demás una forma de escribir complementos para su software sin proporcionar el código fuente.

Una razón para escribir toda la aplicación en otro idioma es que puede escribir una aplicación para una empresa que la implementa en su entorno Java EE sin tener que aprender Java.

+1

Para permitir que otros se conecten a su aplicación sin revelar el código fuente, todo lo que necesita es un paquete con algunas interfaces. –

+0

IBM Maximo 7.5 + hace esto (Rhino o Jython), y la ventaja adicional es que evita la personalización de su software, lo que hace que las actualizaciones sean más fluidas. – Bratch

14

Tenga en cuenta que, desde Java 6, la API de scripts está en la biblioteca estándar de Java: consulte la documentación del paquete javax.script. La API en javax.script es una versión adaptada de Rhino. La API de scripting admite no solo JavaScript, sino muchos otros lenguajes de scripting.

Ver Java Scripting Programmer's Guide

La portada no menciona algunas de las razones es posible que desee utilizar secuencias de comandos:

  • extensión de Aplicación/personalización: Puede "externalizar" partes de su aplicación - como scripts de configuración, lógica/reglas de negocios y expresiones matemáticas para aplicaciones financieras.
  • shell de "línea de comandos" para aplicaciones -para la depuración, configuración de tiempo de ejecución/implementación etc. La mayoría de las aplicaciones tienen una herramienta de configuración de interfaz gráfica de usuario basada en la web en estos días. Pero los administradores de sistemas/implementadores prefieren con frecuencia herramientas de línea de comandos. En lugar de inventar un lenguaje de scripts específico para ese propósito, se puede usar un lenguaje de scripting "estándar".

Un ejemplo: Puede escritura de Oracle Weblogic usando scripts de Python, por ejemplo, para configurar el dominio de servidor de aplicaciones, para iniciar o detener el servidor y hacer otras tareas de administración.

+0

¿Qué son estos otros idiomas? –

+1

@WesleiPrudencio ver http://stackoverflow.com/questions/11838369/where-can-i-find-a-list-of-available-jsr-223-scripting-languages ​​ – Jesper

4

Utilizamos JS (a través de Rhino) para una conexión DSL en uno de nuestros productos. No es un gran DSL, pero eso es una falla de cómo usamos JS, en lugar de Rhino.

+0

Soy todo para corto y dulce, pero no está claro para mí lo que DSL se refiere en este contexto. ¿Te importaría iluminarme? – WynandB

+1

DSL = Idioma específico del dominio. Básicamente, necesitábamos un lenguaje que permitiera a las personas expresar reglas. Javascript es bueno porque es fácil configurar lo que el usuario puede y no puede hacer al especificar lo que está en el contexto global. No incluye requerido. – user1545858

0

Si está pensando en .Net también, sugiero llevarse bien con Rhino.

Además de entornos Java, el rinoceronte es uno de los mejores intérpretes de rendimiento en el entorno .NET (con IKVM). Por otro lado, Nashorn es muy lento en .net.

Llevar su propio proyecto de Rhino a .NET no es tan difícil.

Cuestiones relacionadas