Header Ads

Novidades do Java 8

(Foto: Reprodução) 
Java tem graciosamente evoluído ao longo da última década. No entanto, a maior atualização para o ecossistema Java é a atualização do Java 8. As mudanças garantem que Java permaneça no topo das prioridades para a criação de aplicativos de nível empresarial. As atualizações trouxeram mudanças para a linguagem e para a JVM (Java Virtual Machine).

Java é uma linguagem versátil que pode ser usada para criar uma ampla gama de aplicações. O livecoder espanhol Ankira, por exemplo, está desenvolvendo um novo jogo Metroid 2D em Java.
Existem muitas atualizações no Java 8 e, a seguir, vamos verificar o que há de novo. O artigo é destinado a desenvolvedores Java com alguma experiência anterior e não para iniciantes.

Expressões Lambda

As expressões lambda são os maiores recursos integrados do Java 8. Este paradigma de programação funcional estava, até agora, faltando ao Java.
O que é exatamente uma expressão lambda? Uma expressão lambda atua como uma função anônima e ajuda a escrever código de sintaxe leve. Uma expressão lambda é extremamente útil se a função é usada apenas uma vez. Ela deixa o código mais limpo e melhora a legibilidade.

Um exemplo:

(String s1, String s2, String s3) -> { return s2.length() - s3.length() + s1.length(); }

As expressões lambda pode ser um pouco complicadas de se entender. Veja como chase1263070 utiliza as expressões lambda.

Streams

Outra grande atualização em Java 8 é a interface Stream. E sim, ela é diferente do InputStream e OutputStream, então não se confunda.
A interface Stream está localizada em java.util.Stream e oferece operação paralela comparado ao uso de um iterador.

A interface Stream vem com diferentes tipos de operações de transmissão, incluindo Filter, Sorted, Match, Map, Count, Reduce, etc. A interface Streams pode efetivamente ser utilizada com a expressão lambda. Streams podem ser criadas com classe Collection (java.util.Collection) e, em seguida, utilizada com a interface de Streams para uma melhor manipulação de dados.
Vamos ver um exemplo da função sorted usando a interface Stream:

List<String> Str = new ArrayList<>();
Str.add(“abc1”);
Str.add(“aaa1”);
Str
.stream()
.sorted()
.filter((s) -> s.startsWith(“a”))
.forEach(System.out::println);
Output: “aaa1”, “abc1”

Mapas

A API de Mapas teve grandes alterações no Java 8. O único inconveniente é que ela não pode ser usada diretamente com a API de Stream. A nova mudança inclui suporte para vários métodos para tarefas comuns, incluindo a remoção de chaves, fusão de entradas, e muito mais.
Um exemplo de fusão de entradas:

map.merge(15, “fifteen”, (old, newVal) -> old.contact(newVal));
map.get(15);
Output: fifteen
map.merge(15, “merge”, (old, newVal) -> old.concat(newVal));
map.get(15);
Output: fifteenmerge

Você pode ler mais sobre mapas em Java 8 aqui.

API de Datas

A API de Datas é uma nova adição ao Java 8. Antes dela, os desenvolvedores precisavam usar a biblioteca de tempo Joda, mas agora tudo funciona fora da caixa. A API de Datas é muito inspirada na biblioteca tempo Joda e também corrige problemas encontrados com a biblioteca. A API Date está disponível sob o pacote java.time.

Veja a API de Datas em ação:

//getting local time of Brazil East zone.
LocalTime loc1 = LocalTime.now(ZoneId.of(“Brazil.East”));
// getting clock time from the machine using default time zone.
Clock clock = Clock.systemDefaultZone();

Aprenda mais sobre esta API aqui.

Anotações

Anotações já fazem parte do Java, mas, na versão Java 8, houve uma mudança na forma de como as anotações funcionam. Anotações agem como metadados e podem ser utilizadas como informações para o compilador, para o processamento em tempo de execução, para a implantação de tempo, ou de tempo de compilação de processamento.

Com o Java 8, anotações repetíveis é uma possibilidade agora. Isso significa que você pode usar anotações já declaradas com a anotação @Repetable. Para fazer isso, você precisa usar as anotações @Repetable dentro de outra anotação. A razão por trás da abordagem é compatibilidade com versões anteriores.

@interface Power {
Power[] value();
}
@Repeatable(Power.class)
@interface Power {
String value();
}

Nashorn

Nashorn é o novo motor de JavaScript em Java 8. Ele substitui o velho e fiel Oracle JVM. O Nashorn visa melhorar a execução de código JavaScript e permite que desenvolvedores possam usar JavaScript em suas aplicações Java sem se preocupar com problemas de desempenho.

Para executar JavaScript dinamicamente a partir de Java, você precisa importar duas bibliotecas: O javax.script.ScriptEngine e javax.script.ScriptEngineManager. Muitas outras mudanças foram feitas ao JavaScript, incluindo a capacidade de avaliar JavaScript com o método engine.eval.

Outras mudanças que você deve saber

Não é possível cobrir todas as muitas mudanças feitas em vários níveis aqui. No entanto, algumas das outras mudanças importantes que você deve saber são as seguintes:

Acumuladores simultâneos
JDBC 4.2
Toneladas de atualizações de segurança
Alterações no JavaFX
Ferramentas retrabalhados
Ferramenta JavaDoc agora suporta nova API DocTree
Melhoria na manipulação de simultaneidade.

O Java 8 trouxe alterações necessárias para o SDK. Qualquer um que está em transição do Java 7 para o Java 8 deve percorrer os pontos acima mencionados.

Artigo: Yan de Mello 
Tecnologia do Blogger.