O que esperar de lambda no Java 8?

lambda

A um tempo atrás, a JCP manifestou o interesse em lambdas, do qual eu fiquei com o pé atrás.
Fiquei com o pé atrás primeiro: porque achei complexo, nada convencional para o que estava acostumado a trabalhar, outra por adicionar a Java uma funcionalidade que eu não dominava e teria que aprender.

Isso foi até o ano passado, quando eu me defrontei com lambdas em C#.
Mas você me pergunta, em C#? Sim, me aventuro em outras tecnologias de vez em quando.

No trabalho e por curiosidade. Gosto de ver e as diferenças entre linguagens na prática. Só assim eu consigo argumentar como arquiteto que tecnologia é mais apropriada para cada caso.
Vivenciar e ter experiência é a melhor forma de sugerir alguma coisa, não acha?

Quando visualizei pela primeira vez em C# vi que não é um paradigma complexo, e sim ágil.
Com essa nova visão, resolvi então verificar como estão os trabalhos da comunidade para incorporar lambda no Java 8.

Vou começar a descrever lambdas com um exemplos rápido, fazendo um comparativo de como realizamos uma implementação no dia de hoje e como deverá ser implementado com ela.

Para iterar sobre uma lista de inteiros, normalmente iteramos conforme abaixo:

List inteiros = Arrays.asList(10,30, 40, 50, 60, 70);
for (Integer inteiro : inteiros) {
     System.out.println("valor: " + inteiro);
}

Em lambda:

inteiros.forEach(valor -> System.out.println(valor));

Para entender um pouco do funcionamento de lambda, é necessário observar a expressão em duas partes, a primeira à esquerda do símbolo da seta (->) listando os seus parâmetros e a outra à direita contém o corpo.
O compilador descobre que a expressão lambda tendo a mesma assinatura do método implementado pela interface Consumer
e tratar a primeira como instância da segunda, o bytecode gerado poderia ser diferente.
A declaração dos tipos dos argumentos de expressão lambda pode ser, na maior parte dos casos, inferido pelo compilador e depois omitido.

Mas podemos reescrever esta última expressão de forma mais “enxuta” usando uma referência do método.
Fazendo referência a um método usando o operador :: novo:

inteiros.forEach(System.out::println);

Conclusão:
Lambdas se pareceu mais produtivo a nós desenvolvedores.
Java 8 promete muitas melhorias aguardadas pelos desenvolvedores desde que a Sun foi comprada pela Oracle.
Mudanças devem ocorrer no Java por parte da Oracle. Esteja preparado para não ter que tentar absorver elas de uma hora para outra.
Aumentando sua produtividade profissional, outros ganhos poderão ser obtidos, então evoluir é necessário.
No final das contas, lambda foi e será um mundo novo a ser explorado por mim, mas que irei adiciona-lo ao meu trabalho tão logo esteja disponível.

Abraços,
André Rezende

Anúncios

2 comentários sobre “O que esperar de lambda no Java 8?

  1. Pingback: Java 8, o que é Lambda? | Blog da Teclógica

  2. Pingback: Java 8, o que é Lambda? – Teclógica

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s