Nesta apresentação são abordados os principais aspectos e vantagens da utilização do framework Grails no desenvolvimento de sistemas web. Um pequeno exemplo de sistema é mostrado, permitindo que o público tenha ideia de como é programar em Grails, e são ressaltadas suas diferenças em relação ao JSF.
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
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
10. 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
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
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 App Grails
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 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
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
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
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
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
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
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
Comando create-service: Cria um serviço a partir de uma
classe de domínio
59
66. 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
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
75. 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
76. 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
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
82. Grails: Panorama
Critérios como:
- Facilidade de Uso
- Documentação
- Ecossistema
- Escalabilidade
- Velocidade de
Desenvolvimento
Fonte: http://zeroturnaround.com/ 82
84. Grails: Empresas que utilizam
84
Fontes: https://grails.org/websites
http://philip.yurchuk.com/software/companies-using-grails/
85. 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