Introdução ao Java 8

Como todos sabemos, Java é uma das linguagens de programação mais poderosas. Uma nova versão do Java, Java SE 8, foi lançada pela Oracle em 18 de março de 2014. Esta versão inovadora do Java é usada principalmente para plataformas de desenvolvimento de software. Existem vários recursos no Java8 que são as atualizações para a versão existente das bibliotecas de programação, JVM e Tools. Diz-se que o recurso mais importante é a introdução de expressões lambda que discutiremos na seção a seguir, juntamente com outros recursos.

Novos recursos do Java 8

Para programação Java, o Java SE 8 oferece uma infinidade de recursos. Alguns deles são

  • Expressões lambda
  • API de fluxo
  • Método ForEach ()
  • Método padrão
  • API de data e hora
  • Nashorn JavaScript Engine
  • Referências de método
  • StringJoiner

Agora, vamos analisar cada um deles em detalhes.

1. Expressão Lambda

A expressão lambda é uma função anônima (uma função sem nome) que ajuda a escrever código em um determinado estilo funcional. O Método Único Abstrato (SAM) pode ser implementado de maneira clara e concisa usando uma expressão. Como os dados podem ser iterados, filtrados e extraídos, é muito útil, especialmente na biblioteca de coleções. A expressão Lambda também ajuda a reduzir a complexidade do código. Abaixo está a sintaxe de uma expressão lambda:

Sintaxe:

(Parameters) -> Expression

Código:

( a, b ) -> a + b // Expression takes 2 parameters and return the sum.

2. API de Stream

A API de fluxo oferece uma técnica para processamento de dados de diferentes maneiras, como filtragem, extração, transformação etc. com a ajuda do pacote java.util.stream. Não há necessidade de confundir java.util.streams com Java InputStreams ou OutputStreams, pois não há relação entre eles. Uma das principais vantagens da API de fluxo é que ela não altera sua fonte. ou seja, se um conjunto de dados é filtrado, um novo conjunto de dados é criado com dados filtrados, em vez de modificar a fonte original. A API de fluxo avalia o código apenas quando é necessário e não itera o código mais de uma vez. Se a reiteração tiver que ser feita, um novo fluxo deverá ser gerado. Vários métodos predefinidos estão presentes para dar suporte a isso. Para iterar o fluxo, o código a seguir pode ser usado.

Código:

Stream.iterate(1, elem->elem+1)

3. Método ForEach ()

Para iterar sobre o Collection Framework, o Java SE8 oferece um novo método chamado forEach, definido na interface Iterable. O loop ForEach () pode ser usado em uma classe de coleção que estende a interface Iterable. Como esse método insere um único parâmetro, uma expressão lambda também pode ser transmitida como parâmetro.

Código:

age.forEach( age -> ( System.out.println(age); )); //each age is taken and printed

4. Método Padrão

Normalmente, métodos não abstratos não podem ser adicionados a interfaces. Mas, no caso do Java 8, ele permite adicionar esses métodos nas interfaces. Esses métodos são escritos com uma palavra-chave padrão e conhecidos como métodos padrão. Como são métodos não abstratos, o corpo do método também pode ser incluído. Curiosamente, esse recurso também garante a compatibilidade binária com versões mais antigas do código.

Código:

public interface Moveable (
default void Sound()(
System.out.println("Hi Anna, How is my sound?");
))

5. API de Data e Hora

No Java 8, uma nova API de horário e API de data foi introduzida onde as datas de tratamento estão em um método diferente em comparação com outras versões do Java. Essas classes também são chamadas de JSR-310, ThreeTen.

A seguir estão as classes Hora e Data que estão disponíveis em Java. pacote de tempo:

  • Classe Jtime.LocalDate
  • Classe LocalTime
  • Classe LocalDateTime
  • Classe MonthDay
  • Classe OffsetTime
  • Classe OffsetDateTime
  • Classe de relógio
  • Classe ZonedDateTime
  • Classe ZoneId
  • Classe ZoneOffset
  • Classe ano
  • Classe do ano
  • Classe do período
  • Classe de duração
  • Aula instantânea
  • Enumeração DayOfWeek
  • Enum do mês

Código:

Clock cl = Clock.systemDefaultZone();
System.out.println(cl.getZone());

6. Mecanismo Javascript Nashorn

Nashorn é um mecanismo JavaScript que ajuda na execução de código JavaScript na Java Virtual Machine (JVM) dinamicamente.

Isso pode ser feito usando dois métodos mencionados abaixo.

  1. Com a ajuda da ferramenta de linha de comando jjs.
  2. Configurando-o no código-fonte Java.

Para executar usando a ferramenta de linha de comando jjs, as seguintes etapas podem ser executadas.

  • Crie um arquivo .js js.
  • Escreva e salve o seguinte código no arquivo.

Código:

var welcome = function()(
print("welcome to Nashorn Javascript Engine");
);
welcome ();

  • O terminal de linha de comando aberto
  • Escreva o comando jjs welcome.js e clique em enter.
  • Depois que o comando for executado, a saída abaixo será exibida.

Saída :

7. Referências de método

Referências de método é outro recurso introduzido no Java 8 que pode ser usado em métodos de interface funcional. De outra maneira, pode-se dizer que eles são um subconjunto de outro recurso java, expressões lambda. Isso ocorre porque uma referência de método também pode ser usada se uma expressão lambda puder ser usada.

Os métodos podem ser:

  • Referência ao Construtor
  • Referência ao método estático
  • Referência a um método de instância

A referência ao método estático pode ser mostrada abaixo

Código:

Thread t=new Thread(ExampleClass::ThreadStatusMethod);
t.start();

8. StringJoiner

Uma nova classe final StringJoiner foi adicionada ao Java 8 no java. pacote util. Uma sequência de caracteres pode ser construída separada por delimitadores como vírgula (, ), hífen (-) etc.

Código:

StringJoiner Names = new StringJoiner("-"); // Here, delimiter is -
// Adding names to StringJoiner
joinNames.add("Anna");
joinNames.add("Adam");

Resultado:

Aprimoramentos de segurança

Além desses recursos, vários outros aprimoramentos de segurança também são feitos no Java SE8. Eles são:

  • Os PKCS (Public Key Cryptography Standards 11) foram estendidos para incluir suportes de 64 bits para o sistema operacional Windows.
  • Para plataformas UNIX, duas novas implementações foram apresentadas. Oferece comportamento de bloqueio e não bloqueio.
  • No provedor SunJCE, também são adicionados algoritmos AES e PBE, como PBEWithSHA256AndAES_128 e PBEWithSHA512AndAES_256.
  • O Java SE 8 suporta a extensão SNI (Server Name Indication) que estende os protocolos TLS / SSL para se conectar durante o handshake para suportar aplicativos de servidor.

Conclusão

O Java SE8 é a nova versão do Java desenvolvida pela Oracle, que oferece vários recursos. A expressão lambda é considerada a característica mais significativa entre eles. Neste documento, os recursos do Java SE 8 e os aprimoramentos de segurança são explicados em detalhes.

Artigos recomendados

Este é um guia para o que há de novo no java 8 ?. Aqui discutimos os oito recursos diferentes do novo java 8. Você também pode ler nossos outros artigos relacionados para saber mais.

  1. CardLayout em Java
  2. Número reverso em Java
  3. JComboBox em Java
  4. StringBuffer em Java
  5. Matrizes na programação Java
  6. Método estático JavaScript | Exemplos