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.

1
2
3
4
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
1
2
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/

 

Fonte: http://www.matera.com