Introdução a Grails: 
Um framework veloz e 
poderoso 
Bruno Lorenço Lopes 
Analista de Tecnologia da Informação (SIn – UFSCar) 
14 de outubro de 2014
Apresentação Pessoal 
 Nome: Bruno Lorenço Lopes 
 Formação 
 Graduação em Engenharia de Computação na USP São Carlos (2005 
- 2009) 
 Especialização em Desenvolvimento de Software para a Web na 
UFSCar (2010 - 2011) 
 Mestrado em Ciências da Computação e Matemática 
Computacional na USP São Carlos (2011 - 2014) 
 Experiência Profissional 
 Estágio em desenvolvimento de software no CPqD (2009) 
 Analista de Sistemas na Enalta (2010 - 2011) 
 Analista de Tecnologia na UFSCar (2013 - ?) 
 Co-fundador do site www.acerteocarro.com 
2
Recordar é viver... 
 Desenvolvimento do sistema Open BR Track 
 Sistema para monitoramento e gerenciamento de 
entregas de produtos 
 JSF + EJB + JPA 
 Organização muito dependente do desenvolvedor, pode 
variar de projeto para projeto 
 Muitos arquivos XML (configurações) 
3
Recordar é viver... 
 Desenvolvimento do sistema Open BR Track 
 Muito código repetido e desnecessário 
 Muito burocrático 
 Código confuso 
 Dificuldade de mudanças 
 Baixa produtividade 
4
Arquivos XML... 
5
Código desnecessário e repetitivo... 
6
Burocracia... 
7
Dificuldade de mudanças... 
 Alterações nas entidades geravam: 
 Mudanças no banco de dados 
 Mudança nos DAOs (Data Access Object) 
 Mudanças nos serviços (fachadas) 
 Mudanças nos Managed Beans 
 Mudanças nos XHTML 
8
Código confuso... 
9
Um Pouco de História 
 O desenvolvimento do Grails começou em julho de 2005, inspirado no Ruby on 
Rails 
 Originalmente o nome era Groovy on Rails 
 Versão 0.1 saiu em 29 de março de 2006 
 Versão 1.0 saiu em 04 de fevereiro de 2008 
 Atualmente a versão mais recente é a 2.4.3 
 A versão 3.0 se encontra em desenvolvimento e é prevista para 2015 
 Projeto é patrocinado e liderado pela Pivotal Sofware 
10
Groovy e Grails 
 Linguagem de programação dinâmica que roda na JVM 
 Framework fullstack (pilha completa) para desenvolvimento de aplicações 
web 
11
Arquitetura 
12
O que você ganha com Grails? 
13
Princípios do Grails 
 Convenção em vez de Configuração – Ao invés de fazer toda a configuração 
explicitamente em arquivos XML, o nome e a localização dos arquivos indicam 
sua função. Sempre que possível siga as convenções. 
 DRY (Don’t Repeat Yourself) – No Grails existe um conjunto organizado de 
artefatos disponíveis para os desenvolvedores, além de geradores de código 
fonte. Além disso, o Grails favorece a adoção do DRY nos projetos. 
 MVC (Model-View-Controller) – Padrão arquitetural de software que se baseia 
na divisão do software em camadas com funções bem definidas. 
14
Model-View-Controller 
15 
Modelo 
Visão 
Controlador 
Responsável pela organização dos dados e 
pelas regras do negócio 
Responsável apresentação e visualização dos 
dados 
Responsável pela integração entre as camadas 
de Visão e Modelo
Model-View-Controller na Web 
16 
3. O modelo 
devolve os 
dados pedidos 
Modelo Visão 
Controlador 
Browser 
2. O controlador 
pede dados ao 
Modelo 
1. O usuário envia um 
pedido de url 
4. O controlador 
seleciona a visão e 
fornece os dados 
5. A visão selecionada 
é devolvida ao 
controlador 
6. O controlador devolve a visão 
como resposta para o browser
Criando uma App Grails 
17 
 Comando create-app: Cria uma nova aplicação Grails
Classes de domínio 
Controllers e Serviços fazem 
fazem 
parte do Modelo 
Scripts Grails, por 
exemplo para 
configuração 
Estrutura de um projeto Grails 
18 
parte do 
Controlador 
Views e Taglibs 
fazem parte do 
CoCdoenctsreo lcaldaosrses 
específicas do 
“DicioGnárariiolss” para 
inteArrnqauciivoonsa ldizea ção 
Configuração 
Código Java! 
Código Groovy 
Tes“tTgeeessn tuéenrsii ctdáoer” ios 
integração
Estrutura de um projeto Grails 
Tudo que está no 
classpath, como 
Nome e versão da 
aplicação, versão 
Recursos como 
CSV, javascripts e 
19 
Lista de Plugins 
utilizados 
bibliotecas 
do Grails 
imagens 
WEB-INF, META-INF 
Grails Wrapper
Grails Wrapper 
 Permite construir a aplicação sem ter que configurar o 
Grails 
20
Rodando a aplicação 
21 
 Comando run-app: Roda a aplicação em modo de 
desenvolvimento
A aplicação inicial padrão 
22
Classes de Domínio 
 Representam as entidades de negócio 
 Tem atributos próprios que são mapeados e armazenados 
em um banco de dados, normalmente relacional 
 Podem apresentar alguns tipos de relacionamento: 
 Herança 
 Dependência 
 1 para muitos 
 1 para 1 
23
Classe de Domínio - Criação 
24 
 Vamos criar uma classe de domínio Campeonato
Classe de Domínio - Criação 
25 
Restrições para os 
campos da classe
Classe de Domínio – Adicionando 
Restrições 
 Vamos adicionar um campo nome, e duas restrições sobre 
o tamanho do nome. A primeira que ele deve ter no 
mínimo 5 caracteres, a segunda que ele deve ter no 
máximo 20 caracteres 
26
Status da Aplicação 
27 
 É possível verificar como anda a aplicação
Controllers (Controladores) 
 Responsáveis por tratar as requisições do usuário 
(browser) com as actions 
 Realizam algum trabalho sobre a requisição (por exemplo 
chamar uma classe de domínio ou serviço) 
 Escolher o tipo de resposta: 
 Executar outra ação de controller (própria ou não) 
 Renderizar uma visão (GSP) 
 Renderizar informação diretamente 
28
Controllers (Controladores) 
 Seguem algumas convenções: 
 O nome das classes deve terminar com a palavra Controller 
 Ficam dentro do diretório controllers 
 Tipo padrão é prototype, ou seja, uma instância para cada 
requisição. É possível mudar o tipo. 
 Métodos públicos são utilizados para tratar os eventos 
 Ação padrão é a index 
29
Controller - Scaffold 
30 
 Vamos criar um controller Scaffold para a classe 
Campeonato
Controller - Scaffold 
1 linha só? O que ela 
significa? 
31
Controller - Scaffold 
O controlador está 
32 
disponível...
Controller - Scaffold 
33 
Listagem
Controller - Scaffold 
34 
Página para cadastro 
de novo campeonato
Controller - Scaffold 
35 
O Grails valida se a 
informação digitada está de 
acordo com as restrições
Controller - Scaffold 
E comunica o sucesso da 
36 
operação
Controller - Scaffold 
37
Acrescentando mais campos na classe de 
domínio 
38
Criação de classe de domínio com 
dependência 
Define que se o 
campeonato for 
excluído, a edição 
também deve ser 
39 
excluída
Criação de classe de domínio com 
dependência 
Um campeonato pode 
ter várias edições 
40
Criação de classe de domínio com 
dependência 
41 
Cria um link para a 
adição de novas edições
Criação de classe de domínio com 
dependência 
42 
Deu fã... 
Por quê??? 
Aplicação ControllerAction Parâmetros
Gerando Controller e Views 
 Comando generate-all: Gera o controller com os métodos 
43 
Controller 
Views 
e as views
Gerando Controller e Views 
Tipo de transição 
padrão: Somente 
Métodos HTML 
leitura 
permitidos para cada 
44 
action
Gerando Controller e Views 
45 
 Agora a view funciona!
Entendendo o Controller 
46
Entendendo o Controller 
47 
llooccaallhhoosstt::88008800//CCaammppeeoonnaattooBBrraassiilleeiirroo//eeddiiccaaoo//sshhooww//11..jxsmonl
Entendendo o Controller 
48 
localhost:8080/CampeonatoBrasileiro/edicao.xml
Entendendo o Controller 
 Métodos do GORM (Grails' object relational mapping) 
 Substitui o DAO (Data Access Object) 
 Vários métodos para busca, atualização, remoção e persistência 
dos dados 
49
Views (Visões) 
 São arquivos GSP – Aceitam linguagem HTML e taglibs do Grails 
 Ficam dentro do diretório do respectivo controller 
50
Views (Visões) 
51 
Importa a classe 
Edição 
Define uma variável 
com nome 
entityName 
Dois modos de 
chamar uma tag 
Grails 
message.properties
Views (Visões) 
52
Views (Visões) 
53 
Acessos as variáveis 
vindas do controller
Views (Visões) 
54 
Uso de Templates
Views (Visões) 
55 
Nome dos atributos
Views (Visões) 
56 
O Grails já faz o bind 
dos atributos no 
objeto
Services (Serviços) 
 Camada adicional na parte do model para facilitar o 
desacoplamento 
 Convenções: 
 Os nomes das classes terminam com a palavra Service (ex: 
EdicaoService) 
 São transacionais (é possível configurar) 
 Tipicamente: 
 Acessam as classes de domínio 
 Acessam outros services 
57
Services (Serviços) 
 Quando usar: 
 Você precisa centralizar a lógica do negócio em uma API de 
serviços 
 Os casos de uso da aplicação operam em múltiplos objetos de 
domínio, e operações complexas de negócio no modelo não devem 
ser misturadas com a lógica do controlador 
 Alguns casos de uso, e processos de negócio são melhor 
encapsulados fora de um objeto de domínio. Nesse caso, podem 
ser encapsulados em uma API. 
 The Definitive Guide to Grails 2 - Jeff Scott Brown, Graeme 
Rocher 
58
Services 
 Comando create-service: Cria um serviço a partir de uma 
classe de domínio 
59
Services 
60
Services 
61
Services – Usando no Controller 
62 
Injeção de 
dependência 
Chamada do 
método
Testes 
 Utiliza o Spock, que tem como base o JUnit 
 Compatível com diversas IDEs 
 Linguagem bem semântica 
63
Testes 
64
Testes 
65
Testes 
 Comando test-app: Realiza testes na aplicação 
 É possível testar uma única classe 
 É possível determinar o tipo de teste (:unit, :integration) 
66
Testes 
67
Banco de Dados 
 Já temos duas classes, controllers, view, servisse, testes.... 
 Mas não falamos ainda de banco 
 Onde estão os dados??? 
 As respostas estão no arquivo Datasource.groovy, no diretório conf 
68
Banco de Dados 
69 
Configurações da 
Base de Dados 
(H2) 
Configurações o 
Hibernate
Banco de Dados 
70 
Ambientes específicos 
para desenvolvimento, 
testes, e produção
Banco de Dados 
71 
 E eu posso trocar? PODE!!! 
 Para isso, você deve: 
 Informar o driver do banco 
 Configurar a URL 
 Configurar nome de usuário e senha
Configuração do Build 
 Arquivo BuildConfig.groovy no diretório conf 
 Permite utilizar repositórios Maven 
72
Configuração do Build 
 Permite utilização de bibliotecas Java, como drivers de 
bancos de dados 
73
Configuração do Build 
 Permite utilização de plugins 
74
Plugins 
 1162 plug-ins (13 de outubro de 2014) 
 Todo tipo de plugin: 
 Segurança (Spring Security Core, Apache Shiro Integration for Grails) 
 Interface (Kickstart with Bootstrap, Grails Admin Interface, Plugin 
Platform UI) 
 Persistência de dados (MongoDB GORM, Redis Plugin) 
 Geração de relatórios (Jasper Plugin, Excel Export Plugin) 
 Gerenciamento de processos (Grails Activiti Plugin, camunda Grails 
Plugin) 
75
Plugins 
 Envio de e-mail (Asynchronous Mail Plugin, Provides Mail support to 
a running Grails application) 
 Cache (Cache Plugin, Ehcache Cache Plugin) 
 Agendamento de Jobs (Quartz, Grails Spring Batch Plugin) 
 Testes (Spock Plugin, Spock Functional Plugin, Geb integration for 
Grails) 
 Buscas (Searchable, ElasticSearch Grails Plugin) 
 Integração com redes sociais (Facebook SDK Plugin, Twitter for 
Spring Security OAuth plugin) 
76
Tecnologias e Bibliotecas 
77
Grails: Vantagens 
 Curva de aprendizado facilitada para programadores Java 
 Poder das linguagens dinâmicas 
 Padrão MVC 
 Tecnologias consolidadas 
 Suporte de IDEs 
 Muitos plugins 
78
Grails: Vantagens 
 Templates 
 Taglibs 
 Facilidade na hora de testar 
 Alta produtividade 
79
Grails: Panorama 
80 
 Versão 3.0 - Objetivos: 
 Gradle 
 Spring Boot 
 Redução de Dependências 
 Entre outros
Grails: Panorama 
Fonte: http://zeroturnaround.com/ 81
Grails: Panorama 
Critérios como: 
- Facilidade de Uso 
- Documentação 
- Ecossistema 
- Escalabilidade 
- Velocidade de 
Desenvolvimento 
Fonte: http://zeroturnaround.com/ 82
Grails: Panorama 
Fonte: http://zeroturnaround.com/ 83
Grails: Empresas que utilizam 
84 
Fontes: https://grails.org/websites 
http://philip.yurchuk.com/software/companies-using-grails/
Conselho 
 Sempre que possível siga as convenções... 
 Caso contrário, é possível fazer algumas configurações e utilizar do jeito que 
você quiser (assim como os outros frameworks) 
85
Código 
 Github 
 https://github.com/portalbll/CampeonatoBrasileiro 
86
87 
Perguntas?

Introdução a Grails: Um framework veloz e poderoso

  • 1.
    Introdução a Grails: Um framework veloz e poderoso Bruno Lorenço Lopes Analista de Tecnologia da Informação (SIn – UFSCar) 14 de outubro de 2014
  • 2.
    Apresentação Pessoal Nome: Bruno Lorenço Lopes  Formação  Graduação em Engenharia de Computação na USP São Carlos (2005 - 2009)  Especialização em Desenvolvimento de Software para a Web na UFSCar (2010 - 2011)  Mestrado em Ciências da Computação e Matemática Computacional na USP São Carlos (2011 - 2014)  Experiência Profissional  Estágio em desenvolvimento de software no CPqD (2009)  Analista de Sistemas na Enalta (2010 - 2011)  Analista de Tecnologia na UFSCar (2013 - ?)  Co-fundador do site www.acerteocarro.com 2
  • 3.
    Recordar é viver...  Desenvolvimento do sistema Open BR Track  Sistema para monitoramento e gerenciamento de entregas de produtos  JSF + EJB + JPA  Organização muito dependente do desenvolvedor, pode variar de projeto para projeto  Muitos arquivos XML (configurações) 3
  • 4.
    Recordar é viver...  Desenvolvimento do sistema Open BR Track  Muito código repetido e desnecessário  Muito burocrático  Código confuso  Dificuldade de mudanças  Baixa produtividade 4
  • 5.
  • 6.
    Código desnecessário erepetitivo... 6
  • 7.
  • 8.
    Dificuldade de mudanças...  Alterações nas entidades geravam:  Mudanças no banco de dados  Mudança nos DAOs (Data Access Object)  Mudanças nos serviços (fachadas)  Mudanças nos Managed Beans  Mudanças nos XHTML 8
  • 9.
  • 10.
    Um Pouco deHistória  O desenvolvimento do Grails começou em julho de 2005, inspirado no Ruby on Rails  Originalmente o nome era Groovy on Rails  Versão 0.1 saiu em 29 de março de 2006  Versão 1.0 saiu em 04 de fevereiro de 2008  Atualmente a versão mais recente é a 2.4.3  A versão 3.0 se encontra em desenvolvimento e é prevista para 2015  Projeto é patrocinado e liderado pela Pivotal Sofware 10
  • 11.
    Groovy e Grails  Linguagem de programação dinâmica que roda na JVM  Framework fullstack (pilha completa) para desenvolvimento de aplicações web 11
  • 12.
  • 13.
    O que vocêganha com Grails? 13
  • 14.
    Princípios do Grails  Convenção em vez de Configuração – Ao invés de fazer toda a configuração explicitamente em arquivos XML, o nome e a localização dos arquivos indicam sua função. Sempre que possível siga as convenções.  DRY (Don’t Repeat Yourself) – No Grails existe um conjunto organizado de artefatos disponíveis para os desenvolvedores, além de geradores de código fonte. Além disso, o Grails favorece a adoção do DRY nos projetos.  MVC (Model-View-Controller) – Padrão arquitetural de software que se baseia na divisão do software em camadas com funções bem definidas. 14
  • 15.
    Model-View-Controller 15 Modelo Visão Controlador Responsável pela organização dos dados e pelas regras do negócio Responsável apresentação e visualização dos dados Responsável pela integração entre as camadas de Visão e Modelo
  • 16.
    Model-View-Controller na Web 16 3. O modelo devolve os dados pedidos Modelo Visão Controlador Browser 2. O controlador pede dados ao Modelo 1. O usuário envia um pedido de url 4. O controlador seleciona a visão e fornece os dados 5. A visão selecionada é devolvida ao controlador 6. O controlador devolve a visão como resposta para o browser
  • 17.
    Criando uma AppGrails 17  Comando create-app: Cria uma nova aplicação Grails
  • 18.
    Classes de domínio Controllers e Serviços fazem fazem parte do Modelo Scripts Grails, por exemplo para configuração Estrutura de um projeto Grails 18 parte do Controlador Views e Taglibs fazem parte do CoCdoenctsreo lcaldaosrses específicas do “DicioGnárariiolss” para inteArrnqauciivoonsa ldizea ção Configuração Código Java! Código Groovy Tes“tTgeeessn tuéenrsii ctdáoer” ios integração
  • 19.
    Estrutura de umprojeto Grails Tudo que está no classpath, como Nome e versão da aplicação, versão Recursos como CSV, javascripts e 19 Lista de Plugins utilizados bibliotecas do Grails imagens WEB-INF, META-INF Grails Wrapper
  • 20.
    Grails Wrapper Permite construir a aplicação sem ter que configurar o Grails 20
  • 21.
    Rodando a aplicação 21  Comando run-app: Roda a aplicação em modo de desenvolvimento
  • 22.
  • 23.
    Classes de Domínio  Representam as entidades de negócio  Tem atributos próprios que são mapeados e armazenados em um banco de dados, normalmente relacional  Podem apresentar alguns tipos de relacionamento:  Herança  Dependência  1 para muitos  1 para 1 23
  • 24.
    Classe de Domínio- Criação 24  Vamos criar uma classe de domínio Campeonato
  • 25.
    Classe de Domínio- Criação 25 Restrições para os campos da classe
  • 26.
    Classe de Domínio– Adicionando Restrições  Vamos adicionar um campo nome, e duas restrições sobre o tamanho do nome. A primeira que ele deve ter no mínimo 5 caracteres, a segunda que ele deve ter no máximo 20 caracteres 26
  • 27.
    Status da Aplicação 27  É possível verificar como anda a aplicação
  • 28.
    Controllers (Controladores) Responsáveis por tratar as requisições do usuário (browser) com as actions  Realizam algum trabalho sobre a requisição (por exemplo chamar uma classe de domínio ou serviço)  Escolher o tipo de resposta:  Executar outra ação de controller (própria ou não)  Renderizar uma visão (GSP)  Renderizar informação diretamente 28
  • 29.
    Controllers (Controladores) Seguem algumas convenções:  O nome das classes deve terminar com a palavra Controller  Ficam dentro do diretório controllers  Tipo padrão é prototype, ou seja, uma instância para cada requisição. É possível mudar o tipo.  Métodos públicos são utilizados para tratar os eventos  Ação padrão é a index 29
  • 30.
    Controller - Scaffold 30  Vamos criar um controller Scaffold para a classe Campeonato
  • 31.
    Controller - Scaffold 1 linha só? O que ela significa? 31
  • 32.
    Controller - Scaffold O controlador está 32 disponível...
  • 33.
  • 34.
    Controller - Scaffold 34 Página para cadastro de novo campeonato
  • 35.
    Controller - Scaffold 35 O Grails valida se a informação digitada está de acordo com as restrições
  • 36.
    Controller - Scaffold E comunica o sucesso da 36 operação
  • 37.
  • 38.
    Acrescentando mais camposna classe de domínio 38
  • 39.
    Criação de classede domínio com dependência Define que se o campeonato for excluído, a edição também deve ser 39 excluída
  • 40.
    Criação de classede domínio com dependência Um campeonato pode ter várias edições 40
  • 41.
    Criação de classede domínio com dependência 41 Cria um link para a adição de novas edições
  • 42.
    Criação de classede domínio com dependência 42 Deu fã... Por quê??? Aplicação ControllerAction Parâmetros
  • 43.
    Gerando Controller eViews  Comando generate-all: Gera o controller com os métodos 43 Controller Views e as views
  • 44.
    Gerando Controller eViews Tipo de transição padrão: Somente Métodos HTML leitura permitidos para cada 44 action
  • 45.
    Gerando Controller eViews 45  Agora a view funciona!
  • 46.
  • 47.
    Entendendo o Controller 47 llooccaallhhoosstt::88008800//CCaammppeeoonnaattooBBrraassiilleeiirroo//eeddiiccaaoo//sshhooww//11..jxsmonl
  • 48.
    Entendendo o Controller 48 localhost:8080/CampeonatoBrasileiro/edicao.xml
  • 49.
    Entendendo o Controller  Métodos do GORM (Grails' object relational mapping)  Substitui o DAO (Data Access Object)  Vários métodos para busca, atualização, remoção e persistência dos dados 49
  • 50.
    Views (Visões) São arquivos GSP – Aceitam linguagem HTML e taglibs do Grails  Ficam dentro do diretório do respectivo controller 50
  • 51.
    Views (Visões) 51 Importa a classe Edição Define uma variável com nome entityName Dois modos de chamar uma tag Grails message.properties
  • 52.
  • 53.
    Views (Visões) 53 Acessos as variáveis vindas do controller
  • 54.
    Views (Visões) 54 Uso de Templates
  • 55.
    Views (Visões) 55 Nome dos atributos
  • 56.
    Views (Visões) 56 O Grails já faz o bind dos atributos no objeto
  • 57.
    Services (Serviços) Camada adicional na parte do model para facilitar o desacoplamento  Convenções:  Os nomes das classes terminam com a palavra Service (ex: EdicaoService)  São transacionais (é possível configurar)  Tipicamente:  Acessam as classes de domínio  Acessam outros services 57
  • 58.
    Services (Serviços) Quando usar:  Você precisa centralizar a lógica do negócio em uma API de serviços  Os casos de uso da aplicação operam em múltiplos objetos de domínio, e operações complexas de negócio no modelo não devem ser misturadas com a lógica do controlador  Alguns casos de uso, e processos de negócio são melhor encapsulados fora de um objeto de domínio. Nesse caso, podem ser encapsulados em uma API.  The Definitive Guide to Grails 2 - Jeff Scott Brown, Graeme Rocher 58
  • 59.
    Services  Comandocreate-service: Cria um serviço a partir de uma classe de domínio 59
  • 60.
  • 61.
  • 62.
    Services – Usandono Controller 62 Injeção de dependência Chamada do método
  • 63.
    Testes  Utilizao Spock, que tem como base o JUnit  Compatível com diversas IDEs  Linguagem bem semântica 63
  • 64.
  • 65.
  • 66.
    Testes  Comandotest-app: Realiza testes na aplicação  É possível testar uma única classe  É possível determinar o tipo de teste (:unit, :integration) 66
  • 67.
  • 68.
    Banco de Dados  Já temos duas classes, controllers, view, servisse, testes....  Mas não falamos ainda de banco  Onde estão os dados???  As respostas estão no arquivo Datasource.groovy, no diretório conf 68
  • 69.
    Banco de Dados 69 Configurações da Base de Dados (H2) Configurações o Hibernate
  • 70.
    Banco de Dados 70 Ambientes específicos para desenvolvimento, testes, e produção
  • 71.
    Banco de Dados 71  E eu posso trocar? PODE!!!  Para isso, você deve:  Informar o driver do banco  Configurar a URL  Configurar nome de usuário e senha
  • 72.
    Configuração do Build  Arquivo BuildConfig.groovy no diretório conf  Permite utilizar repositórios Maven 72
  • 73.
    Configuração do Build  Permite utilização de bibliotecas Java, como drivers de bancos de dados 73
  • 74.
    Configuração do Build  Permite utilização de plugins 74
  • 75.
    Plugins  1162plug-ins (13 de outubro de 2014)  Todo tipo de plugin:  Segurança (Spring Security Core, Apache Shiro Integration for Grails)  Interface (Kickstart with Bootstrap, Grails Admin Interface, Plugin Platform UI)  Persistência de dados (MongoDB GORM, Redis Plugin)  Geração de relatórios (Jasper Plugin, Excel Export Plugin)  Gerenciamento de processos (Grails Activiti Plugin, camunda Grails Plugin) 75
  • 76.
    Plugins  Enviode e-mail (Asynchronous Mail Plugin, Provides Mail support to a running Grails application)  Cache (Cache Plugin, Ehcache Cache Plugin)  Agendamento de Jobs (Quartz, Grails Spring Batch Plugin)  Testes (Spock Plugin, Spock Functional Plugin, Geb integration for Grails)  Buscas (Searchable, ElasticSearch Grails Plugin)  Integração com redes sociais (Facebook SDK Plugin, Twitter for Spring Security OAuth plugin) 76
  • 77.
  • 78.
    Grails: Vantagens Curva de aprendizado facilitada para programadores Java  Poder das linguagens dinâmicas  Padrão MVC  Tecnologias consolidadas  Suporte de IDEs  Muitos plugins 78
  • 79.
    Grails: Vantagens Templates  Taglibs  Facilidade na hora de testar  Alta produtividade 79
  • 80.
    Grails: Panorama 80  Versão 3.0 - Objetivos:  Gradle  Spring Boot  Redução de Dependências  Entre outros
  • 81.
    Grails: Panorama Fonte:http://zeroturnaround.com/ 81
  • 82.
    Grails: Panorama Critérioscomo: - Facilidade de Uso - Documentação - Ecossistema - Escalabilidade - Velocidade de Desenvolvimento Fonte: http://zeroturnaround.com/ 82
  • 83.
    Grails: Panorama Fonte:http://zeroturnaround.com/ 83
  • 84.
    Grails: Empresas queutilizam 84 Fontes: https://grails.org/websites http://philip.yurchuk.com/software/companies-using-grails/
  • 85.
    Conselho  Sempreque possível siga as convenções...  Caso contrário, é possível fazer algumas configurações e utilizar do jeito que você quiser (assim como os outros frameworks) 85
  • 86.
    Código  Github  https://github.com/portalbll/CampeonatoBrasileiro 86
  • 87.