La primera prueba que he realizado ha sido la de ejecutar un método de una clase groovy dentro de un main de java.
En concreto he creado la clase "HelloGroovy.groovy":
package main
class HelloGroovy {
public String getHello(){
return "Hello from groovy class";
}
}
Y después una clase Java que llama al método "getHello", la clase "EmbeddedGroovy.java":package main
package main;
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import java.io.File;
public class EmbeddedGroovy {
public static void main(String args[])throws Exception{
ClassLoader parent = EmbeddedGroovy.class.getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class helloGroovyClass = loader.parseClass(new File("src/main/HelloGroovy.groovy"));
GroovyObject groovyObject = (GroovyObject) helloGroovyClass.newInstance();
Object[] arguments = {};
String hello = (String)groovyObject.invokeMethod("getHello", arguments);
System.out.println(hello);
}
}
Como se puede apreciar esta llamada es muy parecida a la que se haría si la clase en lugar de ser de tipo groovy fuera java, pero existen otras manera de invocar a scripts groovy muy interesantes por ejemplo utilizando GroovyScriptEngine, de esta manera se puede ejecutar un script groovy dentro de una clase java tal y como se muestra en el siguiente ejemplo.
Script groovy hello.groovy:
println("Hello World");
Y la clase java ExecuteGroovyScript.java:
package main;
package main;
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
public class ExecuteGroovyScript {
public static void main(String args[])throws Exception{
String[] scripts = new String[] { "src/main" };
GroovyScriptEngine gse = new GroovyScriptEngine(scripts);
Binding binding = new Binding();
gse.run("hello.groovy", binding);
}
}
Al ser totalmente interpretado dota a java de la posibilidad de modificar script groovy y afectar al programa que lo incorpora sin necesidad de compilar, es más tal y como se muestra en la página http://groovy.codehaus.org/Embedding+Groovy existe la posibilidad de pasar parámetros a los scripts.
En la página mencionada anteriormente también describe un ejemplo básico utilizando la shell de groovy.
No hay comentarios:
Publicar un comentario