Mejora de productividad con Groovy | el holgazán

sábado 10 de mayo de 2008

Mejora de productividad con Groovy

Ya sabemos que Groovy es un lenguaje:

  • ágil y dinámico que se ejecuta en la máquiva virtual Java.
  • compila como bytecodes Java, de forma que puedes utilizarlo allí donde puedes usar Java.
  • se integra con todos los objetos y librerías Java existentes.
  • proporciona toda la potencia de Java y proporciona características adicionales basadas en lenguajes como Python, Ruby y Smalltalk.
  • disminuye la curva de aprendizaje.
  • incrementa la productividad del desarrollo web, de interfaz de usuario, de acceso a base de datos o de consola.
  • simplifica el desarrollo de pruebas.
  • soporta lenguajes de dominio específicos y otras sintaxis para que el código sea más fácil de mantener.
Aquí va un ejemplo:

Con Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class WalkFile {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("../simpleFile.txt"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Con Groovy:
new File("../simpleFile.txt" ).eachLine{line ->
println line

Y es que no es sólo cuestión de líneas de código...

Estás son algunas características que este lenguaje nos ofrece:
  • imports automáticos. Igual que Java permite utilizar java.lang.* sin hacer imports, Groovy permite utilizar muchos más paquetes de la JDK y GDK.
  • El punto y coma es opcional, si una línea tiene sólo un comando.
  • Los paréntesis son opcionales al llamar a un método.
  • También es opcional indicar "return" cuando un método devuelve un resultado.
  • Es opcional declarar los tipos de datos, de forma que el lenguaje es dinámicamente tipado.
  • El manejo de excepciones es opcional.
  • Existe sobrecarga de operadores. Por ejemplo: a[b]=c es a.putAt(b,c)
  • Hay una forma sencilla de ignorar los NullPointerException, sin tener que recurrir ala tediosa formade estar haciendo if antes. Ejemplo: s?.doSomething()