Tudo o que você ouviu sobre o Java 8 está centrado nas expressões Lambda. Mas é apenas parte do Java 8. O Java 8 possui muitos novos recursos - algumas novas classes e sintaxe poderosas e outras coisas que deveriam ter desde o início.
Vou apresentar 10 recursos essenciais que acho que valem a pena saber. Pelo menos um ou dois deles também estarão lá para você tentar, então vamos começar!
1. Método padrão
Um recurso recém -adicionado do idioma Java é que você pode adicionar corpos de métodos (chamados métodos padrão) aos métodos de interfaces. Esses métodos serão adicionados implicitamente à classe que implementa essa interface.
Isso permite adicionar novos recursos às bibliotecas existentes sem quebrar seu código. Isso é obviamente uma melhoria. Mas, por outro lado, isso ofusca os limites entre interfaces e classes, porque as interfaces são usadas para definir contratos, enquanto as classes são usadas para definir implementações concretas. No lado positivo, torna a interface mais inteligente de uma maneira elegante e evita duplicação e extensão das bibliotecas. Mas, do lado ruim, veremos mais tarde que o método da interface consulta isso e o converte em classes concretas. Arrepios….
2. Terminação do processo
Iniciar um processo externo é metade do que você faz - quando o processo trava, pendura ou consome 100% de CPU, você precisa voltar e depurar. A classe de processo agora está equipada com dois novos métodos para ajudá -lo a controlar processos indisciplinados.
O primeiro é Isalive (), que permite verificar se o processo ainda está em execução sem esperar que o processo seja concluído. O segundo método mais poderoso é Destrowforcly (), que permite forçar os processos de morte que são cronometrados ou não mais necessários.
3. Stampedlocks
Há algo emocionante agora. Ninguém gosta de sincronizar o código. É o culpado por reduzir a taxa de transferência do seu aplicativo (especialmente aplicativos escaláveis) ou causar mais gravemente o aplicativo. Ainda assim, em algum momento você não tem escolha.
Existem muitas maneiras de limitar o acesso a recursos críticos de maneira síncrona multithread. Os mais famosos deles são os bloqueios de leitura de leitura (ReadWritelock) e implementações relacionadas a ele. Reduz a concorrência de recursos, permitindo que vários threads acessem o mesmo recurso, mas bloqueando threads operando o recurso. Isso parece bom em teoria, mas na verdade esse bloqueio é bastante lento, especialmente quando há um grande número de tópicos de gravação.
NOTA: O bloqueio de leitura-escreva divide os visitantes de recursos em duas categorias: leitor e escritor. O leitor executa operações somente leitura no recurso e o escritor pode operar o recurso.
O Java 8 apresenta um novo bloqueio de leitura de leitura chamado StampedLock. Esse bloqueio não é apenas mais rápido, mas também fornece um poderoso conjunto de bloqueios de otimismo, através do qual você pode obter um bloqueio de leitor com o custo mínimo e até não deseja que as operações de gravação durante a seleção. Após o término da seleção, você pode consultar o bloqueio para ver se há uma operação de gravação durante a seleção; nesse caso, você pode escolher se deve tentar novamente, atualizar o bloqueio ou desistir.
Este bloqueio é uma ferramenta muito poderosa e precisa de um artigo especial para descrevê -lo. Fiquei tão empolgado com essa coisa nova que estava tonto e bem feito!
Para mais detalhes, consulte aqui
4. Adders simultâneos
Este é outro bebê para quem trabalha em aplicativos multithread. Esta é uma nova API simples e eficiente para contadores multithread, que é mais rápido do que usar atomicinteger. Tão legal!
5. Valores opcionais
Oh, ponteiro nulo, um pesadelo para todos os desenvolvedores de Java. Desde o início (ou pelo menos em 1965), foi provavelmente a exceção mais popular.
Desenhado em escala e hashell, o Java 8 possui um novo modelo chamado opcional para encapsular referências que podem ser nulas. Não é de forma alguma uma bala de prata rescindir nulo, é uma maneira de permitir que o designer da API indique no nível do código (em vez do nível do documento) que um valor nulo pode ser transmitido para um método ou devolvido de um método para preparar o chamador para o valor nulo. Portanto, isso só pode funcionar sob a nova API e, assumindo que o chamador não permita que a referência escape do encapsulamento, resultando em desreferências inseguras.
Devo dizer que estou muito em conflito com esse recurso. Por um lado, há um grande problema com o NULL, então eu tendem a fazer tudo bem antes que o NULL aconteça. Mas, por outro lado, duvido que seja bem -sucedido. Isso ocorre porque o uso opcional requer esforços constantes de toda a empresa, mas não tem valor direto. A menos que seja decisivo, é provável que seja abandonado.
Para mais informações sobre opcional, clique aqui
6. Anote qualquer coisa
Outra pequena melhoria do idioma Java é que as anotações agora podem ser adicionadas a quase tudo no seu código. No passado, as anotações só podiam ser adicionadas à declaração de classe ou método. As anotações usando o Java 8 podem ser adicionadas às declarações de variáveis e parâmetros, não apenas ao passar um valor para um tipo especificado, mas mesmo quando alocando espaço para um novo objeto. Isso faz parte de tornar o idioma Java mais amigável e focado (juntamente com as ferramentas de documentação Java e as melhorias da API) por meio de análises estáticas e ferramentas de assistência, como o FindBugs. Essa é uma ótima característica, mas mais uma coisa como a Invokedynamic introduzida no Java 7, e seu valor real é o que a comunidade faz com ela.
7. Operação de transbordamento
Agora, aqui está uma série de métodos que devem ser incluídos na biblioteca principal desde o início. Um dos meus hábitos favoritos é depurar transbordar quando o INT exceder 2^32 e continuar a criar esse bug infame aleatoriamente (como "Como eu consegui esse valor estranho?").
Desta vez, não existe uma bala de prata, mas há uma série de funções que operam números que lançam exceções quando ocorre o excesso de uma maneira mais tolerante que o operador padrão +/* que causa implicitamente transbordamento. Se eu fosse eu, eu o definiria como o modo padrão do* JVM, usando funções explícitas que permitiriam o fluxo de fluxo.
8. Traversal da pasta
O conteúdo das árvores de diretório de iteração apareceu muito cedo nas pesquisas do Google (neste caso, você pode usar o Apache.FileUtils). Java 8
Adicionado 10 novos métodos para arquivos. O meu favorito é Walk (), que cria um fluxo preguiçoso (importante para grandes sistemas de arquivos) para iterar
Conteúdo da estrutura do diretório.
9. Geração de números aleatórios forte
A conversa de hoje sobre a vulnerabilidade de senhas e chaves é uma obrigação. A segurança do programa é um problema difícil e é fácil cometer erros. Isso também é o que eu gosto
O motivo do novo método SecureRandom.getInstanceSTrong () que pode selecionar automaticamente o gerador de números aleatórios mais forte na JVM. Reduz
As chances de uma falha do gerador ou um gerador fraco são obtidas por padrão, resultando em uma chance de que a chave ou o valor de criptografia seja facilmente rachado.
10. DAT.TOINSTANT ()
O Java 8 apresenta uma nova API de data de data. Como a API existente não é boa, isso é bastante compreensível. Agora, Joda se concentrou e penetrou na API do Java Date Time por muitos anos. No entanto, mesmo com a nova API, ainda há um grande problema - existem toneladas de código e bibliotecas que usam a API antiga.
Todos sabemos que enfrentando esse problema, então o que devemos fazer?
Como o Java 8 fez de maneira bastante elegante, um novo método para instant () foi adicionado à classe de data para convertê -lo em uma nova API. Mesmo usando a API de data antiga (o mesmo no futuro próximo), ela permitirá que você atualize rapidamente para a nova API.
O que você acha que o artigo tem outras características que não devem ser mencionadas ou discorda de nossa análise? Por favor, comente para nós - esse é o objetivo de postar!
O exposto acima é uma compilação das informações sobre os novos recursos do Java 8. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio a este site!