Java 8 e lambdas (palestra Techday 2.0)
-
Upload
douglas-frari -
Category
Technology
-
view
1.429 -
download
3
description
Transcript of Java 8 e lambdas (palestra Techday 2.0)
![Page 1: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/1.jpg)
Novidades Java 8Douglas Frari@douglasddf
profdouglas.blogspot.com youtube.com/user/douglasddf
![Page 2: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/2.jpg)
Tópicos desta seção
• visão geral
• lambdas
• exemplos tradicionais
• exemplos com lambdas
![Page 3: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/3.jpg)
visão geral
![Page 4: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/4.jpg)
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.
![Page 5: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/5.jpg)
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
![Page 6: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/6.jpg)
vantagem principal: concisa e expressiva velho
novo
![Page 7: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/7.jpg)
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:
![Page 8: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/8.jpg)
Lambdasformas básicas
![Page 9: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/9.jpg)
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
![Page 10: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/10.jpg)
como argumento para métodos
![Page 11: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/11.jpg)
como variáveis : +óbvio?
![Page 12: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/12.jpg)
sintaxe (dica simples)
substitua isso:
por isso:
![Page 13: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/13.jpg)
exemplo
velho estilo
novo estilo
![Page 14: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/14.jpg)
ordenando por tamanho
velho estilo
novo estilo
![Page 15: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/15.jpg)
ordenando por nomes
código?
![Page 16: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/16.jpg)
tipos inferidos: boa ideia
• Tipos em lista de argumentos podem ser omitidos
substitua isso:
por isso:
![Page 17: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/17.jpg)
Expressões corpo
• Não precisa usar o return, a menos que a expressão contenha mais de uma linha.
substitua isso:
por isso:
![Page 18: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/18.jpg)
omitindo os ( )
• se o método tem um simples argumento, pode-se omitir os parênteses
substitua isso:
por isso:
![Page 19: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/19.jpg)
exemplo (listener p/ buttons)
![Page 20: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/20.jpg)
Java 7 vs. Java 8
![Page 21: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/21.jpg)
qual é mais simples?
![Page 22: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/22.jpg)
pacote: java.util.function
![Page 23: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/23.jpg)
dúvidas?
![Page 24: Java 8 e lambdas (palestra Techday 2.0)](https://reader038.fdocuments.us/reader038/viewer/2022103001/558fc25c1a28abe1668b4738/html5/thumbnails/24.jpg)
Referências
• http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
• http://www.slideshare.net/martyhall/java-8-tutorial-lambda-expressions-part-1
• https://github.com/edermag/java8-is-back