Eu já uso a linguagem Groovy a alguns anos, em diferentes empresas e diferentes projetos em produção. Vários arquitetos do meu circulo de amizade também usam groovy em produção.

A idéia desse post é mostrar algumas referencias, pontos fortes, vantagens, e convencer mais pessoas a terem os benefícios dessa ferramenta.

Versão super resumida: Groovy é uma lib que você inclui em projetos java e com isso possibilita escrever código menos verboso (ex: sem ";", return, DTOs menores, etc), possibilita programação funcional (ver closures) e extende as classes java existente (ver closures para lista / mapa / URL, parser de XML / Json).

Se você já sabe java já sabe 70% de groovy. E groovy é uma daquelas coisas que quando você começa a usar é difícil voltar.

No report feito pela rebellabs de 2016, groovy é mais usado que scala!

TnT 2016 podium jvm languages v1

Groovy x Java

Nessa parte, concordo muito com os pontos levantados por Paul King:

  • Java é muito verboso

  • Complicado para usar programação funcional

  • Demora para evoluir (ver wikipedia)

  • Java é muito complexo para algumas situações

  • Groovy fornece mais flexibilidade, melhor concorrencia

Olhe essa conversão de código java para código groovy:

Não tá convencido ainda? Olha esse código de manipulação de arquivo:

e nos slides 80-82 ele mostra como fazer com xml.

Sql? Olha os slides 90-92.


Alguns snippets de código

Java

Groovy

vo

vo

list

list

map

map

file

file

url

metaclass

xml

json

Todos os arquivos estão disponíveis no github

PS: post ia ficar muito extenso se eu incluisse todos os códigos aqui. Mas concordo que ficou ruim de ver. Dica: baixa o código do github e vê local


Ecossistema do groovy?

Teve uma apresentação na g8conf sobre o ecossistema do groovy:

Sim, tá um pouco desatualizada, mas dá para dar uma idéia.

Highlights:

  • Gradle: todas as facilidades do Maven, com a flexibilidade do Ant. E não precisa de XML. E pode fazer qualquer coisa que a linguagem java/groovy permitem

  • SDKMan: gerenciador de SDKs para Maven, Ant, Java, Groovy, Scala, Clojure, etc

  • Grails: akas groovy on rails. Super junção do Spring + Hibernate + Gradle + Groovy + boas práticas. Dá uma olhada no GORM e vê o poder disso

  • Spock: Framework de testes. Tipo jUnit, mas com o poder do groovy + BDD e outras coisas.

  • Geb: extensão do Spock para testes de tela. Tipo Selenium.

  • Spark Java: Framework tipo Sinatra para criar aplicações web / APIs. Muito mais leve que Spring boot

  • GPars: Framework para concorrencia e paralelismo


E quem usa Groovy?

O Paul King mostra isso na apresentação dele:


Ok…​ quem usa groovy no Brasil?

O Henrique Weissmann mostra isso na apresentação dele:


Next Steps


Referencias:

Curtiu o post? Não curtiu? Achou mais ou menos? Dúvidas / perguntas / sugestões? Deixa um comentário aí.