Groovy, Gradle, Spock
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!
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 |
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.
-
Spark Java: Framework tipo Sinatra para criar aplicações web / APIs. Muito mais leve que Spring boot
-
GPars: Framework para concorrencia e paralelismo
Next Steps
-
Olhar projetos em groovy. Tenho vários no github
-
Aprender Gradle. Tem alguns exemplos no meu github. E tem a apresentação do Felipe Mamud no TDC Florianópolis.
-
Aprender Spock (para testes). Projeto completo aqui. E esse artigo
Referencias:
Curtiu o post? Não curtiu? Achou mais ou menos? Dúvidas / perguntas / sugestões? Deixa um comentário aí.