Java 16 é lançado ~ Vamos ver os novos recursos

Java 16 é lançado ~ Vamos ver os novos recursos

 

Ao comemorarmos o 25º aniversário do Java, 2020 é um ano memorável para o Java. Depois de mais de 20 anos de inovação, Java sempre foi:

  • Mantenha a independência da plataforma adaptando-se ao cenário tecnológico em constante mudança, permitindo assim flexibilidade.
  • A confiabilidade é garantida mantendo a compatibilidade com versões anteriores.
  • Expressa pela aceleração da inovação sem sacrificar a segurança.

Juntamente com a capacidade do Java de melhorar continuamente o desempenho, a estabilidade e a segurança da plataforma, continua a ser a linguagem de programação mais popular entre os desenvolvedores do mundo. De acordo com o último relatório do IDC, Java Turns 25, mais de 9 milhões de desenvolvedores (69% dos desenvolvedores globais em tempo integral) usam Java - mais do que qualquer outra linguagem.

A Oracle demonstrou ainda mais a inovação contínua do Java e orgulhosamente anunciou o lançamento abrangente do Java 16, que é a sétima versão funcional do lançamento em seis meses de intenso desenvolvimento. O fluxo constante de mudanças esperadas torna mais fácil para os desenvolvedores gerenciar sua adoção de sugestões inovadoras.

Java 16 é lançado ~ Vamos ver os novos recursos

 

Java 16 já está disponível!

A Oracle agora fornece oficialmente o Java 16 para todos os desenvolvedores e empresas. De acordo com a programação do Oracle Critical Patch Update (CPU, Critical Patch Update), o Oracle JDK 16 receberá pelo menos duas atualizações trimestrais e, em seguida, lançaremos o Oracle JDK 17. O Java 17 estará totalmente disponível em setembro de 2021, mas uma versão compilada já está disponível no site jdk.java.net.

A Oracle mais uma vez usou o contrato GPLv2 de código aberto e o contrato CPE para fornecer Java 16 como a versão Oracle OpenJDK para todos, e para usuários que usam a versão Oracle JDK como produtos ou serviços Oracle, ou para aqueles que desejam obter suporte comercial, também obtenha licença comercial.

Java 16 , Juntos

Semelhante às versões anteriores, continuaremos a agradecer a muitos indivíduos e organizações da comunidade OpenJDK por suas contribuições para o Java 16 - nós construímos o Java juntos!

Taxa de desenvolvimento fixa JDK 16

A taxa geral de mudança do JDK permaneceu basicamente constante por muitos anos, mas a velocidade de entrega de produtos que podem ser usados ​​para produção aumentou muito com o intenso ritmo de desenvolvimento de seis meses.

Não lançamos mais milhares de correções e aproximadamente cem recomendações de aprimoramento do JDK (JEP) nas principais versões a cada poucos anos. Em vez disso, escolhemos um plano de seis meses mais gerenciável e previsível. Os aprimoramentos são fornecidos na versão pequena do recurso. Essas alterações variam de recursos importantes a pequenos aprimoramentos, manutenção de rotina, correções de bugs e melhorias na documentação. Para cada problema e mudança no sistema JDK Bug, nós o apresentamos na forma de um único envio.

Dos 1.897 problemas marcados como resolvidos em Java 16, [1.397] (
bugs.openjdk.java.net/browse/JDK-…% 20ORDER% 20BY% 20updated% 20DESC% 2C% 20assignee% 20ASC) foram emitidos pela Oracle. isso, e os outros 500 foram resolvidos por desenvolvedores individuais e desenvolvedores que trabalham para outras organizações. Estude cuidadosamente essas questões e classifique os dados organizacionais do responsável, e você obterá o seguinte organograma. Este organograma é composto por pessoas que contribuíram para o desenvolvimento do patch em Java 16:

 

Java 16 é lançado ~ Vamos ver os novos recursos

 

 

A Oracle agradece aos desenvolvedores que trabalham em organizações como ARM, SAP, Red Hat e Tencent por suas excelentes contribuições. Também estamos muito felizes em ver as contribuições de organizações menores, como Ampere Computing, Bellsoft, DataDog, Microdoc e outros desenvolvedores independentes, que juntos contribuíram com 3% das correções no Java 16.

Agradecemos também aos muitos desenvolvedores experientes que revisaram as alterações propostas, os primeiros usuários que tentaram adotar a versão de acesso inicial e relataram problemas e profissionais dedicados que forneceram feedback sobre a lista de discussão do OpenJDK.

As pessoas a seguir forneceram feedback valioso sobre a qualidade da construção, registraram erros de alta qualidade ou forneceram atualizações frequentes:

  • Jaikiran Pai (formiga apache)
  • Gary Gregory (Apache Commons)
  • Uwe Schindler (Apache Lucene)
  • Robert Scholte (Apache Maven)
  • Mark Thomas (Apache Tomcat)
  • Enrico Olivelli (Apache Zookeeper)
  • Rafale Winterhalter (Byte Buddy)
  • Peter Karich (Graph Hopper)
  • Evgeny Yavits (JaCoCo)
  • Marc Hoffman (JaCoCo)
  • Vincent Privat (JOSM)
  • Christain Stein (JUnit 5)
  • David Karnok (RxJava)

Além disso, por meio do Programa de Desenvolvimento de Qualidade, gostaríamos de agradecer aos seguintes projetos FOSS e indivíduos que forneceram feedback excelente para testar versões de acesso antecipado do Java 16 para ajudar a melhorar a qualidade do lançamento.

  • Apache Ant
  • Apache Derby (Rich Hillegas)
  • Apache Lucene
  • Apache Maven
  • Apache Tomcat
  • Apache Wicket (Martin Grigorov)
  • Apache ZooKeeper
  • Coleções de Eclipse (Nikhil Nanivadekar)
  • eo-yaml (Mihai Andronache)
  • FXGL (Almas Baimagambetov)
  • FXyz (Sean Phillips)
  • Java Katas (Chandra Guntur)
  • GraphHopper
  • Hibernate ORM
  • Validador Hibernate
  • Hibernate Search
  • Hibernate reativo (Sanne Grinovero & Yoann Rodiere)
  • JobRunr (Ronald Dehuysser)
  • jOOQ (Lukas Eder)
  • MyBatis (Avenida Iwao)
  • Micrômetro (Tommy Ludwig)
  • RxJava
  • Sejda
  • PDFsam (Andrea Vacondio)

O que há de novo em Java 16

Com milhares de atualizações de desempenho, estabilidade e segurança, o Java 16 oferece aos usuários um total de 17 aprimoramentos e alterações principais (chamados de recomendações de aprimoramento JDK, JEP), incluindo três módulos de incubadora e uma função de visualização.

Introduzimos alguns aprimoramentos no módulo da incubadora, que é uma forma de fornecer APIs e ferramentas não finais aos desenvolvedores, permitindo que os usuários forneçam feedback e, em última análise, melhorem a qualidade da plataforma Java.

Da mesma forma, alguns aprimoramentos foram introduzidos, que são recursos de visualização, linguagem ou recursos de VM da plataforma Java SE, que foram totalmente determinados, totalmente implementados, mas não permanentes. Fornecemos esses recursos na versão do recurso JDK para estimular o feedback dos desenvolvedores com base no uso real, o que pode afetá-los e torná-los recursos permanentes em versões futuras. Essa abordagem fornece aos usuários a oportunidade de fornecer feedback oportuno e dá aos fornecedores de ferramentas a oportunidade de oferecer suporte a um grande número de desenvolvedores Java antes de usar o recurso na produção.

Os 17 JEPs incluídos no Java 16 são divididos em seis categorias diferentes:

1. Novos recursos de linguagem

JEP 394 Pattern Matching 的 instanceof

A correspondência de padrões foi introduzida pela primeira vez como um recurso de visualização no Java 14, e nós o introduzimos como um recurso de visualização no Java 15. A correspondência de padrões aprimora a funcionalidade da linguagem de programação Java por meio da correspondência de padrões com o operador instanceof.

A correspondência de padrões permite que a lógica geral do programa (ou seja, a extração condicional de componentes do objeto) seja mais concisa e segura.

JEP 395 Records

O registro também foi introduzido como um recurso de visualização no Java 14 e Java 15, fornecendo uma sintaxe compacta para declarar classes. Essas classes são portadores transparentes de dados imutáveis ​​superficiais, reduzindo muito o nível de detalhe dessas classes e melhorando a legibilidade e manutenção do código.

2. Melhorias JVM

Processamento de Thread Simultâneo JEP 376 ZGC

O JEP 376 move o processamento da pilha de threads do ZGC de um ponto seguro para a fase simultânea. Mesmo em grandes heaps, podemos alcançar pausas abaixo de um milissegundo nos pontos seguros do GC. Nesta versão e nas versões subsequentes, a eliminação da fonte final de atraso no coletor de lixo ZGC melhorará muito o desempenho e a eficiência do aplicativo.

JEP 387 Elastic Metaspace

Essa função pode retornar mais rapidamente os metadados da classe HotSpot VM (ou seja, o  metaspace ) não utilizados para o sistema operacional, reduzindo assim o espaço ocupado pelo metaspace. Aplicativos que têm muitas atividades de carregamento e descarregamento podem ocupar muito espaço não utilizado.

O novo esquema aloca memória meta-espaço em blocos menores, reduzindo a sobrecarga e a fragmentação do carregador de classes. Ele melhora a flexibilidade, devolvendo a memória meta-espaço não utilizada ao sistema operacional, melhorando assim o desempenho do aplicativo e reduzindo a utilização da memória.

3. Novas ferramentas e bibliotecas

JEP 380 Unix-Domain Socket Channels

Canais de soquete de domínio Unix sempre foi um recurso da maioria das plataformas Unix, e agora implementamos esse recurso no Windows 10 e no Windows Server 2019. Este recurso adiciona suporte de Socket de domínio Unix (AF_UNIX) ao Socket e à API de Socket do servidor no pacote java.nio.channels. Ele estende o mecanismo de canal herdado para suportar canais Socket de domínio Unix e canais Socket de servidor. O soquete de domínio Unix é usado para comunicação entre processos (IPC) no mesmo host. Na maioria dos aspectos, é semelhante aos soquetes TCP-IP, exceto que eles usam nomes de caminho do sistema de arquivos em vez de endereços e portas de protocolo da Internet (IP). Número para endereçar. Para comunicação local entre processos, o Unix Socket é mais seguro e mais eficaz do que a conexão de loopback TCP-IP.

Ferramenta de embalagem JEP 392

Esse recurso foi introduzido pela primeira vez no Java 14 como um módulo incubador, permitindo o empacotamento de aplicativos Java independentes. Ele oferece suporte ao formato de embalagem local para fornecer uma experiência de instalação natural para os usuários finais. Esses formatos incluem msi e exe no Windows, pkg e dmg no macOS e deb e rpm no Linux. Ele também permite especificar parâmetros de inicialização ao empacotar e pode ser chamado diretamente da linha de comando ou programaticamente por meio da API ToolProvider. Observe que o nome do módulo jpackage mudou de jdk.incubator.jpackage para jdk.jpackage. Isso melhorará a experiência do usuário final ao instalar o aplicativo e simplificará a implantação usando o modelo de "loja de aplicativos".

4. Verificação futura do trabalho

JEP 390 Aviso para classes baseadas em valor

Este recurso especifica a classe do wrapper original (java.lang.Integer, java.lang.Double, etc.) como baseada em valor (semelhante a java.util.Optional e java.time.LocalDateTime) e adiciona forRemoval ao seu construtor. Eles estão obsoletos desde o JDK 9 e geram novos avisos. Ele fornece avisos sobre tentativas incorretas de sincronização em instâncias de quaisquer classes baseadas em valores na plataforma Java.

Muitos projetos de código aberto populares responderam ao aviso de obsolescência do Java 9 removendo chamadas do construtor empacotadas de suas fontes e, dada a urgência do aviso de "exclusão obsoleta não recomendada", podemos esperar mais do que fazer.

O JEP 396 encapsula fortemente os componentes internos do JDK por padrão

Por padrão, essa função encapsula fortemente todos os elementos internos do JDK, exceto para as principais APIs internas, como sun.misc.Unsafe. Por padrão, o código compilado com êxito com uma versão anterior para acessar a API interna do JDK pode não funcionar mais. Essa mudança tem como objetivo encorajar os desenvolvedores a migrar do uso de elementos internos para o uso de APIs padrão, de modo que eles e seus usuários possam atualizar facilmente para versões futuras do Java. Para o JDK 9, a inicialização forte é habilitada pela opção do iniciador --illegal-access, enquanto o JDK 15 é a configuração padrão, o JDK 9-15 será um aviso e, a partir do JDK 16, será rejeitado por padrão  . Ainda podemos usar uma única opção de linha de comando para relaxar o empacotamento de todos os pacotes (por enquanto) e, no futuro, apenas usar –add-opens para abrir um pacote específico para ser eficaz.

5. Incubadora e função de visualização

API de vetor JEP 338 (incubadora)

A API incubadora fornece uma iteração inicial da API para expressar cálculos de vetor que são compilados de forma confiável em tempo de execução nas melhores instruções de hardware de vetor na arquitetura de CPU com suporte, obtendo assim melhor desempenho do que cálculos escalares equivalentes. Ele permite o uso de instruções de dados múltiplos de instrução única (SIMD) disponíveis na maioria das CPUs modernas. Embora HotSpot suporte a vetorização automática, o conjunto de operações escalares transformáveis ​​é limitado e suscetível a alterações de código. A API permitirá que os desenvolvedores escrevam facilmente algoritmos de vetor de alto desempenho portáteis em Java.

API de link externo JEP 389 (incubadora)

A incubadora API fornece acesso Java puro a código nativo estaticamente tipado. Essa API simplificará muito o processo de vinculação a bibliotecas nativas, que de outra forma seria complicado e sujeito a erros. Java oferece suporte a chamadas de métodos nativos por meio da Java Native Interface (JNI) desde Java 1.1, mas é difícil e frágil de usar. Os desenvolvedores Java devem ser capazes (principalmente) de usar qualquer biblioteca nativa que seja útil para uma tarefa específica. Ele também fornece suporte para funções estrangeiras sem qualquer código de cola JNI intermediário.

API de acesso à memória externa JEP 393 (incubadora 3 vezes)

Foi introduzido pela primeira vez em Java 14 e Java 15 como uma API incubadora. Essa API permite que programas Java operem com segurança e eficácia em várias memórias externas (por exemplo, memória nativa, PMEP, memória heap gerenciada etc.). Ele também fornece a base para a API do vinculador externo.

JEP 397 classe selada (2ª prévia)

Esta função de visualização limita quais outras classes ou interfaces podem estender ou implementá-los. Ele permite que o autor de uma classe ou interface controle o código responsável por implementar esse código. Além disso, ele fornece uma maneira mais declarativa do que os modificadores de acesso para restringir o uso de superclasses. E apóia a direção futura da correspondência de padrões por meio de análises detalhadas de padrões.

6. Melhore a produtividade dos desenvolvedores OpenJDK

As alterações restantes não são diretamente visíveis para os desenvolvedores Java (pessoas que escrevem código e executam aplicativos em Java), mas apenas para desenvolvedores Java (pessoas que fazem o desenvolvimento OpenJDK).

JEP 347 ativa recursos de linguagem C ++ 14 (no código-fonte JDK)

Isso permite o uso de recursos da linguagem C ++ 14 no código-fonte JDK C ++ e fornece orientação específica sobre quais recursos podem ser usados ​​no código HotSpot. No JDK 15, os recursos de linguagem usados ​​pelo código C ++ no JDK são limitados ao padrão de linguagem C ++ 98/03. Este recurso requer a atualização das versões mínimas aceitáveis ​​de compiladores para várias plataformas.

JEP 357 Migrar do Mercurial para Git
JEP 369 Migrar para GitHub

Esses dois JEPs migraram o JDK 11 e versões posteriores do repositório de código-fonte da comunidade OpenJDK do Mercurial (hg) para o Git e os hospedaram no GitHub. A migração inclui ferramentas de atualização (como ferramentas jcheck, webrev e defpath) para Git. Git reduz o tamanho dos metadados (cerca de um quarto do tamanho original), o que economiza espaço em disco local e reduz o tempo de clonagem. Comparadas com o Mercurial, as ferramentas modernas podem ser melhor integradas ao Git. O repositório OpenJDK Git está agora em github.com/openjdk

JEP 386 Alphine Linux Port

JEP 388 Windows / AArch64 Port

O foco desses JEPs não é o trabalho de portabilidade concluído em si, mas integrá-los ao repositório principal do JDK.

O JEP 386 portou o JDK para Alpine Linux e outras distribuições x64 e AArch64 que usam musl como sua biblioteca C principal. Além disso, o JEP 388 portou o JDK para o Windows AArch 64 (ARM64).

7. Suporte de ferramenta

O suporte de ferramenta atual ajuda a melhorar a produtividade do desenvolvedor. Com o Java 16, continuaremos a dar as boas-vindas aos esforços dos principais desenvolvedores de IDE, cujas soluções de ferramentas fornecem aos desenvolvedores suporte para a versão atual do Java. Os desenvolvedores podem esperar suporte Java 16 por meio dos seguintes IDEs:

  • JetBrains IDÉIA
  • Eclipse Market

Java ainda é a linguagem de programação número um de escolha para programadores de software. Conforme mostrado pela entrega pontual dessas melhorias no Java 16, por meio de um planejamento cuidadoso contínuo e da participação do ecossistema, a plataforma Java está bem posicionada para o desenvolvimento moderno e o crescimento na nuvem.

Continue a acompanhar as notícias e atualizações das seguintes maneiras:

  • Visite Inside.Java (notícias e opiniões da equipe Oracle Java)
  • Ouça o podcast Inside.Java (este é um programa para desenvolvedores Java, obtido diretamente dos desenvolvedores Java da Oracle. Discutiremos a linguagem, JVM, OpenJDK, segurança de plataforma e projetos inovadores como Loom e Panama. Há outros conteúdos) .
  • Junte-se à lista de discussão OpenJDK (onde você gosta do andamento do projeto OpenJDK).

Acho que você gosta

Origin blog.csdn.net/a159357445566/article/details/115210808
Recomendado
Clasificación