Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

vnsjava

Rhino: JavaScript for Java

Marzo 26th, 2007 - [Enlace local]

Para implementar la funcionalidad de ejecución de javascript en mi SearchEngine con Agentes de Jade, estuve leyendo un articulo interesante sobre Rhino que es una implementación de Javascript para java que permite scripting en aplicaciones Java. Esto es posible en Java 6 como una nueva característica, ya puedes correr PHP, Ruby, JavaScript, Python (or Jython).



Por cierto, Rhino viene integrado en Java SE 6, por lo tanto si tiene Java SE 6 ya puedes utilizar esta característica.



La características de este puedo mencionar:

The Mustang Meets the Rhino: Scripting in Java 6



Ejemplo:



package org.vnssoftware;



import javax.script.Bindings;

import javax.script.Compilable;

import javax.script.CompiledScript;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException;



public class Scripting {

public static void main(String[] args) {

ScriptEngineManager engineManager = new ScriptEngineManager();



ScriptEngine engine = engineManager.getEngineByName("js");



engine.put("age", 21);

try {

engine.put("age", 26);

engine.put("noClaims", Boolean.TRUE);

Object result = engine.eval(

"if (age < 25){ " +

" riskFactor = 1.5;" +

"} else if (noClaims) {" +

" riskFactor = 0.75;" +

"} else {" +

" riskFactor = 1.0;" +

"}");

System.out.println(result);



// using javascript files

//engine.eval(new FileReader("c:/voting.js"));



// importing java classes

engine.eval("importPackage(java.util); " +

"today = new Date(); " +

"print('Today is ' + today);");



// using object instances passed to the script engine, and on static class members.

engine.put("name","John Doe");

engine.eval("name2 = name.toUpperCase();" +

"print('Converted name = ' + name2); \n");



// script engine implementations support script compilation

Compilable compilable = (Compilable) engine;

CompiledScript script = compilable.compile(

"if (age < 25){ " +

" riskFactor = 1.5;" +

"} else if (noClaims) {" +

" riskFactor = 0.75;" +

"} else {" +

" riskFactor = 1.0;" +

"}");



Bindings bindings = engine.createBindings();

bindings.put("age", 26);

bindings.put("noClaims", Boolean.TRUE);

bindings.put("riskFactor", 1);

script.eval();



// call individual functions defined in the script from your Java code.

engine.eval("function increment(i) {return i + 1;}");

Invocable invocable = (Invocable) engine;

Object resul = invocable.invokeFunction("increment", new Object[] {10});

System.out.print("result = " + resul);



} catch (ScriptException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

}



}

}

» Leer más, comentarios, etc...

Información legal y técnica