Então no dia 31/3/2015 saiu a versão 3.0 do Grails. Neste post listo algumas coisas que, acredito, é interessantíssimo que você comece a estudar ou considerar na hora de adotar este novo release.
Sai o Gant e entra o Gradle
Considero esta a mudança de maior impacto pois a partir da versão 3.0 do Grails seus scripts Gant não irão mais funcionar e a estrutura de arquivos e diretórios dos projetos sofrerá algumas modificações. Para quem não conhece, Gradle (já escrevi sobre ele anos atrás aqui) e Gant são mecanismos de build, ou seja, eles automatizam todo o processo de compilação, execução e implantação do seu projeto.
No caso do Grails, todos estes comandos que usamos na linha de comando, tais como create-controller, create-domain, run-app e outros são na realidade scripts Gant até a versão 3.0. Daqui para frente serão scripts do Gradle.
A má notícia é que se você possuí um esquema de construção mais evoluído com scripts personalizados só há duas alternativas se for migrar para o Grails 3.0:
- Encontrar um meio de executar seus scripts Gant no Gradle (ainda não sei se é possível, mas já vou iniciar uma pesquisa a respeito).
- Adotar o Gradle como seu mecanismo de construção e ciclo de vida daqui para frente, reescrevendo sua infra.
A boa notícia é que a adoção do Gradle nos insere em uma comunidade ordens de magnitude mais ativa que a do Gant. Convenhamos, acho que apenas programadores Grails o conheciam, ao contrário do Gradle que, dentre outras coisas, é hoje o mecanismo padrão adotado pela Google no desenvolvimento de aplicações Android.
Gradle vai além do “mero mecânismo de build”. Ele nos fornece controle total sobre o ciclo de vida do projeto: gestão de dependências, construção, implantação, testes, etc. Abaixo estão alguns ganhos que teremos:
- Uma comunidade muito mais ativa.
- Uma infinidade de plug-ins que podemos tirar proveito.
- Suporte muito maior por parte das IDEs. Por exemplo: sabia que o JetBrains IDEA oferece suporte nativo ao Gradle? Se o projeto Grails é baseado em Gradle, e a versão community o suporta… talvez você nem precise mais comprar a versão comercial. Não uso o IDEA ou qualquer IDE no meu dia a dia mas já estou ouvindo alguns relatos positivos desta experiência.
Se você nunca se preocupou com o Gant no seu desenvolvimento Grails esta mudança não irá alterar muito seu dia a dia. Caso contrário, chegou a hora de por a bunda na cadeira e aprender esta ferramenta (que é muito legal, diga-se de passagem). Que tal dois livros gratuitos sobre o assunto?
- Building and Testing with Gradle (bem básico)
- Gradle: beyond the basics (conceitos mais avançados)
Spring Boot!
Spring Boot é um meta framework desenvolvido pela Pivotal baseado em Spring. Escrevi sobre ele há pouco tempo atrás para a revista Java Magazine. Na minha opinião ele simplesmente restaurou o aspecto inovador do Spring e, novamente, mudou radicalmente a maneira como vemos o desenvolvimento corporativo na plataforma Java EE.
O que ele te trás enquanto desenvolvedor Grails?
- Acesso aos módulos disponibilizados ao Spring Boot. Há diversos como, por exemplo, monitoramento, segurança, logging, etc. Você pode ter uma noção acessando este assistente que cria um projeto Spring Boot para você: http://start.spring.io. Neste momento ainda não sei como iremos tirar proveito destes recursos pois não está claro, mas com certeza eles estarão disponíveis para nós.
- A possibilidade de empacotar sua aplicação não como um WAR, mas sim como um JAR com o Tomcat embarcado e todas as dependências necessárias. Isto facilita bastante o processo de implantação (basta executar java -jar seuarquivo.jar) e na adoção de arquiteturas como micro serviços (sobre as quais já escrevi aqui e aqui).
Por enquanto, no seu dia a dia acredito que a única grande mudança é a possibilidade de gerar um arquivo JAR.
Pequenas mudanças na estrutura de diretórios e arquivos de configuração
Há pequenas mudanças no modo como nosso código fonte é organizado no Grails 3.0, mas nada muito radical. As principais que vejo neste momento são as seguintes:
- Não existe mais o arquivo BuildConfig.groovy. As configurações referentes a dependências ficam agora no arquivo build.gradle na raíz do projeto.
- DataSources.groovy também não existe mais: agora as configurações de acesso ao banco de dados ficarão em grails-app/conf/application.yml
- O antigo Config.groovy foi renomeado para application.groovy
- A antiga pasta target agora se chama build (consequência direta do Gradle)
- src/java mudou para src/main/groovy
- src/groovy mudou para src/main/groovy (mas a mesma pasta? Sim, e sabia que no Grails 2.x e anterior se você colocasse código Groovy em src/main/java ele funcionava e vice-versa? Acabaram com esta bagunça, ponto pra eles.).
- test/unit agora fica em src/test/groovy
- test/integration agora fica em src/integration-test/groovy
Quando disse que o Gradle foi a mudança mais impactante não estava brincando: a maior parte destas mudanças que cito aqui são consequência direta da sua adoção.
Também foi inserido um novo formato de configuração padrão, o YAML, mas se quiser, você pode continuar usando Groovy para seus arquivos de configuração.
Plug-ins
O formato padrão de empacotamento de plug-ins passa a ser o binário, e os plug-ins da versão 2.x e anteriores do Grails não funcionarão na 3.0 (!!!). Mas não se assuste, pois o processo de atualização e geração de novas versões é muito fácil. Sendo assim, acredito que nas próximas semanas já veremos a maior parte dos nossos plug-ins favoritos sendo migrados para a nova plataforma.
Se sua aplicação depende fortemente de plug-ins, minha recomendação neste momento é esperar que os autores façam o trabalho para você. Caso não o façam, você mesmo pode executar esta tarefa. Basta seguir este guia.
Devo fazer o upgrade agora então?
Ok, a versão 3.0 em teoria significa ser estável, mas neste primeiro release (3.0.0) minha recomendação é que você apenas a experimente e não pule de cabeça ainda.
Históricamente os primeiros releases do Grails costumam ter um número significativo de bugs. Começo a pensar em upgrades somente após a versão 3.0.2. Outro fator que deve ser levado em consideração é que hoje muitos plug-ins ainda não são compatíveis com o 3.0.
Seu livro fala sobre o Grails 3.0, Kico?
Sim, fala sobre o 3.0 e bastante mais sobre 2.x que, acredito, será a versão mais usada nos próximos dois anos (é o tempo que observo o pessoal levar para fazer estes upgrades em produção).
O capítulo final é só sobre a versão 3.0 e durante todo o contéudo incluí notas falando sobre as diferenças entre os dois.
Este Grails 3.0 é legal mesmo?
É um salto enorme. A adoção do Gradle sozinha já valeria o esforço do upgrade devido aos ganhos que mencionei. Ter como base o Spring Boot também é fenomenal. Por mais incrível que possa parecer a implantação de aplicações web Java costuma ser uma dor de cabeça para muita gente, e a possibilidade de gerar um único arquivo JAR resolveria estas questões.
Finalmente, ao que tudo indica muitas partes do framework foram reescritas e em teoria, temos uma plataforma mais estável e com maior longevidade. E sabem o que achei mais legal? O processo de upgrade é super simples, e tudo o que fazíamos (ou 99%) no Grails pré 3.0 se mantém.
Sugiro que vocês leiam a parte da documentação sobre upgrade para maiores detalhes. Você a encontra neste link.
E também adoraria saber suas experiências com o 3.0, tanto aqui neste blog quanto no Grails Brasil!
Parabéns pelo artigo, estou estudando Groovy/Grails, e pretendo me aprofundar nesse interessente ecossistema.
Sou desenvolvedor Delphi/Java EE, e neste ultimo realmente tenho sentido uma grande perda de produtividade (JPA, EJB).
Mais sempre fica o receio na adoção de um novo framework, ainda mais depois da questão da Pivotal ter saído, e a Apacha embora seja um ótimo local, fica com a impressão que ela assume bons projetos, porem projetos que já passaram, isso pode ser só impressão.
Espero realmente com Groovy/Grails, retomar a paixão no desenvolvimento Java EE.
Parabéns meu conterrâneo pelo ótimo trabalho de divulgação.
Oi João, valeu!
No caso da Apache assumir o Groovy, foi a melhor coisa que poderia ter ocorrido para a linguagem. Se você observar com atenção, vai ver que a Pivotal não era lá tão grande mantenedora assim. Ela mais fechava que abria o projeto.
Na Apache fica muito mais fácil todos nós vermos o que está acontecendo e, principalmente, participar na evolução destes projetos.
O que você deve levar em consideração é o imenso ecossistema que existe hoje em Groovy (principalmente) e em Grails (a infinidade de plug-ins e empresas que o usam internamente em seus projetos).
Obrigado amigo pela atenção e desculpe pelos erros causados pelo corretor ortográfico do celular.
Estou atualmente estudando os livros “Making Java Groovy” e “Grails in Action” da Manning, espero que sejam boas leituras, e já está na fila comprar o teu sobre Grails assim que estiver disponível.
Vamo que vamo adentrar o mundo Grails.
Valeu.
Que notícia assustadora ‘Saiu o Grails 3.0’!!! Venho desenvolvendo em grails desde 2009 e quase sempre seguindo as atualizações, mas parei na versão 2.3.11 pois ainda estou usando o plugin ACEGI mesmo sabendo que o mesmo foi descontinuado, mas são mais de dez sistemas feitos e mantidos apenas por mim aqui no meu trabalho e o ACEGI não funciona nas versões mais recentes. Agora terei que atualizar todos para o grails 3.0 e começar a utilizar o Spring Security. Não conheço seu livro, mas gostaria de conhecer, você poderia me dizer onde posso encontrar seu livro.
Parabéns pelo post.
Oi André, obrigado!
O livro vai ser publicado pela editora Casa do Código (http://www.casadocodigo.com.br).
Com relação a frameworks que tenham plug-ins, sempre vamos ter esta pedra no sapato. É como te digo: aguarde o Grails 3.0.5 pelo menos, pois a quantidade de plug-ins vai ser maior e valerá mais à pena migrar.