JavaRush /Blogue Java /Random-PT /Tendências Java em 2022: JDK 18 e 19, Project Loom e Data...

Tendências Java em 2022: JDK 18 e 19, Project Loom e Data mesh

Publicado no grupo Random-PT
Bem, 2022 começou. Enquanto a maioria das pessoas ainda está no feriado de Ano Novo com champanhe e Olivier, falaremos sobre as tendências do mundo Java. Talvez isso o ajude a analisar sua carreira, aprender uma nova tecnologia ou elaborar um plano de desenvolvimento para o próximo ano. Tendências Java em 2022: JDK 18 e 19, Project Loom e Data mesh - 1O especialista em linguagem Java e palestrante Andrey Rodionov, bem como o arquiteto de soluções da EPAM e chefe do comitê do programa Devoxx Ucrânia, Oleg Tsal-Tsalko, falaram sobre o que espera o Java em 2022 e no futuro próximo.

Quais são as perspectivas para Java em 2022?

Tendências Java em 2022: JDK 18 e 19, Project Loom e Data mesh - 2Este ano esperamos o lançamento das próximas duas versões: JDK 18 (em março) e JDK 19 (em setembro). Potencialmente interessante para a maioria dos desenvolvedores Java no JDK 18 pode ser:
  • Servidor Web Simples integrado, sem suporte para contêiner de servlet, que pode ser usado para prototipagem e testes rápidos, semelhante a mini servidores Web semelhantes em Python, Ruby, PHP.
  • A correspondência de padrões continua a melhorar.
Quanto ao JDK 19, já existe um Early-Access Build, mas ainda não há uma lista oficial do que está previsto para ser incluído nele. Eu gostaria de acreditar que o JDK 19 incluirá pelo menos o primeiro protótipo estável do Project Loom, para o qual surgiram recentemente especificações preliminares e cuja versão mais recente é baseada no JDK 19. Falaremos sobre o Project Loom com mais detalhes abaixo.

Para quais áreas o Java continua sendo a única solução e onde é preferível?

Andrei Rodionov:

Felizmente, não podemos dizer que não há alternativa ao Java para nenhuma das áreas, mas podemos falar do Java como uma espécie de meio-termo para o desenvolvimento de aplicações corporativas, backends e microsserviços. Também vale a pena notar o número crescente de diferentes distribuições JDK de diferentes fornecedores (exceto Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (fundada por pessoas do Oracle Development Center em São Petersburgo) e outros. O conjunto completo de distribuições está disponível aqui . Tendências Java em 2022: JDK 18 e 19, Project Loom e Data mesh - 3Sempre há alternativas, mas o Java encontra sua maior utilização no back-end no desenvolvimento empresarial. A maioria das grandes empresas escolhe Java para seus sistemas grandes e complexos. Os motivos são os mesmos: a quantidade de desenvolvedores e expertise no mercado, um enorme ecossistema e uma poderosa plataforma JVM.

Quais são as perspectivas para outras linguagens jvm, em particular Kotlin, em comparação com Java?

Andrei Rodionov:

Para entender quais linguagens JVM são populares, basta abrir a documentação do Spring, Micronaut, Vert.x e ver em quais linguagens os exemplos de código são dados - Java e Kotlin serão comuns. Não se pode dizer que há uma transição massiva de projetos para Kotlin, mas sua popularidade para backend continua crescendo e muitos frameworks estão tentando incluí-lo em seu ecossistema. Quanto ao Scala, novas versões estão sendo lançadas e ele é usado ativamente para ML, processamento de dados e onde o paradigma de programação funcional é mais conveniente.

Oleg Tsal-Tsalko:

Outras linguagens JVM são bastante atrativas e hoje em dia é bastante normal que um projeto utilize diversas linguagens de programação. Parece-me que as razões pelas quais as novas linguagens JVM não podem substituir o Java são as seguintes:
  • Eles não são tão legais a ponto de todo mundo simplesmente pegá-los e mudar para eles.
  • Eles são usados ​​no mesmo segmento que Java.
  • Java aos poucos tira o melhor de outras linguagens e se torna melhor.

Haverá uma queda na qualidade do Java devido a intervalos de lançamento mais curtos?

Oleg Tsal-Tsalko:

Eu acho que não. Pelo menos agora posso identificar coisas mais positivas em lançamentos frequentes. Vemos que novos recursos interessantes aparecem com muito mais frequência. Agora você não precisa esperar 5 anos para que algo novo apareça no idioma. Claro, agora você não deve esperar lançamentos tão grandiosos como o Java 8, porque os recursos agora aparecem em pequenas iterações.

Existem recursos nas novas versões do Java que são especialmente importantes para os desenvolvedores?

Oleg Tsal-Tsalko:

Versões recentes do Java introduziram vários recursos interessantes, como correspondência de padrões, classes seladas e registros. Eu recomendaria examinar suas capacidades. Claro, os recursos mais sérios e esperados estão planejados dentro do Projeto Loom e do Projeto Valhalla, mas acho que os recursos dentro desses projetos também serão lançados gradualmente.

Estrutura Spring: continuará a expandir seu ecossistema para atender às diversas necessidades?

Andrei Rodionov:

Quanto ao Spring Framework, seu desenvolvimento se concentrou no suporte a vários recursos do Spring Cloud e na capacidade de compilar o Spring Boot em binários nativos - o projeto Spring Native, que está planejado para fazer parte do Spring Core no futuro. Nesse aspecto, o Spring ficou atrás do Micronaut e do Quarkus devido ao uso ativo de reflexão e geração dinâmica de código. Em relação ao Spring Framework 6, aconselho você a assistir o relatório Spring 6 and Beyond What's new in Spring Framework 6? da conferência Joker (de Oleg Dokuka e Alexey Nesterov). Os principais são a transição para o JDK 17, o abandono da configuração XML e do Autowire por meio de setters, o desenvolvimento do suporte Kotlin e o projeto Spring Fu.

Oleg Tsal-Tsalko:

O Spring, como o Java FW mais popular da atualidade, não quer abrir mão do palm. Tenho certeza de que a equipe de desenvolvimento se esforçará ao máximo no desenvolvimento do Spring. A primavera preenche cada vez mais nichos. Por exemplo, Spring fez muito na área de Fluxos Reativos/Programação Reativa com seu Projeto Reactor. Agora eles estão promovendo o protocolo RSoket, que também parece promissor.

Conte-nos sobre o projeto Loom: para que serve, que problemas resolve?

Andrei Rodionov:

O Projeto Loom é provavelmente a inovação mais interessante, que pode se tornar uma nova mudança tectônica para toda a plataforma JVM e todas as linguagens no topo da JVM. O Project Loom pode não afetar tanto os desenvolvedores comuns, mas certamente afetará todo o ecossistema, bibliotecas, estruturas e outras linguagens JVM que usam multithreading. O Projeto Loom introduz uma nova abstração de threads - threads virtuais (análogas às corrotinas). Se anteriormente um encadeamento Java estava diretamente vinculado a um encadeamento do sistema operacional (SO), e a criação de um novo encadeamento em Java levou à criação de um novo encadeamento do sistema operacional, então, com encadeamentos virtuais, esse relacionamento um-para-um é quebrado. Ao criar um novo thread virtual, um novo thread do sistema operacional não será criado e um dos chamados threads de transporte (algum tipo de análogo de um pool de threads do sistema operacional) será reutilizado para realizar cálculos diretos. Assim, vários threads virtuais podem ser executados em um thread do sistema operacional. Para tarefas de computação, este modelo de threads virtuais não oferece nenhuma vantagem, e sim diminui a velocidade dos cálculos, mas para operações de bloqueio, como processamento de solicitações HTTP, espera por respostas do banco de dados ou de microsserviços, este modelo será um vantagem significativa. O fato é que, com o modelo de threading atual, o bloqueio/espera em um thread Java levava a threads de sistema operacional ociosos - isso era um desperdício de recursos e exigia a criação de mais threads de sistema operacional. No modelo de encadeamento virtual, o bloqueio/espera em um encadeamento virtual fará com que o encadeamento transportador sobre o qual o encadeamento virtual estava sendo executado seja liberado e outro encadeamento virtual seja executado nele. Dessa forma, os threads do sistema operacional serão usados ​​de forma mais otimizada e menos deles serão necessários para executar tarefas semelhantes. Conseqüentemente, os fabricantes de bibliotecas, frameworks e linguagens JVM terão que adaptar seu código para threads virtuais. Portanto, uma grande reescrita está chegando para eles :) Além do modelo de thread virtual, também está prevista a introdução de uma nova API para simplificar a orquestração de threads - a chamada simultaneidade estruturada. Agora, por exemplo, a simultaneidade estruturada é usada ativamente em corrotinas Kotlin e Scala ZIO. Infelizmente, a versão do JDK e até mesmo o ano de lançamento do Project Loom ainda são desconhecidos. Quando questionado sobre a data de lançamento, o arquiteto-chefe da plataforma Java, Brian Goetz, responde com uma frase filosófica: “Estará pronto, quando estiver pronto”. Portanto, estamos aguardando e podemos testar compilações experimentais do Projeto Loom .

Oleg Tsal-Tsalko:

Loom é um grande projeto guarda-chuva, dentro do qual a equipe OpenJDK e Oracle está trabalhando em inovações de simultaneidade em Java e JVM: threads virtuais, fibras e continuações. Muito provavelmente, a liberação desses recursos será gradual. No momento, existem apenas compilações de acesso antecipado para suporte a threads virtuais. Falando especificamente sobre threads virtuais, seu principal objetivo é simplificar o modelo de desenvolvimento multithread em Java usando milhões de threads leves com a mesma semântica dos threads regulares da plataforma. Nos bastidores, esses threads serão gerenciados dentro do ForkJoinPool e reutilizados pelos threads da plataforma.

Quais são as previsões para o desenvolvimento do Java no mundo das tendências globais - microsserviços, arquitetura em nuvem, blockchain, IA?

Andrei Rodionov:

Se falamos de tendências globais, elas não mudaram muito. Como antes, a principal tendência continua sendo o Kubernetes e a infraestrutura ao seu redor na forma de Service mesh . A malha de dados também está ganhando popularidade como uma espécie de abstração para gerenciar fontes e armazenamentos de dados distribuídos.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION