SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Groovy Stack
Groovy, Gradle, Spock e Geb
whoami
• Leonardo, dev na Pismo
• Lorena, Ilha de Lost
• Professor na FATEA
• Java, Spring, Groovy, Clojure e AWS ♥
Conteúdo
• Groovy
• Gradle
• Spock
• Geb
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
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
Baixa curva de
aprendizado?
public void salvar(Usuario usuario){
usuarioService.salvar(usuario);
}
void salvar(Usuario usuario){
usuarioService.salvar(usuario)
}
Aprimora o Java?
Syntax Sugar
• Listas
• Mapas
• Groovy Truth
• Gstring
• Criação de objetos
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...
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
Closure?
• Curry: funções que retornam funções
Closure?
• Memoization: cache em funções
Closure?
• Trampoline: evite StackOverflow
Closure?
• Trampoline: evite StackOverflow
Closure?
No geral, é Lambda no Java?
Closure?
No geral, é Lambda no Java?
Marromeno
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
Closure
Talk is cheap
Show me the code!
Gradle, what?
• Gerenciador de build:
• Dependências
• Testes
• Deploy
• Metricas
• Etc, etc, etc
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
Gradle
Talk is cheap
Show me the code!
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!!!
Spock, what?
• Biblioteca para testes
• BDD
• Baseado em Specifications
• Suporte nativo:
• Mocks
• Chamadas assíncronas
Spock
Talk is cheap
Show me the code!
Geb, what?
• http://www.gebish.org/
• Selenium
• JQuery-like
• Ótimo suporte para PageObjects
• Groovy
Geb
Talk is cheap
Show me the code!
Groovy Stack
Dúvidas??
leosilvadev@gmail.com

Mais conteúdo relacionado

Mais procurados

JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBjesuinoPower
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidBruno Oliveira
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutosBruno Oliveira
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com JavajesuinoPower
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2Claudiney Marques
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sériosaspi2
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometemFernando Henriques
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFRafael Ponte
 
Laravel + Vue: Como começar
Laravel + Vue: Como começarLaravel + Vue: Como começar
Laravel + Vue: Como começarLeandro Ferreira
 

Mais procurados (20)

JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em Android
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Ria e Java FX
Ria e Java FXRia e Java FX
Ria e Java FX
 
Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sério
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem
 
Desafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSFDesafios de um desenvolvedor JSF
Desafios de um desenvolvedor JSF
 
Laravel + Vue: Como começar
Laravel + Vue: Como começarLaravel + Vue: Como começar
Laravel + Vue: Como começar
 
Groovy e Grails 2
Groovy e Grails 2Groovy e Grails 2
Groovy e Grails 2
 

Destaque

Java Wars: Então você quer ser um Desenvolvedor?
Java Wars: Então você quer ser um Desenvolvedor?Java Wars: Então você quer ser um Desenvolvedor?
Java Wars: Então você quer ser um Desenvolvedor?Allan Silva
 
Let's talk about NoSQL Standard
Let's talk about NoSQL StandardLet's talk about NoSQL Standard
Let's talk about NoSQL StandardOtávio Santana
 
Spring cloud + netflix oss
Spring cloud + netflix ossSpring cloud + netflix oss
Spring cloud + netflix ossFelipe Adorno
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaVanderson Silva
 
Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?OzJUG
 
Boas práticas e técnicas para codificação
Boas práticas e técnicas para codificaçãoBoas práticas e técnicas para codificação
Boas práticas e técnicas para codificaçãoMarcelo Juventino
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BRrafaeladson
 
Abertura TI No Vale
Abertura TI No ValeAbertura TI No Vale
Abertura TI No ValeJugVale
 
2º encontro do jug vale
2º encontro do jug vale2º encontro do jug vale
2º encontro do jug valeJugVale
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtorRafael Pinheiro
 
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação WebEstratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação WebAllan Silva
 
Manual completo relajacion by chen
Manual completo relajacion by chenManual completo relajacion by chen
Manual completo relajacion by chenrosamariayangel
 
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...Aleš Vidmar
 
Review: Ethics, Reliability, Validity
Review: Ethics, Reliability, ValidityReview: Ethics, Reliability, Validity
Review: Ethics, Reliability, ValidityAudrey Antee
 
दैनिक सोशल डायरी 09-03-16
दैनिक सोशल डायरी 09-03-16दैनिक सोशल डायरी 09-03-16
दैनिक सोशल डायरी 09-03-16Ahemad Qureshi
 
Ross Armstrong CV and Portfolio 2016
Ross Armstrong CV and Portfolio 2016Ross Armstrong CV and Portfolio 2016
Ross Armstrong CV and Portfolio 2016Ross Armstrong
 

Destaque (20)

Java Wars: Então você quer ser um Desenvolvedor?
Java Wars: Então você quer ser um Desenvolvedor?Java Wars: Então você quer ser um Desenvolvedor?
Java Wars: Então você quer ser um Desenvolvedor?
 
Apresentação JUG Vale 8
Apresentação JUG Vale 8Apresentação JUG Vale 8
Apresentação JUG Vale 8
 
Let's talk about NoSQL Standard
Let's talk about NoSQL StandardLet's talk about NoSQL Standard
Let's talk about NoSQL Standard
 
Spring cloud + netflix oss
Spring cloud + netflix ossSpring cloud + netflix oss
Spring cloud + netflix oss
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a hora
 
Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?
 
Boas práticas e técnicas para codificação
Boas práticas e técnicas para codificaçãoBoas práticas e técnicas para codificação
Boas práticas e técnicas para codificação
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BR
 
Abertura TI No Vale
Abertura TI No ValeAbertura TI No Vale
Abertura TI No Vale
 
2º encontro do jug vale
2º encontro do jug vale2º encontro do jug vale
2º encontro do jug vale
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação WebEstratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web
 
Manual completo relajacion by chen
Manual completo relajacion by chenManual completo relajacion by chen
Manual completo relajacion by chen
 
final_RM13
final_RM13final_RM13
final_RM13
 
Strategy
StrategyStrategy
Strategy
 
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...
Design management kot generator dodane vrednosti, Drzava za gospodarstvo 24.3...
 
mapa mental
mapa mentalmapa mental
mapa mental
 
Review: Ethics, Reliability, Validity
Review: Ethics, Reliability, ValidityReview: Ethics, Reliability, Validity
Review: Ethics, Reliability, Validity
 
दैनिक सोशल डायरी 09-03-16
दैनिक सोशल डायरी 09-03-16दैनिक सोशल डायरी 09-03-16
दैनिक सोशल डायरी 09-03-16
 
Ross Armstrong CV and Portfolio 2016
Ross Armstrong CV and Portfolio 2016Ross Armstrong CV and Portfolio 2016
Ross Armstrong CV and Portfolio 2016
 

Semelhante a Groovy stack

Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsLuciano Ramalho
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4javamanrj
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Daniel Lopes
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Mario Guedes
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 

Semelhante a Groovy stack (20)

Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Dr Java Virtual Machine
Dr Java Virtual MachineDr Java Virtual Machine
Dr Java Virtual Machine
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design Patterns
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)
 
Linguagem Java
Linguagem JavaLinguagem Java
Linguagem Java
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
Groovy
GroovyGroovy
Groovy
 
Por um Java mais funcional
Por um Java mais funcionalPor um Java mais funcional
Por um Java mais funcional
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Conhecendo o Java 8
Conhecendo o Java 8Conhecendo o Java 8
Conhecendo o Java 8
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 

Groovy stack