Jan 08, 2012

Groovy como alternativa a Java sin dejar la JVM

Groovy logo

En un post anterior nuestra amiga Osledy nos mostró un video donde se daba una introducción a Groovy.

Luego de verlo me animé a revisar un poco el lenguaje y lo que puede hacerse. Resulta que ofrece casi la misma funcionalidad de Ruby casi con la misma sintaxis. Pero aún así seguimos dentro de la JVM y podemos acceder a cualquier clase Java.

En este post revisamos brevemente algunas similitudes con Ruby y cómo la integración con Java es directa.

El ejemplo más trivial: Hola mundo

Comenzando por lo más básica ya vamos viendo la cantidad de código que nos ahorramos. Acá las versiones Groovy y Java:

                println 'Hola mundo'
                public class Main {
                  public static void main(String[] args) {
                    System.out.println("Hola mundo");
                  }
                }

En Groovy se crea una clase Java a nivel de los bytecodes con su main que imprime el mensaje. Así nos ahorramos el código verboso Java.

Ciclos y clausuras

La sintaxis para los ciclos que se ejecutan N veces es casi igual a Ruby:

                10.times { x -> println x*x }

Acá estamos imprimiendo el cuadrado de los 10 primeros naturales. De esta manera nos ahorramos un montón de líneas comparado con Java. Note que el código que se ejecuta está en una clausura que recibe un parámetro x. El código equivalente en java sería:

                for(int x=0;x<10;x++)
                  System.out.println(x*x);

El código Groovy resulta mucho más expresivo y claro en lo que hace en especial para aquellos acostumbrados a la notación matemática. El código Java luce más máquina y menos expresión humana.

Seguimos dentro de la JVM

Si queremos usar las clases de la biblioteca estándar no se necesita ningún paso de configuración ni conversión de ningún tipo. Acá un ejemplo de una ventana Swing:

                frame=new javax.swing.JFrame()
                frame.setSize 300, 200
                frame.setVisible true

Manejo de archivos de Java en esteroides

Groovy trae aparte de full acceso a la biblioteca estándar sus própias adiciones que le agregan facilidades. Por ejemplo los archivos tienen métodos como readLines que devuelve una lista con cada línea del archivo o eachLine que permite iterar por éstas. En el siguiente ejemplo contamos las líneas en un archivo de texto:

                lineas=0
                file=new File('algunarchivo.txt')
                file.eachLine { lineas++ }

Esto en Java serían muchas líneas más. Estos detalles los considero geniales en Groovy.

Manejo de listas soportado por el lenguaje

En Java no hay soporte alguno a las listas en el lenguaje. Se trabaja con java.util.List y sus implementaciones como ArrayList. En Groovy es utiliza exactamente lo mismo pero no tenemos que instanciar dichas clases directamente. Considere el siguiente ejemplo en Groovy:

                listaV=[] // una lista vacía
                listaK=[6, 7, 10] // una lista con tres elementos
                listaN=[1, 5, 7] // otra
                listaN << 9 // agregamos 9 a la listaN
                println listaN // imprimimos la lista con el 9 extra
                println listaN[0] // atajo de listaN.get(0)
                println listaN.any { it>10 } // ¿alguno es mayor a 10?
                println listaN.every { it<10 } // ¿todos son menores a 10?
                println listaK+listaN // mismo que listaK.addAll(listaN)

Los que conocen el lenguaje Java imaginen cuántas líneas les llevaría esto. Acá vemos un código limpio, expresivo y aún así son ArrayList que funcionarán tan rápido como estamos acostumbrados.

Concluyendo

¡Ánimo! Groovy puede ayudar mucho a acelerar su desarrollo. Hay muchas cosas más que aprender pero es bastante intuitivo y se consigue muy buena información en la Web y literatura técnica.

Actualmente estoy leyendo Groovy in Action y lo he encontrado muy ameno.

Licenciado en Computación. Linuxero, especialista en Java, autodidacta, gustoso de explorar lenguajes y herramientas de programación. Considero que eso que nos hace programador es un músculo que debemos mantener en forma

Tags: groovy Java Ruby

Comparte este articulo: