Java 8 – Novidades

Olá pessoal! Neste post falarei sobre as novidades que achei mais interessantes e que virão para a nova versão do Java. Nessa versão há grandes mudanças em comparação ao recente Java 7.

A primeira mudança é a expressão lambda, que muda um pouco o paradigma de programação da linguagem Java. Quem conhece um pouco de Scala, Groovy ou Ruby já tem alguma familiaridade com este tipo de programação funcional. O lambda veio para facilitar e diminuir o código de programação, ela também pode ser entendida como função anônima, pois não precisa definir explicitamente um nome a ela.

Na Listagem 1 é mostrado um exemplo de código que lista os números de um Array, a mesma função é realizada pelo código da Listagem 2, porém utilizando a expressão lambda.

List<Integer> inteiros = Arrays.asList(0, 5, 10, 15, 20, 30);
for (Integer inteiro : inteiros) {
System.out.println("Número: " + inteiro);
}
Listagem 1 – Iteração sem o uso de lambda
List<Integer> inteiros = Arrays.asList(0, 5, 10, 15, 20, 30);
inteiros.forEach(valor->System.out.println(valor));
Listagem 2 – Uso de lambda em uma iteração

Vemos que o código fica muito mais enxuto, economizando linhas, e não tão complicado de se entender, dando mais produtividade a nós desenvolvedores.

Outro ponto interessante, e que confunde um pouco a cabeça do programador Java, é a melhoria que teve em interfaces. Agora é possível definir métodos estáticos e também métodos com implementação padrão em uma interface, ou seja, é possível implementar um método dentro de uma interface Java, com um código padrão, que pode ser utilizado por qualquer classe que a implemente, similar a uma classe abstrata. Outra novidade sobre interfaces é a anotação @FunctionalInterface, em cima da declaração da interface, para definir que nessa interface pode haver apenas um método, caso haja algum a mais, o compilador acusará um erro.

Agora também ficou mais fácil trabalhar com datas e horas. A API do Java integrou funcionalidades baseadas no JodaTime, uma biblioteca para facilitar o trabalho com datas. Essa nova API facilita o trabalho com TimeZones e horário de verão. Temos algumas classes novas como: LocalDate, LocalTime, Year, Month, YearMonth, DayOfWeek, Duration, Period, entre outras. Teremos um próximo post, onde falarei apenas sobre essa nova API de Datas, entrando em detalhes e dando alguns exemplos de como a utilizar.

Também houve algumas alterações e novos métodos nas APIs de Collections, Concurrency, IO/NIO, para mais detalhes veja os links que deixei de referência ao final do texto.

E por fim o Metaspace, que veio para lutar contra o erro java.lang.OutOfMemoryError: PermGen space, que é um estouro de memória na PermGen. O Metaspace substitui o PermGen, ou seja, é uma área de memória nova, onde, por padrão, o tamanho de memória é variável (o que não acontecia no PermGen), sendo o limite de memória a própria memória do computador, mas podendo ser configurado com o parâmetro -XX:MaxMetaspaceSize.

Com isso, vimos que nós programadores Java, devemos nos atualizar com essas mudanças e implementá-las quando começarmos a usar o Java 8. Afinal, não queremos utilizar a classe Calendar em um projeto novo, e queremos utilizar o lambda para deixar o código mais enxuto.

Referências

[1] http://www.infoq.com/br/news/2013/10/tudo-sobre-java-8/
[2] http://www.infoq.com/br/presentations/novidades-javase-8
[3] http://openjdk.java.net/projects/jdk8/features

Links Externos

[1] http://www.joda.org/joda-time/

Por IGOR KENGI SHIOHARA

Postado em: 20 de fevereiro de 2014

Confira outros artigos do nosso blog

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

Three laws that enable agile software development

09 de março de 2017

Celso Gonçalves Junior

Medindo performance de uma API REST

21 de fevereiro de 2017

Monise Costa

Deixe seu comentário