SlideShare une entreprise Scribd logo
1  sur  24
Novidades Java 8
Douglas Frari
@douglasddf
profdouglas.blogspot.com
youtube.com/user/douglasddf
Tópicos desta seção
• visão geral
• lambdas
• exemplos tradicionais
• exemplos com lambdas
visão geral
Lambdas
• Recursos que alteram a forma como codificamos;
• Influenciam na sintaxe da linguagem;
• Conceitos de outras linguagens como Lisp, Haskell,
(paradigma funcional);
• Tornar mais fácil determinadas tarefas que necessitam de
muitas linhas de código.
• Sua principal característica são as entidades que podem
ser utilizadas como argumentos e retornadas como valores
de outras funções.
Por que lambdas em Java
agora?
• Sintaxe concisa
• Deficiência com inner classes anônimas
• Conveniente com nova lib streams:
• palavras.forEach( s -> System.out.println(s));
• Construtor similar usado em outras linguagens:
• Um passo a frente para suportar a programação
funcional
vantagem principal: concisa
e expressiva
velho
novo
outras vantagens
• Encoraja a programação funcional
• Quando essa abordagem é usada, muitas problemas são
fáceis de resolver e resultam em código que é claro de ler e
simples de manter;
• Suporte Streams
• São wrappers de collections que usam lambdas e podem
tornar-se concorrentes automaticamente pelo compilador:
Lambdas
formas básicas
onde usar lambdas?
• Encontre alguma variável ou parâmetro que espera uma interface que tem
um método
• Um método abstrato? em java 7 não há uma distinção entre um
método de interface e um método de interface abstrato. Isso é agora
chamado de Interface funcional.
• Código que usa interface é a mesma
• Código que chama a interface pode suprimir com lambda
como argumento para
métodos
como variáveis : +óbvio?
sintaxe (dica simples)
substitua isso:
por isso:
exemplo
velho estilo
novo estilo
ordenando por tamanho
velho estilo
novo estilo
ordenando por nomes
código?
tipos inferidos: boa ideia
• Tipos em lista de argumentos podem ser omitidos
substitua isso:
por isso:
Expressões corpo
• Não precisa usar o return, a menos que a expressão
contenha mais de uma linha.
substitua isso:
por isso:
omitindo os ( )
• se o método tem um simples argumento, pode-se
omitir os parênteses
substitua isso: por isso:
exemplo (listener p/ buttons)
Java 7 vs. Java 8
qual é mais simples?
pacote: java.util.function
dúvidas?
Referências
• http://docs.oracle.com/javase/tutorial/java/javaOO/la
mbdaexpressions.html
• http://www.slideshare.net/martyhall/java-8-tutorial-
lambda-expressions-part-1
• https://github.com/edermag/java8-is-back

Contenu connexe

Similaire à Novidades Java 8: Lambdas e Streams

Similaire à Novidades Java 8: Lambdas e Streams (20)

Java8
Java8Java8
Java8
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskell
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Java m01 - Nomenclaturas
Java   m01 - NomenclaturasJava   m01 - Nomenclaturas
Java m01 - Nomenclaturas
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Módulo de php
Módulo de phpMódulo de php
Módulo de php
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Java VS Kotlin
Java VS KotlinJava VS Kotlin
Java VS Kotlin
 
Aprendendo PHP.pdf
Aprendendo PHP.pdfAprendendo PHP.pdf
Aprendendo PHP.pdf
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
Java cert programmer
Java cert programmerJava cert programmer
Java cert programmer
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Java 8 e futuro
Java 8 e futuroJava 8 e futuro
Java 8 e futuro
 

Novidades Java 8: Lambdas e Streams