Latest / Entre Chaves / #284 Java 26: ganhos reais de performance chegaram
Transcript
- 0:00E está começando mais um entre chaves do seu pochet de
- 0:02desenvolvimento de software. E hoje pra falar sobre um
- 0:05assunto que há quem ame e há quem odeie, mas não tem como
- 0:09fugir dele. É o Java, novo Java, que chegou
- 0:12pra gente com uma release não estável, né não?
- 0:16LTS que promete durar pouco tempo, mas traz muitas
- 0:20novidades. Pra poder falar um pouquinho
- 0:22sobre esse tema, estou com meu parceiro de bancada, fala Dudu,
- 0:24e aí, cara? Tudo bom, beleza?
- 0:26Tudo tranquilo, graças a Deus. E pra poder trazer um pouquinho
- 0:29da experiência pro tema, 2 convidados de peso aqui.
- 0:32E aí, Breno, como é que você tá, cara?
- 0:34Tô bem demais, graças a Deus. E por aí seja.
- 0:36Bem-vindo e Ana Luiza? Oi, gente.
- 0:40Bom, sejam muito bem vindos, pessoal.
- 0:41E eu tô curioso pra poder saber sobre o que que veio pra esse
- 0:44novo Java e se vai mudar a minha opinião.
- 0:46O que eu preciso ser honesto aqui eu sou um dos que odeiam,
- 0:49viu? E você, Dudu, você ama, cara?
- 0:52Ou não eu não amo mais? Também não AB.
- 0:53Não é toda linguagem cara, toda linguagem, você Sharp node, cada
- 0:58uma tem o seu nicho, cada uma tem suas coisas.
- 1:00Todas elas têm pontos de melhoria, né?
- 1:02E é isso que a gente vai conversar um pouco aqui.
- 1:04O que que eu achava 26 traços de melhorias para.
- 1:07Para o ecossistema dele? Concordo plenamente, Dudu, mas
- 1:09só para poder deixar ao meu lado, claro aqui o que eu odeio
- 1:11não é nem o Java em si, é mais o ambiente ao redor dele.
- 1:14Entendi. Eu já passei tanta dor de
- 1:16cabeça, cara, que é bom. Hoje conhar tudo é mais fácil.
- 1:19Exatamente. Configuração pra gente deixa.
- 1:21Ela ter ódio do é do Java para lá a gente só pede para ela
- 1:24fazer. Aí está aí um teste que eu vou
- 1:25ter que fazer. Depois vou perguntar para Iara.
- 1:27Ela tem uma linguagem de preferência, né?
- 1:29Abstratamente? Mas chega de falar sobre as
- 1:32outras linguagens, aí eu falo aqui sobre o Java, então só pra
- 1:34poder explicar o que que eu falei aqui no início, né?
- 1:36O Java, ele tem é emitido uma nova cadência de atualizações, e
- 1:41desde o Java 21, né? E o 25 se permaneceram como as
- 1:47as versões estáveis, a qual recebem updates, especialmente
- 1:50de segurança, né, em um longo período de tempo.
- 1:53E essas versões intermediárias e essas versões novas, né?
- 1:57O Java 26, que é o que a gente vai falar aqui.
- 2:00Elas não vieram pra durar, não é isso?
- 2:02Me corrija se eu estiver errado. E aí, Breno, como que é?
- 2:06Porque que o Java tá lançando essas versões agora de uma com
- 2:09uma cadência muito maior, mas com um suporte muito menor.
- 2:12Qual que é o objetivo deles fazendo isso?
- 2:14O propósito em lançar essas versões mais curtas é justamente
- 2:19disponibilizar um laboratório ali pra gente já começar de
- 2:22fato, testar, então as versões LTS são muito mais seguras e já.
- 2:29Tem muito mais documentação, as pessoas são muito mais seguras
- 2:31em usar porque elas já foram pré disponibilizadas nas outras, nas
- 2:35outras pré views ali, né? Interessante, né?
- 2:38Tipo assim, as versões intermediárias, digamos assim,
- 2:41vamos chamar assim. Elas trazem já essas features
- 2:43novas, elas estão em, digamos, modo pré view, né tipo?
- 2:47Mas me fica, me fica o pensamento assim, será que é?
- 2:50Vale a pena, né? Eu arriscar usar essas features
- 2:52preview, por assim dizer, em produção?
- 2:55E sobre essas features, preview, né?
- 2:57Que que que tem de novo nessa daí?
- 2:59Vamos vamos primeiro começar aí, né?
- 3:00O Java 26 chegou trazendo o quê? Foi só uma melhoria de
- 3:04performancezinho, uma correçãozinha de bug ali que
- 3:06eles tinham esquecido. Ou tem realmente alguma coisa
- 3:08nova? Não tem coisas novas, sim.
- 3:10A gente tem versões ali de releaser, já na, no, no status
- 3:14de final, né? É ali é onde?
- 3:17Trazem coisas que realmente vão vão ser implementadas, essas
- 3:21versões finais que vão ser muito interessantes, tanto em questão
- 3:24de performance e de segurança também.
- 3:27E além disso, são são essas melhorias que ela na verdade não
- 3:31vai precisar uma mudança de código, ela já vai ser implicada
- 3:34já na JVM de vez. E também temos versões também
- 3:38que estão no preview, né? Que estão ali, é avançando,
- 3:42matutando é amadurecendo ali de fato e também temos uma.
- 3:47Em versão de incubadora na 11ª versão, que é a vectora PI, que
- 3:51já é uma assim, eles estão apostando bastante, né?
- 3:55Por estar nessa versão de de 11ª já, mas ainda está em incubação
- 4:01ali, aguardando inclusive o projeto.
- 4:04Pra rala, né que tá? Ali, caramba.
- 4:06Então tipo assim, tá, estamos na Java 26.
- 4:08Ela tá desde o Java 17, não 15, né?
- 4:11Tipo assim. Tá ali, matatano.
- 4:12É mesmo toda toda vez tem evoluções dessa API aí.
- 4:16Nunca ela chega Maduro o suficiente Pra Ela se tornar
- 4:19final, né? Ela, a comunidade do Java tem
- 4:22explorado muito isso, né? De de de dar essa essas versões
- 4:26iniciais preview pro pessoal mexer e propor melhorias, até
- 4:30até chegar muito melhor do que as vezes botar uma versão final,
- 4:32depois versão final final. Final final, agora vai?
- 4:37Final agora. Vai é essa daqui?
- 4:39Ponto 2, interessante. Eu Acredito também que além da
- 4:42gente construir coisas com mais qualidade, de uma forma talvez
- 4:46não direta, tem uma vantagem comercial também de deixar a
- 4:49galera um pouco mais calma e entender que o Java tá evoluindo
- 4:52mesmo, que não tá ficando pra trás, que tem coisa nova vindo,
- 4:55coisa relacionada a IAC, como foi o caso que a Ana trouxe.
- 4:58Então são atualizações necessárias e.
- 5:02Acredito muito bem pensadas ali. Agora, sobre essas versões no
- 5:07LTS, vocês é executam elas em produção ou vocês partilham de
- 5:12um laboratório para teste antes alguma coisa nesse sentido?
- 5:16Né? Aí é um assunto polêmico, né?
- 5:18É, eu tenho uma opinião um pouco enviesada, mas eu nunca vi
- 5:24acontecer, sabe? Inclusive, é um direcionamento
- 5:26da comunidade que essas versões não LTS, elas realmente.
- 5:31Não deveriam ser executadas em produção porque elas vão ter
- 5:34vulnerabilidades, elas vão ter problemas.
- 5:36E o objetivo é justamente testar e corrigir esses problemas para
- 5:40as versões LTS, que vão ter um suporte muito mais duradouro
- 5:44ali, né? Então a indicação da comunidade
- 5:47já é não usar. E Eu Acredito que,
- 5:49comercialmente falando, não seja muito negócio também implementar
- 5:5411, versão que tem já. Um prazo contado pro fim do.
- 5:58Suporte, né? Entendi.
- 5:59Então, mas essa ideia é experimentar essas novas
- 6:01funcionalidades e tudo. Como é que a gente consegue usar
- 6:05essas funcionalidades novas? Mas Ah, vou falar pro cliente
- 6:09aqui, olha, vou, vou, vou precisar de 1 mês aqui pra
- 6:12migrar pro Java 26, mas a gente nunca vai botar de produção, não
- 6:15tá? Vai ficar só a minha, a gente
- 6:16deve, né? Tipo assim, eu acho que não é,
- 6:17não é bem por aí, o caminho também, né?
- 6:20Não é bem isso que o pessoal quer dizer, como não usar e tudo
- 6:23exatamente. Acredito que está muito mais
- 6:25voltado para pocks e experimentos mesmo ali, né não?
- 6:30Sistemas que já estão rodando de fato em produção e precisam ser
- 6:33migrados. E também eu acho que focar
- 6:36também nas dips que estão no status de de final alienismo,
- 6:40né? Que são mudanças que realmente
- 6:43em uma nova versão, se alguém quiser construir um novo sistema
- 6:46ou migrar para o próximo Java LTS, eles vão ter que.
- 6:50É arcar com com essas mudanças, né?
- 6:52Então é um preparo mesmo. Entendi.
- 6:54É uma experimentação que você pode fazer.
- 6:56Vai ficar esperando lá lá do Java 21.
- 6:58Agora chegou 25. Vão migrar tudo aí.
- 7:01Vamos ver o que vai acontecer, né?
- 7:02Mitigar problemas, né? Testando, experimentando em cima
- 7:06dessas revoluções, isso é legal? Beleza, mas AA discussão aqui
- 7:09sobre utilizar ou não utilizar. Ela já está um pouco abstrata,
- 7:12né? Vamos falar o seguinte, o que?
- 7:13Que veio de fato? De coisa nova no Java 26.
- 7:17Eu, pelo menos da parte da segurança, gosto muito de falar
- 7:20sobre redes. Dei uma olhadinha ali que o
- 7:22jovem 26 e ele trouxe uma implementação nativa para OHTP
- 7:26client dele, que é o HTTP3, né? Que agora ele não roda mais em
- 7:30cima do nosso tradicionalíssimo TCP, mas sim sobre um método de
- 7:38handshake mais rápido via UDP, não é isso?
- 7:41Aí fiquei na dúvida assim, e aí dá para pôr em produção?
- 7:44Todos os servidores já estão autorizados, estão aceitando
- 7:47essa comunicação. O ganho ele é real ou é só 11
- 7:52feature com nome bonito né, que é Oo quick, né?
- 7:55Eu acho que que o ganho é real, sim.
- 7:58É uma deep muito interessante, porque realmente antes, né?
- 8:01No, no, na verdade, No No protocolo HTTP2, a gente usa
- 8:06OTCP, que é aquela entrega ali contínua.
- 8:08É como se fosse uma via de mão única.
- 8:10Se 11 carro, vamos supor assim, trava, todos os outros atrasos
- 8:14ficam ali esperando até que seja.
- 8:15Resolvida aí, tem mecanismos de garantia para entrega, né, os
- 8:18mecanismos de fallback do TCP. Né?
- 8:20Se perder um pacotinho, ele fica ali esperando.
- 8:22Então redes que são instáveis sofrem muito com esse, com esse
- 8:26protocolo, já o HTTP3 já é aquilo que é, já formam um
- 8:31paralelismo, né? Então se uma entrega ali falha,
- 8:34as outras vias que não tem a ver não são prejudicadas, sabe?
- 8:38E eu acho que tem um ganho sim, até porque tem 11 fallback ali.
- 8:42Se um servidor não tiver preparado para o HTTP3, eles já
- 8:46fazem esse downgrade, né? Ele já conversa com o automático
- 8:48e isso com o HTTP2 de forma automática.
- 8:52Entendi. Então se você ligar, porque eu
- 8:53imagino que ele não colocou isso aí ligado por padrão, né?
- 8:56Você tem que fazer o optim pra usar OHTP 3 dentro do j 26, né?
- 9:01Então ligar lá e você vai comunicar com algum servidor que
- 9:05não suporta. Seu código não precisa ter nada
- 9:07disso, ele já resolve e volta pro pro 2.
- 9:10Agora Oo sobre. Os ganhos desse do modelo quick,
- 9:13né? E aí, Oo quick não é o igual,
- 9:15você escreve em inglês, né? Ele não tem OK no final, né?
- 9:18Que é. Vocês identificaram algum ganho
- 9:21real de velocidade, performance em algum cenário ou até então
- 9:26esse ganho? Ele é muito teórico.
- 9:28E eu não cheguei a testar, mas, em teoria, o ganho precisa
- 9:34existir. É o fato de um arquivo não
- 9:37precisar esperar o outro de fato chegar para ser entregue.
- 9:40Faz com que a gente pense assim em sistemas básicos, sei lá, vou
- 9:43renderizar uma tela e não chegou é o arquivo do do um ícone
- 9:50aleatório ali, né? Eu não preciso parar todo o meu
- 9:52processamento esperando a chegada desse arquivo.
- 9:54Então acredito que em redes com baixa latência é e sistemas mais
- 9:59simples. Talvez o ganho não seja tão
- 10:01extraordinário, mas Eu Acredito que.
- 10:05Haja sim, haja ganhe e eu acho que vale a pena implementar em.
- 10:07Produção sim, faz sentido é qual que foi a outra feature que
- 10:11chegou aqui agora no Java 26 que vocês testaram ela e gostaram do
- 10:17que viram? O aprimoramento do do GC é, ele
- 10:22tem sido feito nas versões anteriores, inclusive teve
- 10:25aprimoramento no 25, teve aprimoramento de novo no 26, e
- 10:29esse Eu Acredito que vai ter grande vantagem pros sistemas
- 10:31que tem alta escalabilidade, né? Pela inclusão de um dos gcs lá e
- 10:36um outro que eu aposto bastante é na redução do code start.
- 10:41Esse Eu Acredito que eu não cheguei a deploiar nada, mas Eu
- 10:44Acredito que vai ter ganho financeiro de fato para as
- 10:47empresas que rodam principalmente em nuvem.
- 10:50E esse sim o code start reduziu bastante e a gente já consegue
- 10:54perceber a diferença no start da aplicação.
- 10:57Ele sempre foi um dos grandes gargalos, né?
- 10:59Do do Java era o cold start lá da JVM para conseguir pelo menos
- 11:04alguns anos atrás, da última vez que eu estava mexendo com
- 11:08produtos Java, né? Então.
- 11:09Ainda ainda escrevi o código na picareta e no martelo.
- 11:12Assim, né? Um pouquinho mais antigo isso
- 11:13aí. Não tinha Java ainda não, né?
- 11:14Não sou não sou tão antigo assim não.
- 11:16Eu peguei o Java 1.4 cara no Java, 1.4 entregou a idade.
- 11:19Então, já não é tanto no picareta, é bem melhor.
- 11:21Do que o sem dúvida. Agora, sobre esse GC que você
- 11:25falou, eu vi que em em sistemas que.
- 11:27Que tem uma carga, um tromput de carga muito grande.
- 11:29Eles chegaram a ganhar até 15% de performance, né?
- 11:33Sem. Mexer em uma linha de código?
- 11:34Né? Exatamente assim.
- 11:36Isso é meio. AJVM já automaticamente já faz
- 11:39essa essa otimização, né? É a ideia dessa GC.
- 11:44É muito interessante porque a gente eles implementaram uma
- 11:48nova card table, né? Ali, que é a área do do hippie,
- 11:52ali de memória, então. De aplicação e de otimização,
- 11:55trabalham de forma isolada. Antes eles trabalhavam numa
- 11:59mesma área, podendo atrapalhar ali a performance do sistema.
- 12:02Agora, com essa separação de funções, vamos supor assim, a
- 12:06gente pode ter esse ganho dependendo ali da do da carga do
- 12:10sistema mesmo, de até 15%. Muito interessante.
- 12:13Eu tava lendo uma matéria que tava é justamente falando sobre
- 12:18a implementação do ZGC, né, que é?
- 12:22É um perfil específico do GC, do do GC, que é pra essas
- 12:26aplicações, que tem muito volume de dados e que não podem parar
- 12:28de forma nenhuma. E aí, de acordo com os
- 12:32experimentos laboratoriais, ali existem cenários onde a limpeza
- 12:36do GC é feita em menos de meio nano segundo, que isso?
- 12:40Nossa, que isso, cara, absurdamente rápido, sabe?
- 12:43Mas o lance eu acho que é justamente esse, né?
- 12:45Já carregar em cast esses objetos é pra diminuição.
- 12:52Do cold start, então já em. Tempo de build de negócios
- 12:54gerais, esse Cash. Exatamente.
- 12:56Então o primeiro deploy ele tende a ser um pouco mais lento,
- 13:00porque ele tá questiando justamente as classes é e os
- 13:03objetos. E a partir do segundo deploy ele
- 13:05já não busca mais em memória, ele já usa o Cash pra fazer OOO
- 13:11start da aplicação. Então assim vale.
- 13:12Vale a pena, né? Na build você você tem essa
- 13:14criação desse cast pra economizar.
- 13:16Depois vale. A pena, cara, porque além.
- 13:19Da performance muito aprimorada, ele tem um impacto direto no
- 13:23custo das aplicações em nuvem, né?
- 13:26Então você de fato economiza dinheiro com esse com esse start
- 13:30mais rápido. Né?
- 13:31Faz sentido, né? O cold start é dinheiro que a
- 13:33gente tá falando, independente de qual que seja.
- 13:35Oo motivo de você tá usando, você tá usando o cold, você tá
- 13:38salvando dinheiro. Exatamente direto ou
- 13:39indiretamente. E também essa essa DIP que entra
- 13:43com esse a questão do cold start, ela antes não englobava
- 13:47essa. Essa essa memória em Cash, assim
- 13:50não englobava OZGC, que é um coletor que trabalha de forma
- 13:55com a latência super baixa e é muito utilizado em sistemas
- 13:57financeiros e etcetera. Isso só pegava integrava os os
- 14:03coletores mais comuns do jabo, porque OOZGC ele trabalha com
- 14:07ponteiros coloridos, então é muito mais complicado
- 14:10contabilizar ali o Cash, a locação de memória.
- 14:12Então com essa DIP ele já fez de uma maneira pra é.
- 14:16Englobar esses 2 tipos de de, de coletor, coletor, isso,
- 14:22desculpa. E essa esse foi o aprimoramento
- 14:26de fato do 26, né? Porque a melhoria do do G1, né,
- 14:30que é um dos g 6. Ela já veio sendo trabalhada
- 14:33desde o Java 56617 ou 21, salvo engano, mas no 25 já teve uma
- 14:38implementação. É final mesmo?
- 14:41É. Pra melhoria do G1 e agora com o
- 14:4426, começando a melhoria do ZGC, que é pra esses sistemas mais
- 14:49mais complexos, né? Que dependem de uma latência
- 14:51mínima pra funcionar e. Assim, essas são features que já
- 14:56estão bem consolidadas nessa entrega do já 26.
- 14:58Nem essas previews, né? É, ao que tudo indica, devem
- 15:01ficar, né? Pelo menos pelo que vocês estão
- 15:03falando. Parece ter sido bem estruturada.
- 15:05Amadurecer um por um longo tempo?
- 15:08Mas existem ainda outras features que chegam para o já 26
- 15:11que não estão tão estruturadas assim, que ainda estão em um
- 15:14período de testagem ou tudo que eles liberaram já foi muito bem
- 15:18consolidado e testado por. Eles não tem coisa, tem ali a
- 15:22parte do. Das variáveis finais, né, Ana?
- 15:26Variáveis finais é bektora, PI também, que tá ali.
- 15:29Incubadora, né? Sim, incubadora ainda, depois
- 15:33sim. Depois ela tem que virar uma
- 15:34prévia ali, tem que amadurecer bastante.
- 15:36Ainda tem a fase incubadora, depois tem a fase prévia, depois
- 15:40tem a fase final. Isso exato, entendi.
- 15:42Ela tem que passar por todos esses caminhos.
- 15:44A tela está numa versão LTS mesmo do Java.
- 15:48E aí essa parte das variáveis finais vem justamente como um
- 15:51upgrade de segurança, né? É, porém, ele traz um problema
- 15:55que é quebrar as aplicações do ambiente de produção.
- 15:57Nada demais. Né?
- 15:58Nada demais, é não. É nem porque ele quebra.
- 16:00Eu acho que o que eu vi lá é porque tem aquelas ferramentas,
- 16:03né? Que fazem introspecção de código
- 16:06e alteram já direto no, no, no, no byte code, lá essas
- 16:10variáveis. Finais, ou seja.
- 16:14Era uma, digamos assim, né? Era parece muito uma grande
- 16:17gambiarra que era sido feita antes.
- 16:18E agora a galera falou, gente, vamos parar com essa.
- 16:20Gambiarra é só quando o brasileiro faça, entendeu?
- 16:23Quando lá fora faz. É uma remediação.
- 16:24Chique? Exatamente, exatamente.
- 16:26E é muito usado, né? Principalmente no meu caso,
- 16:29mesmo a minha experiência individual.
- 16:31Eu uso muito interte, unitário, por exemplo.
- 16:33Sim. Exatamente, é.
- 16:35Brincadeiras à parte, é, é interessante algumas coisas
- 16:38dessas exatamente para o teste unitário.
- 16:39Para algumas coisas, você tem que fazer essa introspecção
- 16:41assim, às vezes trabalhar. É, eu tô tentando até lembrar
- 16:45aqui em alguns casos que eu já precisei mexer.
- 16:47Hoje eu já precisei usar muito introspecção, não consegui usar
- 16:50mesmo os objetos, as coisas todas.
- 16:51E eu tinha que usar essas, essas, essas metaclasses, assim,
- 16:55nesses metaobjetos, pra poder trabalhar em cima, né?
- 16:58Então essa possibilidade que a gente tinha às vezes até de
- 17:00forma silenciosa, né, porque a sapei, isso que eu lembro que eu
- 17:03trabalhava há mais tempo, eu não tinha tanta certeza que você
- 17:06tava mexendo numa propriedade que era final ou que não era não
- 17:09dependente de como tivesse configurado lá.
- 17:10Você fazia um set lá e você trocava o valor.
- 17:13E era isso aí, né? Era também bem bem silencioso e
- 17:16ainda. Tem né?
- 17:17Muita biblioteca que usa Oo reflector, né?
- 17:19Pra pra substituir o valor da variável final.
- 17:22Aí é e aí com essa atualização do 26 vai começar a ser um
- 17:27aviso, né? Vai ter um ornizinho ali, mas já
- 17:30preparando a galera pro pra grande mudança do 29.
- 17:33E aí, o que que a gente tem de vantagem, além da segurança que
- 17:36outras bibliotecas não vão conseguir mais?
- 17:39É trocar o valor, né? Do das variáveis finais, existe
- 17:43aí 111 possibilidade de melhoria de performance também, já que
- 17:48essa variável não vai ser mais aquela de fato, vai ser mutável,
- 17:51né? Eu tenho certeza que esse valor
- 17:53não é mais trocado. A gente consegue carregar o
- 17:55valor dela em cast também. E.
- 17:56Com previsibilidade garantida, né?
- 17:58E eu acho que essa deep ela está na versão final também, já vai
- 18:02começar a alertar as pessoas, né?
- 18:04E também ela conversa com outras deep que já estão no final
- 18:07porque. Fala é realmente de como um
- 18:11valor fica na memória. Um exemplo, a dipp do do G1 GC
- 18:16ela, ela conversa ali. Agora a gente tem 2 casas de
- 18:19table que fala com com a hippie ali, sabe?
- 18:21Temos também a questão do do carregamento.
- 18:25Preguiçoso, né? Do laze.
- 18:27Laze constantes, né? Exatamente.
- 18:30Que são as constantes que vão ser carregadas somente quando
- 18:33elas necessariamente forem usadas, né?
- 18:35Então as vezes se instanciou uma classe ali.
- 18:37Tem constante lá dentro, mas não necessariamente você está usando
- 18:40para aquele fluxo, então ela não vai ser carregada enquanto não
- 18:44for de fato necessário. Exato.
- 18:46Também é um aprimoramento de performance.
- 18:47São os antigos staple values, né?
- 18:49Que eles simplificaram APIE, renomearam, né?
- 18:51Inclusive, eu gostei muito mais do nome novo, né?
- 18:53Acho que faz faz muito mais sentido.
- 18:55É muito mais identificável, né? Lasi Constant stable, velho.
- 18:59Eu acho mais honesto. Também Eu Acredito que a grande
- 19:04promessa. Diante do cenário atual, seja
- 19:07justamente esses cálculos vetoriais, né?
- 19:09Eu tava dando uma pesquisada ali.
- 19:11Se o quanto o uso do Java talvez tenha caído em detrimento a
- 19:16inteligência artificial, né? E aí, aparentemente, cara, tem
- 19:21disputado algum mínimo espaço com Python, né?
- 19:24Mas, embora tenham missões e objetivos completamente
- 19:27diferentes, mas o Java ainda é uma linguagem extremamente
- 19:30cotada junto com o uso de a. E agora, com esse aprimoramento
- 19:35de cálculo vetorial, a tendência é que permaneça assim por muito
- 19:37tempo, né? Acredito eu, ao contrário do
- 19:39Dantas, eu sou um amante do Java, então, pelo visto.
- 19:42Vocês estão em minoria aqui no episódio, viu do?
- 19:45Não, por enquanto tá 11. Eu tô.
- 19:47Eu sou neutro, né? Não sei a pessoa da Ana, né?
- 19:50Mas enfim. A convidada que veio falar sobre
- 19:53o Java? Né?
- 19:54Realmente é uma série. Não sabemos, não sabemos.
- 19:57Sou amante do Java também, agora você está em minoria.
- 20:01Eu vou falar para o meu Cláudio que agora eu gostaria de começar
- 20:04a trabalhar em Java para ver como é que ele vai ser a ideia.
- 20:06Então com essa com essa questão dos cálculos vetoriais, vai
- 20:09poder aproximar mais o Java de de realmente ter uma conexão
- 20:12maior com essa com com o desenvolvimento agente com
- 20:16alguma coisa assim de de você desenvolver ferramentas, agente
- 20:18que em cima do Java, tipo assim poder integrar o Java com com
- 20:22com modelos de AA ideia. É, é ir um pouco por esse
- 20:26caminho. É porque sejamos honestos assim,
- 20:27se eu for desenvolver um código novo agora na minha EAE não
- 20:32falar explicitamente o que eu quero fazer em Java, ela não vai
- 20:36escolher fazer em Java, né? Ela vai escolher fazer em
- 20:38Python, em node. É isso, né?
- 20:43É o. Cortado do patinete é, tá como?
- 20:45Muito, muito raramente ela vai me sugerir uma terceira
- 20:48linguagem. Talvez até um gol, né?
- 20:50Algo mais puxado pra uma linguagem de scripts, por assim
- 20:54dizer. Do que pra uma linguagem tão
- 20:56estruturada quanto o Java. Então assim, o que que o que que
- 21:00o Java é? Pretende fazer ou já está
- 21:04fazendo essas releases pra poder trazer uma competição genuína
- 21:10neste cenário de utilização? Que sejamos honestos, não dá
- 21:13mais pra desenvolver sem sem inteligência artificial, né?
- 21:16Isso já, essa discussão já acabou, já ficou pra trás, todo
- 21:19mundo já aceitou isso. Então assim, o que que é?
- 21:22Esse essa mudança vetorial que o Java propõe e se isso é
- 21:26competitivo de fato ou não, para ganhar espaço na decisão dos
- 21:31modelos de inteligência artificiais como linguagem
- 21:33escolhida para desenvolver projetos.
- 21:35Bom, aí eu acho que No No seu próprio discurso, a gente já tem
- 21:40alguns pontos importantes que vão estar muito ligados à
- 21:43performance, né? Então, esses cálculos vetoriais,
- 21:47o objetivo é justamente melhorar a capacidade de processamento e
- 21:51performance. Então, quando a gente está
- 21:53falando de processamento de bilhares de dados ou machine
- 21:57lanners e tudo mais, acredito. Que esse é o?
- 22:00Ponto chave. E por isso que OA comunidade tem
- 22:03focado tanto em aprimoramento de performance, porque as vantagens
- 22:07que nós já temos hoje são segurança, confiabilidade, né?
- 22:11Do Java, que não dá para negar, então tem muito sistema ali que
- 22:15precisa dessa retrocompatibilidade e tudo
- 22:18mais, então? Quando a gente aprimora
- 22:20justamente o calcanhar de Aquiles, que é o que estava
- 22:22faltando, que era performance, Eu Acredito que a gente consiga,
- 22:24sim. É ganhar uma boa parte desse
- 22:27mercado. É dentro do próprio projeto faw
- 22:29rala, né, que tem esse objetivo também, de modernizar bem a
- 22:33linguagem EE, trazer ela pra esse Mundo Novo de performance a
- 22:38todo custo, né? Escova no beach, né?
- 22:40Exatamente. Que é um pouco do que a gente
- 22:42tem visto, né? Já tem algumas algumas versões
- 22:46do Java. Que a gente nota melhorias
- 22:49pequenas em determinadas etapas ali, seja de processamento, seja
- 22:54de é diminuir um pouco a verbosidade do código.
- 22:58Então é, são atrativos que chamam um pouco mais a galera
- 23:03que tá entrando no mercado a usar mais a linguagem.
- 23:05Perder um pouco aquela, aquele estereótipo de Ah, a linguagem
- 23:08velha não serve pra isso, né? Perder.
- 23:10Só um pouco, né? Só?
- 23:11Só um pouco é. Então eu tenho notado essa
- 23:14preocupação. E eu tenho.
- 23:16Notado constantes melhorias, inclusive uma das outras dicas
- 23:19ali, que é usar ainda mais variáveis nativas em algumas
- 23:24funções, tipo um suíte, por exemplo.
- 23:26Então a cara. Num sistema corporativo que
- 23:30basicamente são vários cruds, talvez você não perceba uma
- 23:34melhoria tão grande, mas em processamento gigante de dados
- 23:38são pequenas melhorias que com um todo, trazem uma.
- 23:42Uma melhora de performance não é exatamente.
- 23:44São 5 MS que você ganha ali, mas nos bilhões de dados já são
- 23:48horas, né, no final das contas? Exatamente.
- 23:51Inclusive nós temos cases reais. Assim, é um dos clientes aqui
- 23:55que que a gente atua, é grande parte do legado é feito e é foi
- 24:01construído em Java 8. E aí para você subir um código
- 24:05desse para você startartar um código desse a performance em
- 24:09uma das requisições comparado com.
- 24:12Não, não chegamos ainda sobre nem o Java 25 a produção, mas
- 24:15comparando com o Java 21, por exemplo, a diferença é.
- 24:19Nossa senhora, Sério? Nossa, o senhor tá?
- 24:21Falando de sei lá, 8 minutos pra rodar a testa unitária de uma
- 24:26aplicação contra um minuto e meio 2 que isso?
- 24:28Nas versões mais novas de Java. 4 vezes mais rápido.
- 24:31Exatamente com melhorias absurdas e.
- 24:34Dentre essas experimentações vocês já fizeram?
- 24:36Bom, já 26, teve alguma dificuldade que vocês tiveram?
- 24:39Ah, peguei alguma coisa aqui que já era do 25 pro 26, esse aqui
- 24:42foi de graça, ou tentei do 21 pro 26?
- 24:45Teve alguma algum caso que vocês pegaram que talvez não tenha
- 24:49sido tão direto que precisou dar alguma escovadinha em alguma
- 24:53classe pra poder fazer essa migração?
- 24:55Se vocês chegaram a experimentar alguma coisa assim ou realmente
- 24:57tá boa essa essa chaveamento de JBM, cara.
- 25:01Para fins acadêmicos, eu cheguei a fazer um teste do 21 para o
- 25:0526. É era uma aplicação extremamente
- 25:08pequena, não tinha muita biblioteca, então foi bem
- 25:11tranquilo, ainda mais com o de anão teve nada que ficou
- 25:13totalmente deprecado e eu precisei fazer grandes
- 25:16alterações, não, mas das versões ali até o 17 Eu Acredito que vão
- 25:21ter problemas muito grandes, que foi a última migração que a
- 25:24gente fez. Comentamos até aqui no episódio
- 25:26do 25, foi a migração do 8 para o 21.
- 25:29Aí realmente nós tivemos muito problema, muito biblioteca que
- 25:31não existia mais automaticamente, função que
- 25:33deixou de existir. E aí a gente teve que repaturar
- 25:35código de fato, trocar plugin foi foi Deus nos acuda.
- 25:39Agora, das versões mais novas, é eu não, não senti e não entendi
- 25:44também nenhuma alteração do 26 que vai fazer quebrar 2125, por
- 25:48exemplo. É, e tem mais uma uma novidade
- 25:52dentro do Java que eu essa, pô, vou admitir aqui, tá?
- 25:56Achei muito interessante. Que foi a relação da
- 25:59concorrência estruturada, né? Que agora o Java, ele trouxe uma
- 26:03algo novo assim, um conceito, quase um conceito novo, né?
- 26:06Onde você consegue correlacionar execuções que não
- 26:09necessariamente estão correlacionados, mas que caso
- 26:11uma delas falhe, vai falhar as outras, né?
- 26:14Isso? E aí isso é uma nova forma
- 26:20genuína de se fazer um trabalho. Ou é mais do mesmo, só que com
- 26:24uma maquiagem por cima, assim realmente facilita ou não?
- 26:29Eu acho que sim. Essa é uma das dips que mais me
- 26:32chamou atenção. Assim, principalmente para
- 26:34sistemas concorrentes, que é o que mais tem hoje em dia, né?
- 26:39E a ideia dessa DIP é justamente com astróides virtuais também,
- 26:43que é uma coisa que o Java trouxe assim, excepcional.
- 26:47É antigamente o que que a gente fazia?
- 26:49Teria que fazer ali uma thread manual, variáveis voláteis,
- 26:54termina uma thread, aí a outra pode começar.
- 26:56E essa deep ela. Tira esse?
- 26:59Gargalo, porque ela transforma várias threads em um grupo, sabe
- 27:02exatamente como você citou, que elas não precisam ser do a
- 27:06mesma, do mesmo tipo. Tá ali fazendo a mesma
- 27:09requisição, vamos supor assim, mas se elas puderem se cancelar
- 27:12mutuamente, que uma podendo travar a outra.
- 27:15Já tira esse gargalo de sistema e evita 11 quebra ali mesmo,
- 27:20sabe? Mas trazendo um pouco disso, que
- 27:22o que o Dantas falou, no meu entendimento, é como se fosse um
- 27:26conceito de um grande tryquet pra atled virtuais.
- 27:29Então eu aninhei eles, qualquer um que quebrar, cara, vamos
- 27:33parar. Vamos desalocar a memória.
- 27:35Meu coração está um pouco mais tranquilo em relação ao Java
- 27:37depois do episódio de hoje, tá, Dudu?
- 27:39Mas agora eu tenho uma curiosidade.
- 27:41A gente falou que muito sobre. Features muito úteis, né?
- 27:46Que vão resolver os nossos problemas que vieram pra mudar o
- 27:49mundo, né? Virar o jogo em relação ao Java?
- 27:52Mas é aquela. Feature que se acha muito
- 27:54maneira, mas não tem utilidade nenhuma.
- 27:58Tem alguma assim? Fala assim, pô, isso aqui é
- 28:01muito legal o que eles fizeram, porque otimização da hora.
- 28:04Essa é a tecnologia incrível, só que não serve pra nada, mas é
- 28:06legal. Cara, não servir pra nada é uma
- 28:10expressão muito forte, então? Não.
- 28:13Servir para a maioria dos casos, né?
- 28:15Exatamente. Mas assim, no meu dia a dia, eu
- 28:19tenho a impressão que 2 delas não vão fazer grandes
- 28:23diferenças. E aí eu tenho a melhoria do GC
- 28:27para especificamente OZGC, né? Que são para sistemas
- 28:31extremamente complexos e, sei lá, controle de aeronaves, um
- 28:36nicho muito específico. Isso Eu Acredito que não vai me
- 28:38atingir. É, e aí?
- 28:41O Dantas vai querer me dar um Cascudo agora?
- 28:43Mas a melhoria dos reflexos lá nas variáveis finais, eu acho
- 28:48que vai mais me atrapalhar do que me ajudar.
- 28:51Não que eu seja gambiarreiro. Não entendi, entendi, pois.
- 28:54É porque às vezes não é nem só tipo assim que a gente faz a
- 28:56gambiarra e tudo. Não pode ser que alguma
- 28:58biblioteca que a gente usava indiretamente ela usa essas
- 29:01outras bibliotecas que mexem com reflexão e podem atrapalhar o
- 29:04aquilo que a gente fez, né? AO nosso código.
- 29:06Eu já tive casos onde eu é há muito tempo atrás.
- 29:09Onde eu estava com um com um código lá que usava uma dessas
- 29:12bibliotecas por trás e ela começou a ter muito problema com
- 29:15classes geradas dinamicamente que eram geradas lá por pelas
- 29:18classes proxy e tudo que que que eram cuspidas lá em tempo de
- 29:22hentai. Então eu imagino que esse tipo
- 29:25de alteração na versão do do Java mais novo é alguém que pode
- 29:29trazer esse esse cuidado que a gente tem que ter.
- 29:32Por isso que talvez ela tá agora No No 26 pra dar tempo de até o
- 29:3729, que é a próxima LTS. Todo mundo.
- 29:40Pelo menos uma testadinha de leve lá e ver cara, isso aqui
- 29:42realmente tá tá funcionando, não tá gerando meus um tanto de
- 29:46alerta vermelho nos meus dashboard.
- 29:48E o alerta é muito bom pra isso, né?
- 29:50Então a gente consegue mapear de fato quais fluxos tem esse
- 29:54problema. Então, na hora que eu vou migrar
- 29:56uma aplicação, por exemplo, se eu já tô prevendo que vou
- 29:58precisar migrar uma aplicação x ou YE, eu começo a usar, por
- 30:02exemplo, essa essa feature do Java 26.
- 30:05Eu já consigo mapear esses gargalos.
- 30:07E quando eu for migrar eu vou ter muito menos trabalho, né?
- 30:10Pessoal, tem alguma coisa que a gente não comentou aqui que
- 30:13vocês gostariam de trazer? Eu acho que falta a gente falar
- 30:15que já é melhor que DOT net. Qual que você vai?
- 30:20Defender aí da vai? Defender DOT net 1000 meses.
- 30:23Sem você, do. Time DOT net bom, acho que
- 30:28passou 11 bocado aqui, né? Então discutimos sobre se é para
- 30:32jogar em produção ou não, porque que isso deveria ser?
- 30:35Umas coisas que vieram aí que a gente precisa avaliar, né?
- 30:38Sobre o meu ódio, sobre Java. É muito importante esse tópico
- 30:41também. Vou dar uma chance, vou dar uma.
- 30:42Chance mas. Assim, falando sobre essas fitas
- 30:44maravilhosas, né Dudu? Realmente tem coisas que são
- 30:47novidades extraordinárias aqui. Devo assumir que o Java veio
- 30:50forte nessa nova atualização. Sim, sim, acho que tem tem
- 30:54vindo, né? Nessas últimas versões e a cada
- 30:566 meses lançando uma nova, a gente tá.
- 30:59Que nessa expectativa para o 27 agora?
- 31:01E aí, será que daqui a um ano, quando eu perguntar de novo pra
- 31:03minha LLM qual linguagem usa, ela vai me recomendar Java, não
- 31:08sei. Um ano, um ano parece que não.
- 31:10Pouco ainda, né? Como esse mundo de a tá mudando
- 31:14tanto também? Não só o Java.
- 31:15Pode ser que daqui a um ano já seja até uma coisa diferente.
- 31:17Mano, eu acho que nem existe hoje ainda, né?
- 31:20Talvez, né? Bom, mas como nós somos, né?
- 31:25Profetas aqui no entre chaves, né?
- 31:27E acertamos tantas, quantas? Previsões eu vou vou dizer que
- 31:31daqui uns 2 anos a gente vai ver Java LM num caminho muito mais
- 31:36próximo. Um do outro Eu Acredito, Eu
- 31:38Acredito. Obrigado, obrigado.
- 31:40Bom, falando sobre essas features maravilhosas então que
- 31:42estão vindo para o Java, não esquece de deixar aqui nos
- 31:44comentários de onde quer qualquer plataforma que você
- 31:47esteja utilizando. O que que você achou?
- 31:49Qual foi a sua experiência com o Java 26?
- 31:52Se essas features realmente são úteis, se o que a gente falou
- 31:54que você concorda, discorda? Tem alguma dúvida?
- 31:57Qualquer coisa que seja, pode deixar comentado aqui que a
- 31:59gente vai te responder. E, claro, não esquece de ativar
- 32:03o sininho para não perder os próximos maravilhosos episódios
- 32:05que a gente vem aqui soltar para vocês, foi um prazer pessoal.
- 32:08Até mais. Tchau, tchau.
- 32:09Valeu até mais.