A arte do suporte de longo prazo e o que o LTS significa para o ecossistema Java
Aqui está o que o Java 17 tem em comum com o Java 11 e o Java 8.
Em junho de 2018, há pouco mais de três anos, a Oracle e outros participantes do ecossistema Java anunciaram uma mudança no modelo de cadência de lançamento para Java SE.
Em vez de ter um lançamento principal planejado a cada dois ou quatro anos (que geralmente se torna de três a quatro anos), um novo modelo de lançamento de recursos de seis meses seria usado: a cada três anos, um lançamento seria designado como Long-Term Support (LTS) e receba apenas atualizações trimestrais de segurança, estabilidade e desempenho. Esse padrão foi emprestado descaradamente do modelo de lançamento do Mozilla Firefox, mas o ajustou para ficar mais alinhado com os requisitos de uma plataforma de desenvolvimento.
A primeira versão do Java lançada sob esse modelo foi o Java SE 11.
O lançamento do Java SE 17, o segundo lançamento do LTS sob o novo modelo, é iminente, e este artigo fornecerá uma atualização sobre como os lançamentos do Java SE funcionam. Também oferecerei alguns comentários sobre o que funcionou bem nos últimos três anos e quais refinamentos adicionais você deve esperar daqui para frente.
[Em 14 de setembro de 2021, a Oracle propôs mudar a cadência dos lançamentos do JDK LTS de três em três anos para dois em dois anos. Se aceito, isso significa que a próxima versão do JDK LTS após o JDK 17 será o JDK 21, em vez do JDK 23. —Ed.]
O modelo de lançamento de recursos de seis meses
No modelo de lançamento de recursos, os desenvolvedores da plataforma Java podem trabalhar em recursos e lançá-los em qualquer período de seis meses, mas somente quando os recursos estiverem prontos. Compare isso com o antigo modelo de lançamento principal legado, onde os desenvolvedores da plataforma Java sentiram uma enorme pressão para empurrar recursos para um lançamento; caso contrário, teriam que esperar vários anos pelo próximo ciclo.
Enquanto isso, os desenvolvedores de aplicativos agora desfrutam de uma cadência constante de recursos pequenos em uma linha do tempo previsível. Isso é muito melhor do que ter desenvolvedores Java tentando consumir centenas de alterações de uma só vez a cada poucos anos.
Tem funcionado? Três anos no novo modelo, pesquisas com desenvolvedores mostram que entre um quarto e meio dos desenvolvedores usam a versão Java mais recente de seis meses como sua versão do dia-a-dia. Metade deles disse ter aplicativos em produção na versão mais recente.
E o resto?
É bem entendido e esperado que nem todos os desenvolvedores ou organizações queiram consumir lançamentos de recursos em uma cadência de seis meses. Organizações mais conservadoras, especialmente, querem solidificar uma pilha de desenvolvimento em torno de uma única versão e não assumir riscos associados à introdução de novos recursos. É aqui que as versões Java LTS entram em jogo.
LTS se concentra na estabilidade
As versões Java LTS, como Java 11 e Java 17, são semelhantes às versões de suporte estendido do Firefox. As atualizações da Oracle para as versões Java LTS fornecem apenas melhorias de estabilidade, segurança e desempenho, não novos recursos. Isso reduz o risco de que uma atualização possa interromper a interação com uma ferramenta ou biblioteca. As organizações podem contar com lançamentos Java LTS disponíveis por pelo menos oito anos, proporcionando tempo suficiente para que as cadeias de ferramentas se solidifiquem e para que os desenvolvedores façam a transição para outro LTS vários anos depois.
O modelo LTS permite que os provedores de tecnologia se concentrem em versões específicas no suporte de longo prazo de seus produtos. Afinal, seria impraticável esperar que provedores de plataforma e cadeias de ferramentas fornecessem vários anos de suporte a cada lançamento de recurso de seis meses. Muito rapidamente haveria dezenas de versões precisando de suporte, bem como uma base de usuários fragmentada que seria impraticável de gerenciar.
O momento ideal para versões que recebem o tratamento LTS é subjetivo. Historicamente, se você olhar para trás, do Java 1.2 ao Java 8, havia três a quatro anos entre os principais lançamentos. O novo modelo de lançamento de recursos tem três anos entre o Java 11 e o Java 17. Para organizações muito conservadoras, esse intervalo de três anos é ideal, mas à medida que mais desenvolvedores usam ferramentas e técnicas modernas, há uma demanda crescente para que a Oracle ofereça versões Java LTS em um ciclo mais curto, talvez a cada dois anos.
Sejamos claros: cada provedor de binários da plataforma Java oferece seus próprios cronogramas e ofertas de suporte. O padrão na Oracle é que haverá oito anos de suporte para uma versão Java SE LTS. Para o Java 8, o LTS já foi estendido até pelo menos 2030, o que significa que esta versão terá pelo menos 16 anos de suporte quando for finalmente aposentada!
Enquanto isso, versões como Java 7 e Java 11 provavelmente não terão extensões de suporte. As extensões são baseadas simplesmente na adoção e se as organizações que fornecem os respectivos binários consideram valioso continuar oferecendo suporte (comercial).
Conclusão
As versões LTS atuais do Java são Java 7, Java 8, Java 11 e 17. Java 11 e Java 17 foram lançados sob a nova cadência de lançamento de recursos e com exatamente três anos de diferença; Java 7 e Java 8 são do modelo de versão principal legado. O suporte ainda é o mesmo, com cada versão LTS do Java recebendo apenas atualizações de desempenho, estabilidade e segurança.
A Oracle pretende oferecer suporte às versões Java LTS da seguinte forma:
- Java 7 até 2022
- Java 8 até pelo menos 2030
- Java 11 até 2026
- Java 17 até pelo menos 2029
A Oracle quer que desenvolvedores e organizações tenham o melhor dos dois mundos: somente você pode decidir se faz sentido acompanhar os lançamentos de seis meses e digerir novos recursos regularmente ou implantar em uma versão LTS específica por um longo período . As organizações, é claro, podem misturar e combinar sua abordagem, por exemplo, mantendo a cadência de seis meses durante o desenvolvimento, mas bloqueando uma versão LTS quando o código estiver em produção.
Referências
Comentários
Postar um comentário