introdução a grails: um framework veloz e poderoso

87
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

Upload: bruno-lopes

Post on 30-Jun-2015

268 views

Category:

Technology


1 download

DESCRIPTION

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.

TRANSCRIPT

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

Introdução a Grails:Um framework veloz

e poderosoBruno Lorenço Lopes

Analista de Tecnologia da Informação (SIn – UFSCar)

14 de outubro de 2014

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

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

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

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)

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

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

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

5

Arquivos XML...

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

6

Código desnecessário e repetitivo...

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

7

Burocracia...

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

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

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

9

Código confuso...

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

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

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

11

Groovy e Grails

Linguagem de programação dinâmica que roda na JVM

Framework fullstack (pilha completa) para desenvolvimento de aplicações web

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

12

Arquitetura

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

13

O que você ganha com Grails?

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

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.

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

15

Model-View-Controller

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

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

16

Model-View-Controller na Web

Modelo Visão

Controlador

Browser

1. O usuário envia um pedido de url

2. O controlador pede dados ao Modelo

3. O modelo devolve os dados pedidos

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

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

17

Criando uma App Grails

Comando create-app: Cria uma nova aplicação Grails

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

18

Scripts Grails, por exemplo

para configuração

Estrutura de um projeto GrailsClasses de domínio e

Serviços fazem parte do Modelo

Controllers fazem parte do

ControladorViews e Taglibs fazem parte do

ControladorCodecs e classes específicas do

Grails“Dicionários”

para internacionalizaç

ãoArquivos de

ConfiguraçãoCódigo Java!Código Groovy

“genérico”Testes unitáriosTestes de integração

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

19

Estrutura de um projeto Grails

Lista de Plugins utilizados

Tudo que está no classpath,

como bibliotecasNome e versão da aplicação,

versão do GrailsRecursos como CSV, javascripts

e imagensWEB-INF, META-

INFGrails Wrapper

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

20

Permite construir a aplicação sem ter que configurar o Grails

Grails Wrapper

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

21

Rodando a aplicação

Comando run-app: Roda a aplicação em modo de desenvolvimento

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

22

A aplicação inicial padrão

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

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

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

24

Classe de Domínio - Criação

Vamos criar uma classe de domínio Campeonato

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

25

Classe de Domínio - Criação

Restrições para os campos da classe

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

26

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

Classe de Domínio – Adicionando Restrições

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

27

Status da Aplicação

É possível verificar como anda a aplicação

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

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

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

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

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

30

Controller - Scaffold

Vamos criar um controller Scaffold para a classe Campeonato

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

31

Controller - Scaffold

1 linha só? O que ela significa?

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

32

Controller - Scaffold

O controlador está disponível...

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

33

Controller - Scaffold

Listagem

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

34

Controller - Scaffold

Página para cadastro de novo

campeonato

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

35

Controller - Scaffold

O Grails valida se a informação digitada está

de acordo com as restrições

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

36

Controller - Scaffold

E comunica o sucesso da operação

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

37

Controller - Scaffold

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

38

Acrescentando mais campos na classe de domínio

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

39

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

excluída

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

40

Criação de classe de domínio com dependência

Um campeonato pode ter várias edições

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

41

Criação de classe de domínio com dependência

Cria um link para a adição de novas

edições

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

42

Criação de classe de domínio com dependência

Deu fã...Por quê???

Aplicação ControllerAction Parâmetros

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

43

Gerando Controller e Views

Controller

Views

Comando generate-all: Gera o controller com os métodos e as views

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

44

Gerando Controller e Views

Métodos HTML permitidos para

cada action

Tipo de transição padrão: Somente

leitura

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

45

Gerando Controller e Views

Agora a view funciona!

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

46

Entendendo o Controller

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

47

Entendendo o Controllerlocalhost:8080/CampeonatoBrasileiro/edicao/show/1.xmllocalhost:8080/CampeonatoBrasileiro/edicao/show/1.json

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

48

Entendendo o Controller

localhost:8080/CampeonatoBrasileiro/edicaolocalhost:8080/CampeonatoBrasileiro/edicao.xml

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

49

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

Entendendo o Controller

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

50

Views (Visões)

São arquivos GSP – Aceitam linguagem HTML e taglibs do Grails

Ficam dentro do diretório do respectivo controller

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

51

Views (Visões)

Importa a classe EdiçãoDefine uma

variável com nome entityName

Dois modos de chamar uma tag

Grails

message.properties

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

52

Views (Visões)

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

53

Views (Visões) Acessos as variáveis vindas do

controller

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

54

Views (Visões)

Uso de Templates

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

55

Views (Visões)

Nome dos atributos

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

56

Views (Visões) O Grails já faz o bind dos atributos

no objeto

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

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

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

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

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

59

Services

Comando create-service: Cria um serviço a partir de uma classe de domínio

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

60

Services

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

61

Services

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

62

Services – Usando no Controller

Injeção de dependência

Chamada do método

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

63

Testes

Utiliza o Spock, que tem como base o JUnit Compatível com diversas IDEs Linguagem bem semântica

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

64

Testes

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

65

Testes

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

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)

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

67

Testes

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

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

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

69

Banco de Dados

Configurações da Base de Dados (H2)

Configurações o Hibernate

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

70

Banco de Dados

Ambientes específicos para

desenvolvimento, testes, e produção

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

71

Banco de Dados

E eu posso trocar? PODE!!! Para isso, você deve:

Informar o driver do banco

Configurar a URL

Configurar nome de usuário e senha

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

72

Configuração do Build

Arquivo BuildConfig.groovy no diretório conf

Permite utilizar repositórios Maven

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

73

Configuração do Build

Permite utilização de bibliotecas Java, como drivers de bancos de dados

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

74

Configuração do Build

Permite utilização de plugins

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

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)

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

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)

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

77

Tecnologias e Bibliotecas

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

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

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

79

Grails: Vantagens

Templates Taglibs Facilidade na hora de testar Alta produtividade

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

80

Grails: Panorama

Versão 3.0 - Objetivos: Gradle

Spring Boot

Redução de Dependências

Entre outros

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

81

Grails: Panorama

Fonte: http://zeroturnaround.com/

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

82

Grails: Panorama

Fonte: http://zeroturnaround.com/

Critérios como:- Facilidade de Uso- Documentação

- Ecossistema- Escalabilidade- Velocidade de

Desenvolvimento

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

83

Grails: Panorama

Fonte: http://zeroturnaround.com/

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

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)

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

86

Código

Github https://github.com/portalbll/CampeonatoBrasileiro

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

87

Perguntas?