Dominando Groovy: Guia para Iniciantes de Scripting na Plataforma Java
O que é Groovy?
Apache Groovy é linguagem orientada a objetos, compatível com sintaxe Java, que roda na JVM. Compila para bytecode Java, então qualquer sistema com Java Runtime Environment pode executá-lo. Groovy adiciona tipagem dinâmica, closures, suporte DSL e sintaxe concisa, tornando-o companheiro ideal em vez de substituto para Java.
Por que Usar Groovy?
- Linguagem dinâmica, ágil com prototipagem rápida
- Integração perfeita com bibliotecas Java existentes
- Natural para desenvolvedores Java – curva de aprendizado mínima
- Código mais conciso e expressivo que Java
- Pode ser misturado livremente com Java – use quanto quiser
Histórico do Groovy
- 2003 – Desenvolvido por Bob McWhirter & James Strachan
- 2004 – Rascunhado como JSR 241 (abandonado)
- 2005 – Revivido por Jeremy Rayner & Guillaume Laforge
- 2007 – 1.0 lançado
- 2012 – 2.0 lançado
- 2014 – 2.3 (suporta Java 8)
- 2015 – Tornou-se projeto Apache Software Foundation
Principais Features do Groovy
- Sintaxe literal para listas, maps, ranges, regexes
- Multimethods e capacidades de metaprogramação
- Tipagem dinâmica e estática opcional
- Sobrecarga de operadores e sintaxe concisa (sem ponto e vírgula ou parênteses necessários em muitos casos)
- Closures e MetaObject Protocol para scripting poderoso
- Compatibilidade total com bytecode Java e bibliotecas
Como Instalar Groovy
- Garanta Java instalado – guia instalação Java
- Baixe instalador de Página Download Groovy
- Execute instalador, selecione idioma, clique OK
- Clique NEXT na tela de boas-vindas

- Aceite termos de licença

- Selecione componentes para instalar e clique NEXT

- Escolha diretório de instalação e clique NEXT

- Defina pasta Menu Iniciar e clique NEXT

- Finalize instalação (caminhos permanecem padrão) e clique NEXT

- Após instalação, inicie Groovy Console do Menu Iniciar para verificar

Groovy Hello World
Versão Java:
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Equivalente Groovy – uma linha:
println "Hello World."
Groovy remove necessidade de ponto e vírgula, parênteses e System.out.println verboso.
Variáveis
Java requer tipos explícitos:
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
// x = "Guru99"; // Erro de compilação
}
}
Groovy suporta tipagem dinâmica via def:
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Saída:
class java.lang.Integer class java.lang.String
Strings multilinha usam aspas triplas:
def x = """Groovy no Guru99""" println x
Operadores
Groovy suporta categorias usuais:
- Aritméticos:
+ - * / % - Relacionais:
== != < <= > >= - Lógicos:
&& || ! - Bitwise:
& | ^ ~ - Atribuição:
= += -= *= /= %=
Loops
Java for-loop:
for (int i = 0; i <= 5; i++) {
System.out.println(i);
}
Equivalentes Groovy:
0.upto(4) { println "$it" }
2.upto(4) { println "$it" }
5.times { println "$it" }
0.step(7, 2) { println "$it" }
Tomada de Decisão
| Statement | Descrição |
|---|---|
| if | Executado quando condição verdadeira. |
| if/else | Executa branch verdadeiro; senão branch else. |
| nested if | Múltiplos branches condicionais. |
| switch | Alternativa mais limpa para lógica multi-branch. |
| nested switch | Suportado no Groovy. |
Listas
Lista é coleção ordenada de referências, definida com colchetes.
- Lista de strings:
['Angular', 'Nodejs'] - Lista mista:
['Groovy', 2, 4.6] - Lista de inteiros:
[16, 17, 18, 19] - Lista vazia:
[]
Métodos comuns de lista:
| Método | Descrição |
|---|---|
| add() | Adiciona valor ao final. |
| contains() | True se valor existe. |
| get() | Elemento no índice. |
| isEmpty() | True se lista sem elementos. |
| minus() | Retorna nova lista menos elementos especificados. |
| plus() | Retorna nova lista com elementos adicionados. |
| pop() | Remove último elemento. |
| remove() | Remove elemento no índice. |
| reverse() | Retorna lista invertida. |
| size() | Número de elementos. |
| sort() | Retorna cópia ordenada. |
Exemplo:
def y = ["Guru99", "é", "Melhor", "para", "Groovy"]
println y
y.add("Aprendendo")
println(y.contains("é"))
println(y.get(2))
println(y.pop())
Saída:
[Guru99, é, Melhor, para, Groovy] true Melhor Aprendendo
Maps
Map é coleção de pares chave-valor.
- Exemplo:
[Tutorial:'Java', Tutorial:'Groovy']– chaveTutorialcom dois valores. - Map vazio:
[]
Métodos de Map:
| Método | Descrição |
|---|---|
| containsKey() | Verifica existência de chave. |
| get() | Retorna valor para chave. |
| keySet() | Set de chaves. |
| put() | Adiciona ou substitui par chave/valor. |
| size() | Número de entradas. |
| values() | Coleção de valores. |
Exemplo:
def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")
Saída:
Jen
Closures
Closure é bloco de código tratado como objeto, similar a lambda.
Closure simples:
def minhaClosure = { println "Minha Primeira Closure" }
minhaClosure()
Com parâmetros:
def soma = { a, b, c -> return a + b + c }
println soma(1, 2, 3)
Saída:
6
Groovy vs. Java
| Groovy | Java |
|---|---|
| Modificador de acesso padrão é public. | Padrão é package-private. |
| Getters/setters automáticos para campos. | Devem ser definidos manualmente. |
| Interpolação de string com aspas duplas. | Sem interpolação. |
| Tipagem opcional. | Tipagem obrigatória. |
| Sem ponto e vírgula necessários. | Ponto e vírgula obrigatórios. |
Todo script estende automaticamente classe Script. | Precisa public static void main para execução. |
Mitos Comuns
| Mito | Realidade |
|---|---|
| Groovy é apenas para scripting. | Versátil: usado para web frameworks, processamento de dados, mais. |
| Groovy é puramente funcional. | Empresta conceitos funcionais mas permanece linguagem OOP. |
| Groovy é ideal apenas para TDD. | Suporta TDD mas útil em muitos cenários. |
| Groovy limitado a Grails. | Grails é framework popular, mas Groovy funciona independentemente. |
Contras de Usar Groovy
- Startup JVM pode ser mais lento, afetando scripts rápidos.
- Não universalmente adotado fora ecossistemas Java.
- Menos conveniente sem IDE.
- Performance runtime pode ficar atrás de Java.
- Footprint de memória maior.
- Conhecimento Java essencial para uso efetivo.
Ferramentas Essenciais do Groovy
- groovysh – Shell interativo de linha de comando.
- groovyConsole – GUI Swing para rodar scripts.
- groovy – Interpretador de linha de comando para executar scripts.
Exemplos de uso:
groovysh
- Insere statements ou scripts inteiros interativamente.
groovyConsole
- Editor minimalista para escrever e rodar código Groovy.
groovy
- Executa scripts Groovy da linha de comando.
Resumo
- Groovy é linguagem orientada a objetos para plataforma Java.
- Oferece integração perfeita com bibliotecas Java.
- Features-chave incluem tipagem dinâmica, closures, sintaxe literal.
- Suporta operadores padrão, controle de fluxo, coleções e maps.
- Automatiza getters/setters e elimina boilerplate.
- Embora possa ter trade-offs de performance, ganhos de produtividade são significativos.
- Ferramentas Groovy como groovysh, groovyConsole e interpretador groovy agilizam desenvolvimento.
Java
- Dominando Loops for em Java: Sintaxe, Exemplos e Boas Práticas
- Construa um Robô Evita-Obstáculos com Raspberry Pi – Guia para Iniciantes
- Roteadores CNC para Iniciantes: Domine o Mercado com Precisão Sem Esforço
- Dominando PowerShell: Guia para Iniciantes de Scripting Poderoso
- Domine a Programação C: Tutorial Completo em PDF para Iniciantes
- Tutorial de Arrays em Java: Declaração, Criação e Inicialização – Código de Exemplo
- Java Stack vs Heap: Guia Prático de Alocação de Memória
- Programa Java para Identificar Números de Armstrong Usando Loop For
- Verificador de Número Palíndromo em Java: Algoritmos com While e For Loops
- Fabricação de Metal 101: Guia Claro para Iniciantes