A Chegada do Java 14!
Anuncia-se com orgulho a disponibilidade geral do Java 14, representando a quinta release de funcionalidades como parte do ciclo de seis meses. Esse nível de previsibilidade, há mais de dois anos, permite que os desenvolvedores gerenciem mais facilmente a adoção de inovações graças a um fluxo constante de mudanças esperadas.
O Java 14 já está disponível!
O Java 14 agora está disponível para todos os desenvolvedores e empresas. O Oracle JDK 14 receberá um mínimo de duas atualizações trimestrais, conforme a programação do Oracle Critical Patch Update (CPU), antes de ser seguido pelo Oracle JDK 15. O Java 15 alcançará disponibilidade geral em setembro de 2020, mas as builds de acesso antecipado já estão sendo oferecidas em jdk.java.net.
Mais uma vez, o Java 14 é fornecido como o release Oracle OpenJDK usando a licença de código aberto GNU General Public License v2, com a Classpath Exception (GPLv2+CPE), e também sob uma licença comercial para aqueles que usam o release Oracle JDK como parte de um produto ou serviço Oracle, ou para aqueles que preferem licenças comerciais em vez de licenças de código aberto.
Java 14, Juntos
Semelhante ao Java 11, Java 12 e Java 13, continuamos a celebrar as contribuições feitas para o Java 14 por muitos indivíduos e organizações na Comunidade OpenJDK — todos construímos o Java juntos!
📈 Taxa de Correções do JDK 14
A taxa geral de mudança ao longo do tempo no JDK permaneceu essencialmente constante por muitos anos, mas sob o ciclo de seis meses, o ritmo no qual inovações prontas para produção são entregues melhorou muito. Em vez de disponibilizar dezenas de milhares de correções e cerca de cem JDK Enhancement Proposals (JEPs) em um grande release principal a cada poucos anos, os aprimoramentos são entregues em releases de funcionalidades menores em uma programação de seis meses mais gerenciável e previsível.
Essas mudanças podem variar de uma funcionalidade significativa a pequenos aprimoramentos, manutenção de rotina, correções de bugs e melhorias na documentação. Cada mudança é representada em um único commit para um único problema no JDK Bug System.
Dos 1.986 problemas do JIRA marcados como corrigidos no JDK 14, 1.458 foram concluídos por pessoas que trabalham para a Oracle, enquanto 528 foram contribuições de desenvolvedores individuais e desenvolvedores que trabalham para outras organizações.
🆕 Novidades no Java 14
O Java 14 oferece aos usuários dezesseis aprimoramentos/mudanças principais, incluindo dois módulos incubadores, três funcionalidades de pré-visualização, dois recursos depreciados e duas remoções.
Alguns aprimoramentos são introduzidos em módulos Incubadora, um meio de colocar APIs e ferramentas não finais nas mãos dos desenvolvedores, permitindo que os usuários ofereçam feedback que pode melhorar a qualidade da plataforma Java.
Da mesma forma, alguns aprimoramentos são introduzidos como Funcionalidades de Pré-visualização – funcionalidades de linguagem ou da VM da Plataforma Java SE que são totalmente especificadas, totalmente implementadas, mas ainda não permanentes. Elas estão disponíveis em um release de funcionalidade do JDK para provocar feedback dos desenvolvedores com base no uso do mundo real, o que pode levar a que se tornem permanentes em um release futuro.
Finalmente, algumas mudanças visam reduzir o tamanho e o escopo do JDK por meio de Depreciação, que é uma técnica para comunicar informações sobre o ciclo de vida de uma API: incentivar aplicativos a migrarem para longe da API, desencorajar aplicativos de formarem novas dependências na API e informar os desenvolvedores sobre os riscos de continuar dependendo da API. Com a ferramenta jdeprscan, introduzida pela primeira vez no Java 9, os usuários podem realizar análise estática de seus arquivos jar (ou alguma outra agregação de arquivos de classe) para identificar usos de elementos de API depreciados, permitindo assim que se preparem com antecedência para sua remoção futura.
Os 16 JEPs entregues com o JDK 14 são:
- JEP 305 – Pattern Matching para instanceof (Pré-visualização): Aprimora o Java com pattern matching para o operador instanceof.
- JEP 343 – Ferramenta de Empacotamento (Incubadora): Fornece uma maneira para os desenvolvedores empacotarem aplicações Java para distribuição em formatos específicos de plataforma.
- JEP 345 – Alocação de Memória Consciente de NUMA para G1: Melhora o desempenho geral do coletor de lixo G1 em sistemas de acesso não uniforme à memória (NUMA).
- JEP 349 – Transmissão de Eventos JFR (JFR Event Streaming): Expõe dados do JDK Flight Recorder (JFR) para monitoramento contínuo.
- JEP 352 – Non-Volatile Mapped Byte Buffers: Adiciona um modo de mapeamento de arquivo para o JDK ao usar memória não volátil.
- JEP 358 – NullPointerExceptions Mais Úteis: Melhora a usabilidade das NullPointerExceptions descrevendo com precisão qual variável era nula.
- JEP 359 – Registros (Pré-visualização): Fornece uma sintaxe compacta para declarar classes que mantêm dados superficialmente imutáveis.
- JEP 361 – Expressões Switch: Esta foi uma funcionalidade de pré-visualização no JDK 12 e JDK 13 e agora é uma funcionalidade concluída.
- JEP 362 – Depreciar as Portas Solaris e SPARC: Este JEP deprecia as portas Solaris e SPARC com a intenção de removê-las em um release futuro.
- JEP 363 – Remover o Coletor de Lixo Concurrent Mark Sweep (CMS): O coletor de lixo CMS foi depreciado há mais de dois anos.
- JEP 364 – ZGC no macOS: A funcionalidade ZGC foi portada para Windows e macOS.
- JEP 365 – ZGC no Windows: Por favor, consulte o resumo para o JEP 364.
- JEP 366 – Depreciar a Combinação de GC ParallelScavenge + SerialOld: Deprecia a combinação dos algoritmos de coleta de lixo Parallel Scavenge e Serial Old.
- JEP 367 – Remover as Ferramentas e API Pack200: Remove as ferramentas pack200 e unpack200, e a API Pack200 no pacote java.util.jar.
- JEP 368 – Blocos de Texto (Segunda Pré-visualização): Após receber feedback quando os Blocos de Texto foram introduzidos pela primeira vez como uma funcionalidade de pré-visualização (JEP 355) como parte do Java 13, duas novas sequências de escape foram adicionadas.
- JEP 370 – API de Acesso à Memória Estrangeira (Incubadora): Este módulo incubador introduz uma API para permitir que programas Java acessem com segurança e eficiência memória estrangeira fora do heap Java.
🔧 Suporte a Ferramentas
O suporte de ferramentas atual e atualizado ajuda a impulsionar a produtividade do desenvolvedor. Com o Java 14, continuamos a acolher os esforços dos principais fornecedores de IDE, cujas soluções de ferramentas oferecem aos desenvolvedores suporte para as versões atuais do Java.
As ferramentas populares de automação de compilação usadas principalmente para projetos Java também estão preparadas para oferecer suporte ao Java 14 aos desenvolvedores. Tanto o Apache Maven e seus plug-ins, quanto o candidato a release do Gradle 6.3, suportam o Java 14.
O Java continua sendo a linguagem de programação número 1 escolhida pelos programadores de software. Como a entrega pontual de melhorias com o Java 14 demonstra, por meio de um planejamento contínuo e cuidadoso e do envolvimento do ecossistema, a plataforma Java está bem posicionada para o desenvolvimento moderno e o crescimento na nuvem.