Chegue um pouco mais perto de Java 8

Chegue um pouco mais perto de Java 8

Java, uma linguagem de programação criada por James Gosling em 1991, foi feita para escrever um programa que pudesse ser executado em vários sistemas operacionais. Oracle tem agora o aço para Java e continua o projeto em nome do OpenJDK. Ao longo do tempo, várias novas versões aprimoradas de Java foram lançadas das quais o atual é 1.8 conhecido popularmente como Java 8.

  • Leia isto => Como instalar o Java 8 no CentOS, Red Hat & Fedora
  • Leia isto => Como instalar o Java 8 no Ubuntu e Linuxmint

O idioma foi projetado incorporando essas propriedades:

  • Plataforma independente- O programa utiliza a máquina virtual Java como abstração e não acessa o sistema operacional de forma direta. O que torna os programas Java altamente portáteis.
  • Programação orientada a objetos- Além dos tipos de dados primitivos, todos os elementos em Java podem ser considerados como objetos.
  • Linguagem de programação fortemente tickida- Sim! Java é uma linguagem de programação fortemente ticada. Por exemplo, os tipos de variáveis ​​usados ​​devem ser predefinidos e a conversão para outros objetos se torna praticamente rigorosa. Isso deve ser feito no caso de um programador.
  • Linguagem interpretada e compilada- O código -fonte Java exige ser transferido para o formato bytecode, que não depende da plataforma de destino. As instruções são interpretadas pela Java Virtual Machine (JVM). A JVM que contém o chamado Hotspot-Compiler tem o potencial de traduzir o desempenho das instruções críticas de bytecode em instruções de código nativo.
  • Gerenciamento automático de memória- Java é uma plataforma tão que gerencia com sucesso a alocação de memória e a desalocação para criar novos objetos. O programa não tem acesso direto à memória. E, como resultado, o coletor de lixo exclui automaticamente objetos aos quais não existe ponteiro ativo.

Sendo um desenvolvedor de jQuery, tenho trabalhado muito com o Java 8 nos últimos anos, seja novos aplicativos ou migrando os existentes. E eu acho que é o momento certo para anotar algumas das melhores práticas que eu achei muito útil. Esta postagem do blog discute os fluxos, eu.e. as operações mais importantes que podem ser executadas em seu código. Métodos padrão, lambdas e fluxos e usando opcional e assim por diante para representar valores ausentes.

Métodos padrão em interfaces

A capacidade de especificar implementações de métodos padrão nas interfaces foi adicionada pelo JDK 8 para que as coleções pudessem evoluir sem quebrar a compatibilidade com versões anteriores. Nas versões anteriores, não conseguimos adicionar nenhum método para interface sem todas as subclasses implementadoras. Com a ajuda da versão 1.8, podemos marcar um método com a palavra -chave padrão e fornecer o corpo do método diretamente na interface.
Abaixo mencionado está um exemplo de uma interface chamada de debagable. Destina -se para mostrar que como a API de reflexão é usada para obter acesso aos campos do objeto e fornece uma implementação decente do ToString () para o objeto que imprime os valores dos campos.

interface pública de debatcle padrão string debug () stringbuilder sb = new stringbuilder (this.getClass ().getName ()); sb.anexar ("["); Campo [] campos = this.getClass ().getDecLaredFields (); para (campo F: campos) f.setaccessível (true); tente sb.Anexar (f.getName () + "=" + f.pegue isto)); sb.anexar (","); catch (ilegalargumentException | ilegalAccessException e) tiro novo RuntimeException (e); sb.acrescentar("]"); retornar sb.para sequenciar();
123456789101112131415161718interface pública de debatcle padrão string debug () stringbuilder sb = new stringbuilder (this.getClass ().getName ()); sb.anexar ("["); Campo [] campos = this.getClass ().getDecLaredFields (); para (campo F: campos) f.setaccessível (true); tente sb.Anexar (f.getName () + "=" + f.pegue isto)); sb.anexar (","); catch (ilegalargumentException | ilegalAccessException e) tiro novo RuntimeException (e); sb.acrescentar("]"); retornar sb.para sequenciar();

Lambdas em fluxos

Infelizmente, até agora Java era considerado uma linguagem de programação apropriada para técnicas de programação funcional. A única razão foi que as funções não eram os cidadãos de primeira classe no idioma. De fato, não havia nenhuma maneira arrumada e aceita de se referir a um bloco de código por um nome e passá -lo. Como resultado, Lambdas traz uma mudança drástica. Hoje, as referências de método podem ser usadas para melhor ou para pior, para se referir a um método específico, atribuir as funções em variáveis, transmiti -las e aproveitar todas as vantagens que o paradigma de programação funcional oferece.
O básico é praticamente simples, um monte de interfaces são criadas. Por exemplo:

// demora muito, retorna uma função de string f = l -> l.para sequenciar(); // não leva nada fornece a você threads fornecedor s = thread :: currentThread; // leva uma string como o parâmetro consumidor c = sistema.out :: println;
12345678// leva um longo, retorna uma função string f = l -> l.para sequenciar(); // não faz nada lhe dá threadssupplier s = thread :: currentThread; // leva uma string como o parâmetro consumidor c = sistema.out :: println;

A ressalva mencionada aqui é o código usado para gerenciar, caso você deixe que as funções anônimas cresçam em um determinado limite. O código especifica o fluxo de dados. Tudo o que você precisa fazer é apenas conectar a funcionalidade específica, especialmente a que você deseja encontrar na estrutura.

Em poucas palavras

Ao trabalhar com fluxos, lembre -se sempre de que você precisa transformar os valores contidos no fluxo com as funções que você fornece, por exemplo, usando a sintaxe Lambda. Algumas takeaways:

  • Caso se o código não especifique a estrutura para o fluxo de dados no qual você conecta suas funções, vale a pena considerar evitar multiplicar lambdas. Uma aula adequada pode ser mais legível.
  • Se o seu lambda crescer acima de 3 linhas de código - divida -o: em várias invocações de mapa () que processam os dados nas etapas ou extraem um método e use a sintaxe de referência do método para se referir a ele.
  • Não atribua lambdas e funções aos campos dos objetos. Lambdas representam funções e essas são melhor servidas puras.