Java8 () -> First Look


Por onde começar? Scala? Ruby? Groovy?

Já trabalho a há alguns anos com Java e resolvi compartilhar minha experiência com pessoas que se interessam em aprofundar seus conhecimentos nessa linguagem. Devo confessar que não é fácil para um programador escrever textos de uma forma atrativa para o leitor, mas prometo me esforçar e passar para vocês um pouco do que aprendi.

É extremamente importante acompanhar a evolução das tecnologias mais utilizadas no momento e o que pode ser utilizado num futuro. Pesquisei sobre linguagens funcionais e cheguei até a linguagem Scala, achei muito interessante. Trabalhando exclusivamente com Java me veio uma questão, seria vantajoso investir em Scala no momento? SIM! Porém com o lançamento do Java 8 mudei de idéia e achei melhor investir em estudos para utilizar em meus projetos essas novas funcionalidades do Java 8, pois o mesmo veio com diversas mudanças e incorporou programação funcional com expressões lambdas.

Me sinto muito estimulado com a oportunidade de trabalhar com esta nova versão em meus projetos.

Não era o momento para investir em Scala

Iniciei meus estudos tardiamente sobre o Java 8, mas como diz o ditado popular, “antes tarde do que nunca”.

Quando houve o lançamento do Java 5 houveram mudanças significativas na linguagem, e eu estava tão comprometido com o desenvolvimento de um projeto que não tive a oportunidade de me aprofundar nos detalhes que o acompanhavam.

Só após um determinado tempo, é que pude me atualizar e tive que estudar intensamente, afim de recuperar o tempo perdido. Hoje quero aproveitar o lançamento do Java 8 e priorizar a utilização dessas novas tendências no desenvolvimento de futuros projetos.

Iniciando… muitas melhorias!

O Java 8 vem com muitas melhorias, na forma em escrever código, performance e o que eu achei mais interessante, escrever código de forma funcional e orientado a objetos sem quebrar a compatibilidade com códigos antigos. As novidades são diversas, lambda, method references, Streams, métodos default, manipulação de datas Date/Time etc…

Lambda

As expressões lambda só podem aparecer em lugares onde serão atribuídas a uma variável cujo tipo é uma interface funcional. Uma interface funcional deve ter um único método abstrato, e são conhecidas como SAM(Single Abstract Method). Java tem diversas interfaces como: Runnable, Callable, Comparator, TimerTask e muitas outras…

A interface Runnable é uma perfeita candidata para um tipo SAM, pois tem um único método:

Runnable r = () -> System.out.println(“hello java 8!”);
r.run();

Ou então adicionando mais operações:

Runnable r = () -> {
System.out.println(“Teste 1“);
System.out.println(“Teste 2“);
};

Repare que esta sintaxe de expressão lambda tem a sua definição muito simples, a interface, a assinatura do método () seguido pelo operador lambda -> e o corpo do método.

Então, com a introdução de lambda no java 8 o código ficou muito mais enxuto e com isso podemos criar código muito mais flexivel e conciso. Nos próximos posts vou explorar algumas dessas funcionalidades incorporadas no Java 8, de acordo com a minha experiência diária.

Até a próxima! Le’chaym!