Mostrando postagens com marcador Desenvolvimento de Software. Mostrar todas as postagens
Mostrando postagens com marcador Desenvolvimento de Software. Mostrar todas as postagens

quarta-feira, 8 de setembro de 2021

🚀 O Fim das Atualizações Públicas é um Processo, não um Evento

🚀 O Fim das Atualizações Públicas é um Processo, não um Evento

Plataformas de software bem-sucedidas e seus ecossistemas têm um relacionamento simbiótico, com ciclos de feedback positivos e negativos. À medida que os desenvolvedores usam uma plataforma para criar produtos de sucesso que resolvem problemas, a plataforma evolui para oferecer novos recursos. Ao mesmo tempo, plataformas de sucesso se adaptam às mudanças no ambiente tecnológico, depreciando e removendo funcionalidades legadas menos utilizadas.


Este processo está sempre em movimento. À medida que novas versões de uma plataforma são lançadas, as mais antigas são gradualmente reduzidas para que os provedores possam focar seus esforços no futuro, em vez de no passado.


O ecossistema Java passa por esse processo com sucesso há décadas, através de dez revisões principais da plataforma. Uma forte compatibilidade com versões anteriores protege os investimentos feitos em todo o ecossistema. Ao mesmo tempo, alguma adaptação é inevitável ao longo do tempo. O sucesso contínuo da plataforma, portanto, requer que a maior parte do ecossistema avance para o lançamento mais recente, protegendo os investimentos existentes.


Uma estratégia para equilibrar esses dois objetivos é, por um lado, fornecer atualizações públicas gratuitas por um período de tempo e, por outro, oferecer suporte de longo prazo comercial para usuários com necessidades diferentes. Essa estratégia permite que a maior parte do ecossistema acompanhe o ritmo de lançamento gratuitamente, fornecendo atualizações adicionais de segurança, desempenho e outras sob termos comerciais para usuários que desejam migrar de uma versão da plataforma para outra em seu próprio cronograma, ou não migrar.

🌱 Todo novo começo vem do fim de algum outro começo

O Java SE 8 foi lançado em 18 de março de 2014. No momento em que o Oracle Java SE 8 atinge o fim das atualizações públicas para usuários comerciais em janeiro de 2019, terão sido fornecidos quase cinco anos de atualizações públicas gratuitas e contínuas.


Com uma Assinatura Oracle Java SE, os usuários comerciais podem continuar a se beneficiar do suporte e das atualizações regulares do Oracle Java SE 8, incluindo melhorias e correções críticas, por um período ainda maior. Por exemplo, a tecnologia Java Web Start continuará sendo suportada comercialmente no Oracle Java SE 8 até pelo menos março de 2025.


Nem todos os usuários do Oracle Java SE 8 o usam comercialmente. Alguns o usam para jogar ou executar aplicativos de produtividade pessoal. As atualizações públicas gratuitas do Oracle Java SE 8 para usuários pessoais continuarão sendo fornecidas até pelo menos dezembro de 2020. Durante esse tempo, os usuários pessoais devem entrar em contato com seus provedores de aplicativos e incentivá-los a migrar seus aplicativos para a versão mais recente do Java ou mudar para aplicativos alternativos.

⬆️ Atualize para o JDK 10

O caminho de atualização mais curto do Oracle Java SE 8 leva ao JDK 10. As instruções para desenvolvedores de aplicativos estão disponíveis no Oracle JDK 10 Migration Guide. Instruções para usuários que migram do Oracle JRockit também estão disponíveis.


A versão mais recente do Java disponível para download no momento da redação é o JDK 10.0.2. Esta é a linha de base de segurança, ou seja, contém correções para vulnerabilidades de segurança descritas no último Oracle Critical Patch Update.

⬆️ Atualize para o JDK 11

O JDK 10 chegará ao fim de sua vida útil no final de setembro de 2018. O próximo caminho de atualização do Oracle Java SE 8 leva ao JDK 11. O Oracle Java SE 11 é a próxima versão planejada de Suporte de Longo Prazo (LTS) e a primeira versão desse tipo que faz parte do ciclo de seis meses. Os clientes da Oracle receberão, portanto, o Oracle Premier Support e lançamentos de atualizações periódicas mesmo após o lançamento do Java SE 12. Isso torna o Oracle Java SE 11 um alvo de migração atraente para ISVs e outros usuários comerciais.


Como o JDK 11 ainda não foi lançado, o curso de ação recomendado para desenvolvedores que pretendem usar o JDK 11 é começar a trabalhar na migração do Java SE 8 fazendo com que seus aplicativos sejam executados com sucesso no JDK 10. Devido ao ciclo de lançamento semestral mais rápido, o número de alterações entre o JDK 10 e o JDK 11 é muito menor do que entre o JDK 8 e o JDK 10.


Assim que um aplicativo funcionar bem no JDK 10, os desenvolvedores devem testá-lo com as versões de candidata a lançamento (Release Candidate) do JDK 11 para estarem prontos para migrar para o JDK 11 quando for lançado ainda neste mês.

⬆️ Atualize para o JDK 12

Os desenvolvedores que desejam migrar um aplicativo diretamente do Oracle Java SE 8 para o JDK 12 devem seguir o mesmo modelo de migração — começando com um esforço de migração maior para a versão mais recente na linha de base de segurança, ou seja, o JDK 10.0.2 no momento e, em seguida, assim que o aplicativo funcionar bem, continuar com uma migração incremental para a versão mais recente disponível do JDK 11.


Assim que o aplicativo funcionar bem no JDK 11, os desenvolvedores devem começar a testá-lo com as versões de acesso antecipado (Early Access) do JDK 12. As versões de acesso antecipado do JDK 12 são publicadas regularmente sob a GNU General Public License, versão 2, com a Classpath Exception. Essas versões permitem que os desenvolvedores avaliem os novos recursos do JDK 12 e testem o impacto das alterações nos recursos existentes em seus próprios aplicativos.

📌 Permanecendo com o OpenJDK 8 após janeiro de 2019

Neste ponto, os engenheiros da Oracle lideram e realizam a maior parte do trabalho de manutenção nas atualizações do OpenJDK 8 na Comunidade OpenJDK há mais de quatro anos e meio. Isso continuará até pelo menos janeiro de 2019. Após janeiro de 2019, os contribuidores da Oracle provavelmente redirecionarão seus esforços na Comunidade OpenJDK das atualizações do OpenJDK 8 para outras versões atuais do JDK, como foi feito no passado com as atualizações do OpenJDK 6 e do OpenJDK 7.


Como no passado, quando uma parte adequada se apresentar para continuar a manter as atualizações do OpenJDK 8 após janeiro de 2019, será discutido na Comunidade OpenJDK como melhor possibilitar essa transição.


Os usuários interessados em continuar usando o OpenJDK 8 após os engenheiros da Oracle mudarem de foco devem, portanto, se inscrever na lista de e-mails do projeto até janeiro de 2019 e discutir suas expectativas e planos com os contribuidores restantes para entender melhor o escopo do suporte disponível para o OpenJDK 8 naquele momento.

🚀 A Chegada do Java 14!

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 305Pattern 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 352Non-Volatile Mapped Byte Buffers: Adiciona um modo de mapeamento de arquivo para o JDK ao usar memória não volátil.
  • JEP 358NullPointerExceptions 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.