Usando clases Java desde Groovy

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.

Estructura de la aplicación

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

La Clase Java

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  }

Compilación de la clase Java

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

El cliente Groovy

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();

Ejecución

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



Subsecciones
Casiano Rodríguez León
2010-04-30