24
Novidades Java 8 Douglas Frari @douglasddf profdouglas.blogspot.com youtube.com/user/douglasddf

Java 8 e lambdas (palestra Techday 2.0)

Embed Size (px)

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.com

Citation preview

Page 1: Java 8 e lambdas (palestra Techday 2.0)

Novidades Java 8Douglas Frari@douglasddf

profdouglas.blogspot.com youtube.com/user/douglasddf

Page 2: Java 8 e lambdas (palestra Techday 2.0)

Tópicos desta seção

• visão geral

• lambdas

• exemplos tradicionais

• exemplos com lambdas

Page 3: Java 8 e lambdas (palestra Techday 2.0)

visão geral

Page 4: Java 8 e lambdas (palestra Techday 2.0)

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)

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)

vantagem principal: concisa e expressiva velho

novo

Page 7: Java 8 e lambdas (palestra Techday 2.0)

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)

Lambdasformas básicas

Page 9: Java 8 e lambdas (palestra Techday 2.0)

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)

como argumento para métodos

Page 11: Java 8 e lambdas (palestra Techday 2.0)

como variáveis : +óbvio?

Page 12: Java 8 e lambdas (palestra Techday 2.0)

sintaxe (dica simples)

substitua isso:

por isso:

Page 13: Java 8 e lambdas (palestra Techday 2.0)

exemplo

velho estilo

novo estilo

Page 14: Java 8 e lambdas (palestra Techday 2.0)

ordenando por tamanho

velho estilo

novo estilo

Page 15: Java 8 e lambdas (palestra Techday 2.0)

ordenando por nomes

código?

Page 16: Java 8 e lambdas (palestra Techday 2.0)

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)

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)

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)

exemplo (listener p/ buttons)

Page 20: Java 8 e lambdas (palestra Techday 2.0)

Java 7 vs. Java 8

Page 21: Java 8 e lambdas (palestra Techday 2.0)

qual é mais simples?

Page 22: Java 8 e lambdas (palestra Techday 2.0)

pacote: java.util.function

Page 23: Java 8 e lambdas (palestra Techday 2.0)

dúvidas?

Page 24: Java 8 e lambdas (palestra Techday 2.0)

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