Mostrando entradas con la etiqueta Groovy. Mostrar todas las entradas
Mostrando entradas con la etiqueta Groovy. Mostrar todas las entradas

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