java 8 e lambdas (palestra techday 2.0)
DESCRIPTION
Palestra no evento: http://www.cesar.edu.br/techday-2-0/ título: Novidades do Java 8 Resumo: Faremos uma discussão sobre as Expressões Lambda e os impactos da incorporação desta funcionalidade na linguagem, além das principais novidades do Java 8. profdouglas.blogspot.comTRANSCRIPT
Novidades Java 8Douglas 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:
Lambdasformas 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/lambdaexpressions.html
• http://www.slideshare.net/martyhall/java-8-tutorial-lambda-expressions-part-1
• https://github.com/edermag/java8-is-back