groovy stack

27
Groovy Stack Groovy, Gradle, Spock e Geb

Upload: leonardo-silva

Post on 20-Mar-2017

1.723 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Groovy stack

Groovy StackGroovy, Gradle, Spock e Geb

Page 2: Groovy stack

whoami• Leonardo, dev na Pismo• Lorena, Ilha de Lost• Professor na FATEA• Java, Spring, Groovy, Clojure e AWS ♥

Page 3: Groovy stack

Conteúdo• Groovy• Gradle• Spock• Geb

Page 4: Groovy stack

Groovy, what?• Linguagem que roda na JVM• Gera bytecodes (.class)• Linguagem Dinâmica

• Definição de tipos em runtime• Possivel criação de atributos e metodos em

runtime

Page 5: Groovy stack

Groovy, why?• Baixa curva de aprendizado para Java

devs• Aprimora as libs padrão do Java, ao invés

de substituí-las• Syntax Sugar• Closures ♥ • Ótimo para criação de DSLs

Page 6: Groovy stack

Baixa curva de aprendizado?

public void salvar(Usuario usuario){ usuarioService.salvar(usuario); }

void salvar(Usuario usuario){ usuarioService.salvar(usuario)}

Page 7: Groovy stack

Aprimora o Java?

Page 8: Groovy stack

Syntax Sugar• Listas• Mapas• Groovy Truth• Gstring• Criação de objetos

Page 9: Groovy stack

Closure?• Funciona como uma função, mas não se engane:

é um objeto• É um objeto que implementa a interface Callable, por isso possui um método call()

• Porém o groovy adiciona syntax sugar que nos permite executar uma closure sem chamar explicitamente o método call...

Page 10: Groovy stack

Closure?• Por ser um objeto, pode ser passado como

parametro e retornado como resultado• Closure nos auxilia a aplicar um pouco de

programação funcional em nosso codigo através de:• Curry• Memoization• Trampoline

Page 11: Groovy stack

Closure?• Curry: funções que retornam funções

Page 12: Groovy stack

Closure?• Memoization: cache em funções

Page 13: Groovy stack

Closure?• Trampoline: evite StackOverflow

Page 14: Groovy stack

Closure?• Trampoline: evite StackOverflow

Page 15: Groovy stack

Closure?No geral, é Lambda no Java?

Page 16: Groovy stack

Closure?No geral, é Lambda no Java? Marromeno

Page 17: Groovy stack

Closure?E o que mais?• this: referência do objeto/classe onde foi criado

• owner: idêntico ao this, porém caso seja criado dentro de outra closure, o owner se torna a closure externa

• delegate: idêntico ao owner, mas pode ser alterado

Page 18: Groovy stack

Closure

Talk is cheapShow me the code!

Page 19: Groovy stack

Gradle, what?• Gerenciador de build:

• Dependências• Testes• Deploy• Metricas• Etc, etc, etc

Page 20: Groovy stack

Gradle, why?• Maven

• Build, muitos plugins, lifecycle bem definido, gerencia dependencias

• Burocrático, dificil de personalizar (criar tasks)• Gradle

• Build, muitos plugins, lifecycle bem definido, gerencia dependencias, fácil de personalizar (criar tasks), groovy ao invés de xml

• Gradle Wrapper

Page 21: Groovy stack

Gradle

Talk is cheapShow me the code!

Page 22: Groovy stack

Gradle• Se molda ao seu processo e não o contrário• Exemplo de uso:

• Criação de instâncias na núvem (ec2)• Upload de artefatos gerados onde quiser• Livre pra integrar com o que quiser!!!

Page 23: Groovy stack

Spock, what?• Biblioteca para testes• BDD• Baseado em Specifications• Suporte nativo:

• Mocks• Chamadas assíncronas

Page 24: Groovy stack

Spock

Talk is cheapShow me the code!

Page 25: Groovy stack

Geb, what?• http://www.gebish.org/• Selenium• JQuery-like• Ótimo suporte para PageObjects• Groovy

Page 26: Groovy stack

Geb

Talk is cheapShow me the code!

Page 27: Groovy stack

Groovy Stack

Dúvidas??

[email protected]