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.
Con Java:
import java.io.BufferedReader;Con Groovy:
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();
}
}
}
}
}
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()