El uso de clases Java por un programa Groovy es directo cuand las clases Java forman parte de JDK: se importan las clases o los paquetes de la misma forma que se hace en Java. De hecho el intérprete Groovy ya importa un cierto número de clases y paquetes:
* java.io.* * java.lang.* * java.math.BigDecimal * java.math.BigInteger * java.net.* * java.util.* * groovy.lang.* * groovy.util.*
Veamos un ejemplo para clases que no están en JDK.
El programa cliente es UseGreetJava.groovy
y la clase Java está en java/com/agiledeveloper/GreetJava.java
:
generaciondecodigos@nereida:~/src/groovy/separatedcomp$ tree . |-- UseGreetJava.groovy |-- java | `-- com `-- agiledeveloper `-- GreetJava.class
Estos son los contenidos de la clase Java:
generaciondecodigos@nereida:~/src/groovy/separatedcomp$ cat -n java/com/agiledeveloper/GreetJava.java 1 package com.agiledeveloper; 2 3 public class GreetJava { 4 public static void sayHello() { 5 System.out.println("Hello from Java class GreetJava"); 6 } 7 }
Comenzamos compilandola con javac, lo que nos genera el correspondiente fichero .class
:
generaciondecodigos@nereida:~/src/groovy/separatedcomp$ cd java/com/agiledeveloper/ generaciondecodigos@nereida:~/src/groovy/separatedcomp/java/com/agiledeveloper$ javac GreetJava.java generaciondecodigos@nereida:~/src/groovy/separatedcomp/java/com/agiledeveloper$ ls -ltr total 8 -rw-r--r-- 1 generaciondecodigos generaciondecodigos 153 2009-11-12 12:53 GreetJava.java -rw-r--r-- 1 generaciondecodigos generaciondecodigos 441 2009-11-12 16:42 GreetJava.class
Los contenidos del script Groovy se limitan a una llamada al método
sayHello
:
generaciondecodigos@nereida:~/src/groovy/separatedcomp$ cat -n UseGreetJava.groovy 1 com.agiledeveloper.GreetJava.sayHello();
Para ejecutar el programa es necesario que el intérprete groovy
encuentre la clase. Añadimos
la opción -classpath java/
para indicarle que incluya dicho directorio en el camino de
búsqueda de librerías. Esto es sólo necesario si el fichero de la clase
está en un directorio distinto que el del código Groovy.
generaciondecodigos@nereida:~/src/groovy/separatedcomp$ groovy -classpath java/ UseGreetJava.groovy Hello from Java class GreetJava