O que há de novo no Java 19?  Você deve dar o salto?

O que há de novo no Java 19? Você deve dar o salto?

Java é uma linguagem de programação versátil e poderosa que permite aos desenvolvedores criar aplicativos robustos e de alto desempenho que podem ser executados em qualquer plataforma. Java é a base para praticamente todos os tipos de aplicativos em rede e é o padrão global para desenvolvimento e entrega de aplicativos móveis, jogos, conteúdo baseado na Web e software empresarial. Com o seu rico conjunto (…)

Imagem em destaque

Java é uma linguagem de programação versátil e poderosa que permite aos desenvolvedores criar aplicativos robustos e de alto desempenho que podem ser executados em qualquer plataforma. Java é a base para praticamente todos os tipos de aplicativos em rede e é o padrão global para desenvolvimento e entrega de aplicativos móveis, jogos, conteúdo baseado na Web e software empresarial.

Com seu rico conjunto de bibliotecas, Java permite que os desenvolvedores criem soluções inovadoras e eficientes. A plataforma Java fornece um ambiente para desenvolvimento de aplicações com comportamento dinâmico. A plataforma também inclui um conjunto de ferramentas que permitem aos desenvolvedores projetar, testar, otimizar e implantar facilmente seus aplicativos.

Foi lançado originalmente em 1995 e desde então passou por várias atualizações. A linguagem de programação Java é uma linguagem orientada a objetos de alto nível, conhecida por sua portabilidade e independência de plataforma.

Com mais de 20 anos sob seu comando, a linguagem de programação Java se tornou uma das linguagens mais populares em uso atualmente. Na verdade, de acordo com o Índice TIOBE para outubro de 2022Java foi classificada como a terceira linguagem de programação mais popular do mundo, atrás apenas de C e Python — tendência que se mantém desde 2018.

Novidade no Java 19: uma introdução

A atualização mais recente do Java Development Kit (JDK) foi lançada em 20 de setembro de 2022. É uma versão não LTS que visa adicionar vários novos recursos, incluindo simultaneidade estruturada, padrões de registro, uma visualização de uma função externa e API de memória, e suporte para a arquitetura de conjunto de instruções (ISA) Linux/RISC-V de código aberto.

O que significa não-LTS, você pergunta? O suporte de longo prazo (LTS) é uma fase de suporte estendida para uma versão de software específica. O suporte de longo prazo inclui atualizações de segurança, correções de bugs e melhorias de desempenho durante o período de apoio. Embora muitas vezes não seja a versão mais atualizada do software, os usuários que necessitam de suporte de longo prazo para seus aplicativos podem considerar o uso da versão LTS.

Para a Oracle, a versão LTS do Java é o padrão do setor até o fim do seu ciclo de vida. A partir de 2022, a versão LTS atual é Java 17 e está programado para terminar sua execução em 2026.

Neste contexto, versões não LTS são pequenas atualizações normalmente usadas para testar novas funcionalidades e obter feedback da comunidade. Por exemplo, no caso do Java 19, todos os recursos mencionados acima, exceto o recurso Linux/RISC-V, estão nas fases de visualização ou incubadora.

A diferença entre recursos experimentais, de visualização e de incubadora

Para entender como funcionam as versões Java, precisamos nos familiarizar com a notação usada pela Oracle: experimental, visualização e incubadora. Todas essas tags são usadas para se referir a novos recursos que não foram totalmente integrados ao Java.

Pré-visualizações Java

As visualizações foram introduzidas no JEP12. Para citar de OpenJDK: “A recurso de visualização é um novo recurso da linguagem Java, Java Virtual Machine ou API Java SE que é totalmente especificado, totalmente implementado e, ainda assim, impermanente. Ele está disponível em um lançamento de recurso JDK para provocar feedback do desenvolvedor com base no uso no mundo real.”

Seria justo comparar uma prévia com um teste beta em estágio final. O recurso foi exaustivamente testado e deve estar estável. Os recursos que entram em um estágio de visualização geralmente são alvo de feedback do usuário que a Oracle usa para fazer correções ou alterações conforme o caso exigir ou para eventualmente liberá-los.

Os recursos de visualização têm um “período de carência” muito curto, então você pode esperar muito poucas alterações e sua adoção total geralmente é dentro de um ano de seu lançamento inicial.

Como os recursos de visualização não são recursos permanentes na plataforma Java SE, eles ficam indisponíveis por padrão em tempo de compilação e tempo de execução. Os desenvolvedores que desejam usar APIs e recursos de linguagem de visualização devem ativá-los explicitamente no compilador e no tempo de execução.

Java Experimental

Os recursos experimentais são versões iniciais (principalmente) de recursos no nível da máquina virtual. Embora testados, eles podem ser arriscados, incompletos ou até mesmo instáveis. Para acessar recursos experimentais, normalmente, o desenvolvedor precisa habilitá-los usando sinalizadores dedicados.

Para contextualizar, se os recursos de visualização estão 95% concluídos, então os recursos experimentais estão cerca de 25% concluídos. Eles são introduzidos para que os primeiros usuários e entusiastas possam experimentar o novo recurso e fornecer feedback, relatar bugs ou começar a explorar seu potencial.

Tenha em mente que cada fornecedor é livre para ativar/desativar recursos experimentais em suas distribuições conforme acharem adequado.

Incubadora Java

Recursos de incubação são APIs distribuídas na forma de módulos com nomes prefixados com “JDK.incubadora.” Assim como os recursos experimentais, espere que as APIs da incubadora apresentem bugs e sejam instáveis. O nome incubadora vem do fato de que você vê essas APIs amadurecerem ao longo de vários lançamentos Java até que estejam prontas para o estágio de visualização.

Projetos Java

A maioria dos recursos sobre os quais falaremos hoje são resultados de projetos Java. Um Projeto é um esforço colaborativo para produzir um artefato específico, que pode ser um corpo de código, documentação ou algum outro material.

Qualquer Colaborador poderá propor a criação de um novo Projeto. Se for apoiado por pelo menos um Líder de Grupo, cujo Grupo Patrocinará o Projeto, e aprovado por um Consenso Preguiçoso dos Membros do OpenJDK, então o Projeto será criado.

Projetos famosos incluem:

Projeto Tear

Project Loom é um projeto que promete entregar fios leves. Isso é feito fazendo com que a Java Virtual Machine (JVM) gerencie o agendamento em vez do sistema operacional (SO). Dessa forma, a JVM pode controlar o escalonamento de todas as threads e, em teoria, proporcionar melhor desempenho.

Projeto Valhalla

Projeto Valhalla é um projeto para melhorar o desempenho em Java. Isso é feito introduzindo tipos de valor, que são uma nova forma de tipo de dados programados como objetos, mas acessados ​​como primitivos. Isso significa que eles podem ser armazenados em um único array, com apenas um único campo de cabeçalho para todo o array e acesso direto aos campos individuais.

Projeto Panamá

O Projeto Panamá é um projeto que facilita a conexão de programas Java a componentes não Java, como bibliotecas baseadas em C. O projeto possui diversos subprojetos, que estão sendo lançados em status de incubadora nas versões recentes do Java. Esses subprojetos incluem a API Foreign-Memory Access, a API Foreign Linker, a API Vector e a API Foreign-Function Interface.

Projeto Âmbar

Projeto Amber é um projeto responsável por adicionar diversas novidades à linguagem de programação Java. Deles declaração de missão é: “explorar e incubar recursos menores da linguagem Java, orientados para a produtividade, que foram aceitos como candidatos a PECs”.

Esses recursos incluem a palavra-chave var para variáveis ​​locais, blocos de texto, registros e correspondência de padrões em instâncias de comparações. O projeto ainda está em andamento e atualmente está trabalhando na adição de classes seladas, correspondência de padrões em switches e correspondência de padrões para registros e matrizes.

Novos recursos do Java 19

Simultaneidade Estruturada

Na ciência da computação, simultaneidade é a capacidade de diferentes partes ou unidades de um programa, algoritmo, recurso ou dispositivo de executar ações de forma independente. A simultaneidade pode melhorar o desempenho de um programa ou sistema, permitindo que várias tarefas sejam processadas simultaneamente. Também pode ajudar a fazer melhor uso de recursos, como processadores, memória e espaço em disco.

Essa simultaneidade executará várias tarefas em threads diferentes e as tratará como uma única unidade de trabalho. Os objetivos, de acordo com OpenJDK são os seguintes:

  • Melhore a capacidade de manutenção, a confiabilidade e a observabilidade do código multithread.
  • Promova um estilo de programação simultânea que possa eliminar os riscos decorrentes de cancelamento e encerramento.

Isso faz parte do Project Loom, um modelo de simultaneidade leve que permite aos desenvolvedores escrever programas simultâneos com mais facilidade. Ele adiciona suporte para threads virtuais, que são threads que não estão vinculados a um núcleo de CPU específico. Isso possibilita que um único thread use vários núcleos ao mesmo tempo, o que pode melhorar o desempenho.

Pré-visualização dos padrões de registro

Este é um recurso de visualização que permite que padrões de registro e padrões de tipo sejam aninhados para permitir uma forma poderosa, declarativa e combinável de navegação e processamento de dados. Baseado na correspondência de padrões, por exemplo, entregue no JDK 16 em março de 2021. Os planos podem exigir que os padrões de registro sejam estendidos com recursos como padrões de array e padrões vararg. De acordo com o JDK, os objetivos são estender a correspondência de padrões para expressar consultas de dados mais complexas sem alterar a sintaxe dos padrões de tipo.

Visualização da função estrangeira e API de memória

A API de função externa e memória é uma forma de os programas Java interagirem com código e dados fora do tempo de execução Java. Esta API é eficiente para invocar funções estrangeiras e acessar memória externa. É seguro de usar e ajuda a evitar os perigos e a fragilidade da Java Native Interface (JNI). A API de função externa e memória foi incubada no JDK 17 e reincubada no JDK 18. Os objetivos desta proposta incluem ser fácil de usar, ter bom desempenho, ser geral e ser seguro.

Visualização de threads virtuais

Threads virtuais são threads leves que podem ajudar a reduzir a quantidade de trabalho necessária para escrever, manter e observar aplicativos simultâneos de alto rendimento. Os objetivos dos threads virtuais incluem:

  • Tornando mais fácil para aplicativos de servidor escritos no estilo simples de thread por solicitação escalarem com utilização de hardware quase ideal
  • Tornando mais fácil para o código existente que usa a API Java.lang Thread adotar threads virtuais com alterações mínimas
  • Habilitando solução de problemas, depuração e criação de perfil de threads virtuais com ferramentas JDK existentes

Visualização da correspondência de padrões para expressões e instruções de switch

A terceira visualização da correspondência de padrões para expressões e instruções switch adiciona refinamentos, incluindo a substituição de padrões protegidos por cláusulas when em blocos switch. Além disso, a semântica de tempo de execução de uma troca de padrão quando o valor da expressão do seletor é nulo está mais alinhada com a semântica da troca herdada.

Os objetivos do plano incluem expandir a expressividade e aplicabilidade de expressões e instruções switch, permitindo que padrões apareçam em rótulos de casos. Outros objetivos incluem permitir que os desenvolvedores relaxem a histórica hostilidade nula de um switch quando desejado, aumentando a segurança das instruções switch e garantindo que as expressões e instruções switch existentes continuem a ser compiladas sem alterações e executadas com semântica idêntica.

A esperança é eventualmente suportar a correspondência de padrões em todo o Java, adicionando-a aos locais onde as expressões são usadas. Esse recurso também faz parte do Projeto Amber.

Quarta incubação de uma API vetorial

A API vetorial é uma forma de os desenvolvedores escreverem algoritmos vetoriais complexos em Java. A API foi incubada anteriormente no JDK 16, JDK 17 e JDK 18. As melhorias na API propostas para o JDK 19 incluem melhorias para carregar e armazenar vetores de e para MemorySegments, conforme definido pela visualização da Foreign Function and Memory API. O JDK 19 também adicionaria duas operações vetoriais cruzadas, compactar e expandir, juntamente com uma operação complementar de compactação de máscara vetorial.

A operação de compressão vetorial mapeia pistas de um vetor de origem, selecionado por uma máscara, para um vetor de destino na ordem das pistas, enquanto a operação de expansão faz o inverso. A operação compress é útil na filtragem de resultados de consultas. Em outra adição à API vetorial, as operações lanewise integrais bit a bit seriam expandidas, incluindo operações como contar o número de um bit, inverter a ordem dos bits e compactar e expandir bits.

Os objetivos da API incluíam ser clara e concisa, independente de plataforma, ter tempo de execução confiável e desempenho de compilação em arquiteturas x64 e AArch64 e permitir degradação “elegante”, para situações em que uma computação vetorial não pode ser totalmente expressa em tempo de execução como uma sequência de operações vetoriais. A API vetorial é do Projeto Panamá.

Porta Linux/RISC-V

A porta Linux/RISC-V adicionaria suporte para um conjunto de instruções de hardware que já é usado por muitas cadeias de ferramentas de linguagens diferentes. RISC-V é uma família de arquiteturas de conjunto de instruções (ISAs) relacionadas e a porta suportaria apenas a configuração RV64GV do RISC-V. Este é um ISA de uso geral de 64 bits que inclui instruções vetoriais. Os desenvolvedores de Java podem considerar adicionar suporte para outras configurações RISC-V no futuro.

Preparando-se para uma atualização

Você quer dar uma olhada no Java 19? Bem, se você quiser fazer um upgrade, lembre-se destas dicas:

  1. Saiba o que você precisa: Antes de atualizar, é importante saber o que sua empresa precisa. Faça uma lista dos recursos e funções essenciais que ajudarão sua empresa a funcionar com mais eficiência. Se nada em nossa lista de recursos parecer obrigatório, você pode querer se perguntar se é realmente necessário.
  2. Faça sua pesquisa: Depois de saber o que precisa, é hora de pesquisar e descobrir se o Java 19 pode ajudá-lo. Leia avaliações on-line, converse com outras empresas do seu setor e obtenha recomendações de fontes confiáveis. Lembre-se de que alguns desses recursos ainda são experimentais, portanto preste muita atenção a possíveis bugs e problemas.
  3. Organize-se: Atualizar seu software pode ser um grande projeto, por isso é importante se organizar antes de iniciar qualquer coisa. Crie um cronograma de quando você deseja que as coisas sejam feitas e certifique-se de que todos os envolvidos conheçam suas funções e responsabilidades.
  4. Orçamento adequadamente: Um dos aspectos mais importantes da atualização do seu software é fazer um orçamento correto. Obviamente, com probabilidades de lançamento a curto prazo, há muito pouco a considerar em termos de orçamento. Mas seus desenvolvedores ainda precisam ler e aprender a documentação para que possam aproveitar ao máximo a atualização. Esteja pronto para esse período de incubação.
  5. Comece pequeno e teste: Faça uma nova instalação em uma sandbox e brinque um pouco. Aproveite isso como uma oportunidade para que sua equipe conheça as novidades. Lembre-se de que a Oracle fornecerá suporte por apenas seis meses, portanto devemos ver o Java 20 por volta de março de 2023

Já é hora de atualizar para o Java 19?

O Java 19 está definido para ser um lançamento de curto prazo, com o Java 20 já surgindo no horizonte. Então, você deve atualizar? Como sempre, depende. A primeira questão a considerar é como você se sente em relação a lançamentos de curto prazo como este. Se você não se importa em atualizar com frequência, é melhor aproveitar os benefícios que acompanham os lançamentos mais recentes.

Se você preferir ficar com uma única versão do Java por um longo período de tempo, talvez seja melhor aguardar o próximo lançamento LTS. Quais são os benefícios de atualizar para Java 19? Em primeiro lugar, é importante notar que as mudanças no Java 19 não são tão significativas como em algumas versões anteriores. Talvez isso seja esperado, já que é um lançamento de curto prazo.

Lançamentos de curto prazo geralmente são destinados a entusiastas, pessoas que gostam de mexer com novos recursos o mais rápido possível, mas podem apresentar novos bugs e ser menos estáveis. Isto é esperado; afinal, como vimos, grande parte das novidades ainda está em fase de testes.

Para empresas que dependem do Java 17, a resposta francamente é um sonoro não. Embora alguns dos novos recursos sejam extremamente interessantes, não há razão para consertar o que não está quebrado. Você pode instalar o JDK em uma sandbox e brincar com os recursos; você pode até começar a desenvolver usando recursos que passaram por várias rodadas de testes. Mas isso é uma preparação para o que está por vir, não para entrar no movimento.

Se você gostou disso, não deixe de conferir um de nossos outros artigos sobre Java:

  • 6 melhores estruturas Java GUI
  • 8 melhores IDEs Java e editores de texto
  • 7 melhores bibliotecas de aprendizado de máquina Java
  • C# x Java: principais diferenças explicadas
  • Golang vs Java: linguagens de programação comparadas e como escolher

Fonte: BairesDev

Conteúdo Relacionado

O Rails 8 sempre foi um divisor de águas...
Os genéricos são uma característica poderosa em Java que...
A GenAI está transformando a força de trabalho com...
Entenda o papel fundamental dos testes unitários na validação...
Aprenda como os testes de carga garantem que seu...
Aprofunde-se nas funções complementares dos testes positivos e negativos...
Vídeos deep fake ao vivo cada vez mais sofisticados...
Entenda a metodologia por trás dos testes de estresse...
Descubra a imprevisibilidade dos testes ad hoc e seu...
A nomeação de Nacho De Marco para o Fast...
Aprenda como os processos baseados em IA aprimoram o...
Java e JavaScript são duas das linguagens de programação...
Introdução Quando se trata de desenvolvimento de software, a...
Os desenvolvedores Java enfrentam uma variedade de erros relacionados...
Neste artigo, discutiremos os benefícios de gerar imagens em...
O Java 23 finalmente foi lançado, e podemos começar...
Milhares de sites são criados todos os dias. Não...
Os recursos de linguagem que serão incluídos na próxima...
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。