Quarkus: Java além da JVM | PPT Não Compila Podcast
Convidados
Luiz Pais
SRE @ Banco BV
Valdir Scarin
Founder @ VMBears
O Java está mudando, e você está acompanhando? No episódio de hoje do Podcast PPT Não Compila recebemos Luiz Pais, SRE do Banco BV e o nosso incrível co-host Valdir Scarin, founder da VMBears, e entram no universo do Quarkus, um framework Java moderno que promete eficiência, rapidez e integração perfeita com a nuvem! ☁️🚀 Se você já trabalha com Spring Boot, será que vale a pena migrar? Quais são as vantagens reais do Quarkus? Durante a conversa, destrinchamos as diferenças entre Quarkus e Spring Boot, exploramos o impacto da GraalVM na performance, falamos sobre otimizações no tempo de build e execução e debatemos como arquiteturas baseadas em containers e Kubernetes estão impulsionando a modernização do ecossistema Java 📈💡 Além disso, discutimos Virtual Threads, programação reativa, extensões Quarkus, e os desafios da adoção em grandes empresas. Se você trabalha com desenvolvimento backend, SRE ou quer saber como melhorar a escalabilidade e eficiência das suas aplicações Java, esse episódio é pra você! 🔥 Não esqueça de deixar seu comentário e compartilhar com os colegas! 🚀🔖#Podcast #PPTNãoCompila #Java #Quarkus #SpringBoot #GraalVM #CloudNative #DevOps #ArquiteturaDeSoftware Convidados: Luiz Pais: linkedin.com/in/luizpais/ Valdir Scarin : linkedin.com/in/valdir-scarin Spotify: https://spoti.fi/3D0xbQx Youtube: https://youtu.be/JcirrCLDy_4 Outras plataformas: https://linktr.ee/pptnaocompila Acompanhe nas redes Instagram e Twitter: @pptnaocompila LinkedIn: https://www.linkedin.com/company/pptnaocompila Produção: Voz e conteúdo | https://www.vozeconteudo.com.br - @estudiosvoz
- Vantagens do Java (JVM)
- Gerenciamento de Pacotes Java
- Flexibilidade Java
- Go para Iniciantes
- Introdução e Convidados
- Tópicos do Episódio
- Dinâmica do Podcast
- Chamada para Ação
- Transição
- Quarkus: Introdução e Filosofia
- Quarkus vs. Spring (Semelhanças)
- Características do Quarkus
- Extensões e Compilação do Quarkus
- Tempos de Build e Distribuição
- GraalVM vs. JVM Tradicional
- Java na Nuvem e GraalVM
- Compilação Nativa (GraalVM)
- Quarkus e GraalVM
- Spring e GraalVM
- Experiência de Desenvolvimento (Quarkus)
- Casos de Uso do Quarkus
- Ferramentas de Desenvolvimento Java
- Verbosity e Modernização do Java
- Gerenciadores de Pacote
- Java vs. Go para Iniciantes
- Evolução do Java e Ferramentas
- Ecossistemas (Java vs. .NET)
- Migração para Quarkus e Padrões Java
- História do Java EE (Jakarta EE)
- Quarkus, Kubernetes e Docker
- Gerenciamento de Dependências e Segurança
- Patrocínio (Clever)
- Quarkus vs. Spring (Bagagem)
- Quarkus e Red Hat
- Modernização de Aplicações Legadas
- Configuração e Produtividade (Quarkus)
- Panache e Compatibilidade Spring
- Spring Data e Performance JVM
- Migração de Sistemas com Quarkus
- ORMs e Performance (Hibernate, JPA)
- JPA e Spring Data
- Desafios de Migração
- Suporte a Java Legado (Azul, GraalVM Enterprise)
- Otimização de Startup (AWS SnapStart)
- Patrocínio (VMB.io)
- Threads Virtuais no Java
- Reatividade no Quarkus
- Threads Virtuais e Spring
- Threads Virtuais vs. Go Routines
- Extensões do Quarkus
- Como Começar com Quarkus
- Conclusões e Despedida Leve
- Agradecimentos e CTA Final
- Encerramento
o legal do Java é isso conforme você atualiza jvm a tua aplicação começa a receber novas capacidades né E aí ela vai também aperfeiçoando o o o processamento daquele código pouco que eu mexo cara assim não vejo mais assim você fazendo um programa em Java sem usar um prador de pacote como maven por exemplo eu acho legal do Java é isso né Nós temos vários frameworks e nós podemos escolher cara o ponto é esse a gente tem poder de escolha eu acho que uma linguagem para aprender programar eu acho que é é o gol eu acho que é o gol porque é ele tem tudo já empacotado ali você baixa ele você não precisa absolutamente mais nada muito bem muito bem meus amigos do PPT não compile estamos aqui para mais um episódio e hoje Valdir eu quero te ver bravo nessa mesa Jamais eu quero ver você Inteligência Emocional que não é só já eu já te vi bravo hein cara já viu bravo né já te vi bravo hein eu não sei se eu quero ver de novo Estamos aqui hoje para falar sobre quarc fenomenal Episódio Vai ser top cara assim como fizemos uma série sobre Spring boot estamos aqui começando uma possível série sobre um outro Framework Java que é o quarc e para falar sobre o quarc com a gente tô aqui com o luí pais que é obrigado trabalha no Chapter sre do Banco BV e é membro do clube qu quar clu CL exato dá um oi pra galera Luiz Boa tarde gente bom dia boa noite obrigado por me receberem Vai ser um prazer falar do quarc aqui hoje show de bola você quer conhecer melhor como funciona o quarc Quais são as diferenças dos outros frameworks as a as principais características vamos falar um pouquinho aqui sobre jvm sobre como funciona processo de compilação do do quarc e de outros frameworks vão falar também um pouquinho sobre algumas especificidades da própria do própria linguagem Java vai ser bem interessante e se eu puder até o final desse Episódio vou fazer esses caras brigarem eu vou lutar até o f você deu azar porque pegou dois mones cara antes disso se você ainda não se inscreveu no canal você pode fazer isso agora antes de começar o nosso Episódio se você ainda não está inscrito também no no Spotify você pode acompanhar a gente através do Spotify deixa o like aqui no nosso Episódio porque o episódio Vai ser muito bom e a qualquer momento do episódio você pode deixar o seu comentário fizemos um falamos sobre algum tópico ficou com alguma dúvida vai aqui na caixinha de comentários deixa sua sua dúvida seu comentário que a gente consegue saber exatamente que ponto do vídeo que você fez esse comentário e a gente Repassa aqui pro Luiz passa pro Valdir e a gente responde lá suas dúvidas no YouTube e se você gostar ainda mais do nosso trabalho o que que ele pode fazer Valdir seja membro seja membro do PPT no compila vá lá no YouTube do lado do botão que tá escrito que você está inscrito tem o botão seja membro você vai contribuir com o valor mensal com o nosso trabalho aqui no PPT no Cila se você não pode contribuir dessa forma o seu like já vale muito você compartilhar o seu Episódio já vale muito ajuda a gente crescer crescer essa comunidade sempre trazer conteúdo de qualidade aqui para vocês vamos lá que o papo técnico hoje tá muito bom Bora [Música] [Aplausos] [Música] [Aplausos] [Música] pila começado do get started do do do do episódio né Val primeiro é FR Beginning exato boa que é quarc muitas pessoas vão dizer que é um concorrente do Spring II já gostei já gostei Já gostei hoje vamos ter rinha de Framework Hoje a gente vai prender bastante aqui não mas falando sério não é não sei se é ser o caso ser um concorrente do springa eu acho que dentro essa Gama enorme de de de frameworks que você tem pro Java né ele foi um que surgiu muito focado nessa questão de nuvem né de você ser eficiente né você ter uma questão de de de cloud Native né de você precisar servir rápido as aplicações né e ele nasceu muito PR pela comunidade então tem uma comunidade grande aqui no Brasil inclusive né de a gente tem uma comunidade que chama quarc Club né que onde a gente discute fala muito de de quarc lá né E se você pensar em termos do que o Spring faz o quar também se propõe a mesma a mesma função que é você tirar o máximo possível do do peso do desenvolvimento né do desenvolvedor né trazer várias coisas já prontas eh ter rapidez no desenvolvimento tem um modelo parecido com Spring boot né de você criar sua aplicação muito rápido né e uma série de de features lá semelhantes mas a moda do quar vamos dizer assim né eles US uma uma stack muito mais Open sece né Eh vertex tá por baixo né ele tem uma uma característica de você poder fazer aplicações tanto na eh Native né como react Native né Eh quanto paradigma reativo ou o paradigma procedural normal né isso sem você fazer muita muita não tem muita diferenciação no próprio código né Então essa é uma das coisas que ele que ele traz Aí eh uma vou fazer perguntas Mega básicas aqui até porque eu não conheço quarc e provavelmente temos alguns ouvintes aqui que também não conhecem né Eh quando você fala que ele tem ali ele se propõe a mais ou menos o mesmo propósito do Spring é uma equivalência com o Spring boot ou com o Spring com porque o Spring é um ecossistema né ele tem tem uma família né Exatamente é o quarus ele tem esse ecossistema também também só que ele trabalha muito com a com a questão de extensões né o modo como você compartilha digamos assim componentes nele é via extensões né E E essas extensões né que permit que você tenha várias funcionalidades né assim como você tem uns componentes no no spring né que que desempenha determinada função a ler uma fila uhum disponibilizar um endp rest se comunicar com o banco de dados então só que no quarc a gente chama de extensões porque no modelo dele trabalhar ele trabalha com a compilação prévia de todas as dependências né então Ele oferece justamente para ter essa maior performance na hora de carregar o executável né o seus seus executáveis ele tem um processo de compilação de todas as dependências que seriam lá as injeções né Uhum que ele usa também esse modelo de injeção de dependência né então ele compila isso previamente e isso não tem quee não tem que fazer esses binds todos em tempo de execução isso que leva eleva a performance dele e também otimiza questão de uso de memória por consequência ele deve ter um tempo de build mais alto um pouquinho mais alto mas nada não acho nada relevante assim você também tem tem digamos forma Nativa vamos dizer assim na usando grau VM você consegue gerar também executáveis Independentes da da jvm né Aí você tem um tempo de compilação bem maior mesmo né mas ele também te permite ter esses dois tipos de distribuições vamos dizer assim ou você distribuir ele como um jar né ou como executável mesmo entendi eh seria bom explicar a gente até comentou fora do ar no começo né O que que é a grau VM l de então ah grau VM é um é um modelo novo que o o a comunidade tá construindo né Já já já tem versões e produtivas que que é uma jvm só que tunada para o environment onde ela vai ser executada Então você no passado né a o Java ele ele tinha uma um jargão muito forte que era a aplicação ela é buildada uma vez e roda em qualquer lugar né então ela é interoperável Uhum E então como é que ele o Java fazia isso o Java ele tem lá o Java que é a classe descritiva dos comportamentos da sua aplicação E aí quando ela passava ali no moedor de carne né no javac e era gerado byte code e esse byte code ele tem eh as instruções sistematizadas do que deve ser feito Porém quando a aplicação está em execução aí você tem ali o a jvm né que é o Java virtual Machine ela começa a receber os comandos do bte Code E aí ela começa a ver poxa mas essa jvm ela está rodando no Windows Ah qual que é o sistema operacional Qual que é o CPU e qual que é o comportamento aí ela começa a transformar esse byte Code em comando que vai ser de fato processado ali pelo processador né E aí conforme você vai executando aquele comando ela vai ela vai cada vez otimizando mais e e as as versões da jvm e o legal do do do Java é isso né E aí a gente não tá falando de Framework a gente tá falando da linguagem isso é muito bom b a gente entender a diferença né O legal do Java é isso conforme você atualiza jvm a tua aplicação começa a receber novas capacidades né E aí ela vai também eh aperfeiçoando o o o processamento daquele código então isso é o comportamento antigo né a gente gerava bte code e o bte Code era interpretado pela máquina virtual que tava rodando no no environment só que eu falei aqui eh dos comportamentos em sequência e isso leva tempo então pensa isso no passado onde eu tinha um um monolito gigante e tava a apli aplicação ela ela é iniciada num um WR de 200 m rodando num jboss exatamente a gente subia aplicação uma vez e ela ficava lá eternamente e e eu não colocava e novos nós no cluster dessa aplicação com uma velocidade né absurda assim ah precisa fazer um novo nó beleza derruba aí sabadão sábado à noite né E aí a gente vai ficar fora não sei quantas horas a gente sobe um um nó mais né hoje o mundo mudou então hoje eu quero colocar um novo nó na minha aplicação instantaneamente a cada a cada mudança na carga da minha aplicação eu quero ter uma Nova Instância para que eu possa atender essa nova carga com com tranquilidade então eu come que é a elasticidade do Cloud na exatamente eh horizontal né então por conta dessa necessidade a gente também começou a ver poxa se eu tiver aquele tempinho da jvm tradicional eh sendo consumido para eu disponibilizar um contêiner novo mas eu já não vou gostar eu vou ficar chateado então a comunidade Java ela ela isso é legal né a gente a gente vai evoluindo conforme as necessidades e a gente vai trazendo benefício também para as aplicações existentes né então a comunidade já Java foi lá investiu e e tem agora a Graal VM que é uma uma eh uma máquina virtual que recebe esse código já Pronto né eh e aí ele já tá pronto para o environment então conforme eu inicio eu não precisa ficar Ah mas qual que é o processador Qual que é o sistema operacional Qual que é o não sei o que lá meu reflection a gente não pode usar reflection nesse nesse modelo né eu não vou ter eu não vou est avaliando metado dado da classe para saber como é que eu vou processar ela não bichou eu já sei eu sei isso quando em tempo de build né E aí eu produzo exatamente o código que vai ser processado para aquele processador para aquele são operacional então eu falei aqui da do passado e o porqu que a a a grau foi necessária e e como é que ela faz o o o benefício todo que a gente tá falando aqui por isso que ela é mais eficiente né É muito mais parecido com o processo de compilação natural das linguagens né que exato que já faz o binário para aquela arquitetura de processador etc e o legal que a gente não perdeu a característica de ser interoperável né só que você precisa ali de um de de de de um momento né Na hora de você tá fazendo a compilação da aplicação para Puff já gerar o código que vai rodar né É provavelmente você vai ter que gerar um build novo para uma arquitetura diferente né é exato e e o quarkus ele é feito já com essa premissa de de grau VM né já já é feito com essa premissa você pode a hora que você compila no modo nativo né ele já vai criar um executável para você já pr pra plataforma que você tá compilando né Aí ele já vem com só que aí depende assim você tem que analisar muito onde você vai fazer isso porque a a diferença às vezes pode nem ser porque já a quantidade de otimizações que são feitas no build natural do jar que ele vai gerar Já já te traz uma uma melhoria tão grande que às vezes dependendo do caso você nem compensa você gastar tanto mais tanto tempo a mais compilando para nativo para você ter um executável subindo vai hoje você tem uma aplicação que sobe vamos supor num numa compilação normal 200 msos você vai conseguir subir em 50 msos no nativo não não chega a ser relevante né assim é nos números absolutos não mas a gente tá falando de quatro vezes mais rápido né sim quatro vezes mais rápido Mas as maioria dos casos você pode estar feliz com 200 sim sim é pode te deixar bem satisfeito já em comparação que você tinha anteriormente com outros formma de Deploy né e o Spring também tem essa possibilidade de trabalhar com grau VM pelo que você falou né Tem mas é assim né para você trabalhar com grau VM você não pode fazer algumas coisas que eh os códigos antigos faziam e vamos lembrar o seguinte né o Spring ele é um frame que começou em 2004 e a a jvm que a gente tinha disponível em 2004 era o que 1 três acho que era isso né E então assim muito código foi feito e por mais que você tenha toda a evolução que que se tem né Eh Pô hoje você tem releases do Spring sei lá cada um mês dois meses né Eh por mais que você tenha isso muito código você e é por isso que o Spring tem aí um Ele atende uma grande Gama de de necessidades esse código não é 100% moderno Então você acaba esbarrando em algumas limitações que a a grau VM te impõe né E aí para você usar o Spring nesse modelo aí você tem que usar um pacotinho lá específico dele que vai te dar essas capacidades porém ele também não vai ter tudo que a família Spring faz mas hoje em dia cara a a gente tá fazendo aplicações menores né E isso que é o legal assim né não tô nem falando de só microsserviço tá falando assim aplicações menores a gente saiu daquele mundo de de monolito E aí do jte né que o servidor me dava tudo que eu precisava para existir Aonde eu tô num ambiente onde a infraestrutura me dá o que eu preciso para existir e aí eu posso fazer componentes menores que usufruem dessa dessa capacidade então eu não preciso mais de tanta coisa eh e aí você pode usar essa essa capacidade do Spring também né só que só que se você tiver fazendo uma modernização de aplicação eh se você tiver fazendo um sei lá uma eh uma adequação de um de de um código legado tal Às vezes você você você é melhor você já começar com o Spring boot lá que que tem tudo a jvm que não vai iniciar tão rápido é hoje hoje você pegar uma aplicação Zinha lá bem com com uns end pozinhos lá do do Spring com Spring boot convencional ela vai subir sei lá em um em um segundo 2 segundos sei lá eh que já é muito bom também né meu [ __ ] eu tinha no passado a aplicação em websphere que demorava 30 minutos para subir cara como é que a gente passou por isso na vida né E aí agora a gente tá com aplicaçõe inhas pequenininhas com alguns segundos eu eh no teve um episódio passado que nós falamos aqui sobre a solução de promo lá né da Natura eh Poxa lá a gente tá subindo em 8 segundos fazer e não é o Spring boot que faz isso é porque eu tenho um War map da aplicação que eu conecto no banco e carrego dados da memória eh e pô eu tô falando de 8 segundos né aqui com o grau VM eu tenho Pô milissegundos né então é vai muito da sua necessidade de negócio né esse é o ponto é tem uma uma outra falando de tem umas coisas legais no quarc a experiência de desenvolvimento porque você tem muita facilidade né primeiro que você tem uma aquele modulo quars Dev onde você deixa a aplicação no ar e ela faz Hot load com o que você vai alterando você altera faz o cham MOV de point né fazendo um teste por exemplo no serviço rest lá hora que aquela classe vai ser utilizada ela é recompilação ficar recompiler você deixa ele rodando e você atualiza el quando você fizer a próxima chamada já é o código atualizando exato isso aí dá uma uma baita produtividade assim sem dúvida no node ol agora eu no meio do jave vou falar de node agora a gente trabalha assim também tem tem tem um módulo Zinho do node que ele Toda vez que você salva o arquiv ele fica monitorando os arquivos você salva o arquivo ele baixa e sobe o server novamente e aí você consegue fazer uma produtividade muito grande nessa experiência de desenvolvimento né Inclusive tem uma checagem que ele faz eh quando você tá compilando com as propriedades que você tem no no seu arquivo de propriedades se ela for incompatível com os da com alguma classe que você tá que vai usar aqu aquela propriedade ele vai ele te avisa entendeu então isso aí as mensagens próprias mensagens de erro documentação é muito boa né assim todos os casos assim digo todos mais maioria dos casos de uso importantes enterprise que você tem né você tem exemplo no site né a gente tem a comunidade aqui do Brasil que ajuda na tradução português né a gente tá trabalhando nisso né do pro site pro português e até engraçado que o o PT é Brasil a recomendação aqui a fazer a tradução pro português brasileiro né e e é é muito boa essa parte de desenvolvimento qual qual qual é as recomendações de de aplicações de uso enterprise do quarc já que você se toou não você pode você pode usar em qualquer aplicação mensageria né no último lugar onde eu trabalhei el tava ele foi escolhido como uma ferramenta foi tava sendo feito um um downsizing de de uma processador de cartão E lá eles estavam usando como como a tecnologia base o quarc então assim qualquer caso de uso onde você usa hoje o Spring outros frameworks né E você pode usar para servir fazer integrações servir servir rest fazer Tem suporte para soap coisas velhas né e queem nunca né é inclusive você citou o broker né imagina que deva ter um monte de lá nép S rest né É então isso o caso clássico de de de barramento é conversão de S rest que a acho que o broker el foi a herança do soa né É é é o brer exatamente el começou broker é o cara que o soa foi embora e o broker ficou ficou para levar a culpa né é Exatamente exatamente acontece aconteceu muitos lugares que eu trabalhei isso aí e quando você inicia o o o desenvolvimento com quartos por exemplo o cara que não Valdir o cara que é springo quais são os o o roadmap do cara para a adaptação desse desinstala o STS né não joga fora primeiro eu vou eu vou recomendar porque eu sou suspeito porque eu gosto muito da das Ferramentas da da brins né Então uso intelij direto né Tem um pessoal mais raiz aí gosto de usar visual visual Studio code mas para Java não acho uma experiência agradável né apesar de tá bem desenvolvido assim mas eu prefiro intj eh eu eu assumo que eu sempre fui resistente com as ferramentas da Microsoft mas visual Studio é tá levinho demais né qu É não e quando saiu vs code pro Linux Cara eu tô rodando vest code no meu pto eu eu eu eu trabalhei com vbc eu fiz os cursos do C Sharp lá quando lançaram né cara usava o o visual Studio C Sharp lá era outra coisa bicho era uma carroça né nossa era meu monstruosidade para quem usa o vs code agora cara putz éx estala né uma coisa absurda né Eu uso lá para nodejs né tô mexendo um as coisinhas nodejs lá olha só he eu sou poliglota Cara Vs code tem falar não maravilhoso né mas essa parte da quando você começa a falar de de Java assim eu não eu não consigo achar que ainda talvez por não tenha tanta experiência inv code porque é que eu fiz o salto do um salto do eclipse pro intelij Uhum Então é assim depois você mexe com o eclipse vai mexer com intelij cara é muita muita diferença assim né é que o Java Java é uma linguagem que é impossível você não ter uma ideia para ruda para programar porque é um desperdício de bites o Java linguagen Zinha [ __ ] verbos tanto cara Public static vo mudou Cara você não precisa mais function Death handler aí abre você não precisa mais disso Cara você não precisa mais não não precisa porque a ideia faz para você né Não mudou muita coisa a a a evoluiu bastante você tá falando é verdade olhando lá para trás mas a api ela trouxe muitos e conceitos de de lambda né programação reativa tal eh cara hoje você vai escrever os comandinho ali pô ficou coisa mais bonita sabe você vai colocando ali na mesma linha um stream pon F cer brilhar é não é que tá bem feitinho cara tá bem é bem legal e o que você tá falando é verdade antes você tinha que fazer um forma não sei o que lá mas não sei o que lá para ter um resultado que era um map né você tinha uma lista pessa transformar no map você tinha que fazer um monte de coisa agora não agora você chama uma pezinha mais simples lá né facilitou bem e mas é muito verboso ainda Ah cara mas eu acho que é muito verboso o o Java ele tem o o o código o fonte dele é quase o tamanho do binário tanto texto que tem cara mas cara eu acho que aí que entra a parte Às vezes você tem que desapegar tem gente que tá começando um processo de aprendizado eu acho que é válido assim o cara vamos construir um programa Java do zero sem nenhum gerenciador de pacote ou coisa parecida sem um maven ou sem um gradle Beleza pode começar mas cara boa sorte é não cara se você me aplicar um teste por ex Eu nem sou um jave assim tão do dia a dia né porque eu faz tempo que eu não um programa assim necessariamente numa linguagem todo dia e tal mas o pouco que eu mexo cara assim não vejo mais assim você fazendo um programa em Java sem usar um prador de pacote como maven por exemplo mas isso desde sei lá também não é que você fala às vezes eu já Participei de nesses fóruns até comunidades aí você vê o cara apanhando loucamente assim porque ele tá querendo implementar o bagulho querendo baixar o jar fazer referência assim sabe neci M assim como fazzi os fenícios é exatamente e cara Não a tecnologia tá aí você não vai ver nenhum lugar utilizando isso no mundo corporativo né uma sem um mav um gradle não épais produtividade eu não conheço outros e Minha experiência particular assim é que eu eu gosto mais do maven acheo mais acheo mais simples nem que seja oente né ou tem um aente né Nossa agora você Chutou o v aí você Chutou o v mas tá muito tá Muito moderno assim o maven né O que ele propõe e o a ideia o conceito do maven foi e exportado pras outras tecnologias cara não M revolu você vai falar você vai falar ah mas o node não sei o node copiou aquela [ __ ] de npm lá do do mav cara é tudo lá aqueles pack de Jon lá que você coloca as dependência tem tudo de lá cara do mav mas é muito mais simples você v o tamanho de um requirements pxt não cara a diferença é que es um um A diferença é que um é escrito no formato di outra escrit forma xm porque não mudou ainda histórico é cara não mas ó o esse conceito de gerenciamento de pacote ele já é antigo né desde lá do do por exemplo APT no Linux tem o mesmo mesmo conceito né Sim mas você tinha isso nas linguagem de programação não então isso é fato né Então pronto mas tem não no cça Won Não começa Porque você veio para esse episódio para fazer ele ser polêmico que você tem uma raiva absurda do Java tá porque a gente a gente é poligram não cara eu eu acho isso um absurdo eu tenho que saber um pouquinho de Java até para poder ser contra você Então esse é o ponto você não tá olhando aqui de uma forma agnóstica não não vire os nossos ouvintes contra mim não os seus ouvintes estão chateados com você talvez eu não eu não ganhei muito amigos falando isso e tal mas eu acho que uma uma linguagem para aprender programar eu acho que é o é o gol eu acho que é o gol porque eh ele tem tudo já empacotado ali você baixa ele você não precisa absolutamente mais nada se S baixar o Java vou precisar baixar o maven vou ter que baixar mais algumas coisas e tal uma ide não sei o quê é complexo é um é um um Arc bolso de conceitos que você tem que aportar para depois começar a sair fazuma coisa se o c tivesse dado certo se você mais mais tivesse dado certo o que eu digo no sentido assim de ser popular com o Java e ele tá gente teria mesmo problema porque massificado né falar mais deu certo é né eu tô falando no sentido ser massificado é de ser de você usar para aplicações simples vamos dizer assim né com menos exigência de de performance Mas você teria um monte de ferramentas para ele porque ele ele o Java nasceu lá com com esse conceito de compilador né gerar compilação os arquivos num determinada composição de pastas e tudo isso aí foi crescendo né foi conforme ele foi evoluindo né foi tomando o corpo você tinha que criar coisas para facilitar esse trabalho porque era muito braçal não é que nem a quando você pega o dnet por exemplo que a Microsoft assim Acho que ela faz primeiro a ideia depois ela faz a linguagem eu trabalhei com dtnet muitos anos lé todo o tempo que eu trabalhei lá no Itaú trabalhei com dnet E então você tem essa coisa muito homogênea né tem essa outra coisa também que é muito forte engraçado você falou isso né a Microsoft ganhava muito dinheiro vendendo licença da ide para desenvolver você precisava dar licença da da ide e tinha licença Então imagina é a Microsoft ela tem essa política de colocar você dentro daquele cercadinho eu não sei como é que tá hoje mas assim é abriu bastante a cabeça né questão daet Core né de você poder D agora ele roda em todo lugar n é né ele tem no mesmo Paradigma e tal mas você tem um desenvolvimento com vs code né e tem a community também né agora tem uma versão de Visel Studio community então isso aí ajuda bastante mas eu acho que essa questão da desse tempo que levou o Java e todo e e essa Justamente que nunca teve que nem a Microsoft mundo homogêneo né Você tem um direcionamento assim que a meio que optou por não ter um servidor de aplicação todo o tempo toda a vida né e o Java Já sim né porque criou padrão né um bagulho muito mais muito mais da aquela coisa acadêmica né Vamos criar Vamos criar um padrão vai seguir dessa forma e tal você vai ter um contêiner E aí você começou a criar um monte de ferramentas né E aí também formas diferentes de fazer as coisas eu vejo muito isso às vezes você pega Ah desenvolver Java vai começar amanhã aqui começa aqui no trab ah mexia com o quê mexer com j2e o cara chega na empresa vai mexer com Spring ele quase um Júnior el podia ser Senior j2d né exatamente tem essa assim porque existem muitos mundos dentro do Java né mas no caso do do quarc você não tem isso por exemplo a se o cara que desenvolver Spring for mexer no quarc ele não vai ter assim simplesmente vai mudar algumas palavras assim algumas anotações que no no spring é qual que era do inject lá aqu el outred component né Agora virou injected a roua inject é mas mas isso é da J né do do do próprio Java mesmo né porque o o Spring que acontece n o Spring ele Ele viveu na Vanguarda ainda muitos componentes vive eh e aí que acontece ele inventava as coisas e aí a a Spring i l o j o jsr ia lá e documentava aquilo tomava aquilo PR ele então a gente tá falando de anotação [ __ ] bicho e e injeção de dependência isso aí veio com com Spring E aí depois a JV me trouxe para ela ah você pega lá o próprio herbate foi a mesma coisa a a a especificação jcr PR Bet também veio do Spring Bat E então assim você tem essas mudanças aí mas são bem simples né são bem eu acho que até até acho que tem algumas coisas Agora que a comunidade tá andando um pouco mais rápido né em termos de definir padrões por exemplo se não me engano a parte de J siic Ah sim que a padronização do jakarta lá né ess comunidade de jakarta é muito forte nisso né inclusive todas as especificações que eram no Java eram muitas pões que eram Java x virou Jacarta né Jacarta ponto é a a mesma normalmente a mesma nomenclatura que é o jakarta exatamente para quem tá nos ouvindo teve teve um movimento né Eh bom vamos vamos falar vamos falar da história né a gente tinha saman lá atrás muito Caraca velho tu voltou lá no paleolítico é foi quem inventou essa [ __ ] né quem inventou essa [ __ ] foi a saman E aí teve uma hora que a Sam foi comprada para pela Oracle E aí o Java aqui era uma linguagem open source tinha toda essa comunidade eh e aí você tinha como várias comunidades né Muito muitos frame do Java era da P A Jacarta também né e E aí teve uma hora que a hora que falar Opa vem cá vou comprar aã e ela quando ela comprou aã Java vi dela E aí tá bom E aí e o Java e né que é o Java enterprise Edition ele era uma combinações de de padrões também de de de especificações para Corporação né E e aí a orac ela tava mantendo isso só que chegou uma hora que falou eu não quero manter isso falei o seguinte eu vou eu vou doar isso aqui para alguém quem é que que é isso aí aí ela ela doou pra jakarta né então a Jacarta virou manted do das especificações do Java E aí foi onde teve essa mudança aqui sendo comentada Hum entendi mas a Jacarta é uma instituição uma comunidade é uma comunidade é como se fosse um eclipse né hum assim como Eclipse é aach também mantém né cncf né entendi cncf lá da parte do do kubernetes né kubernetes e outr outras ferramentas Cloud Native né isso e e eu eu dei uma olhada lá no no site do já que você citou do Cloud Native e eu dei uma olhada lá que ele ja que Native pro kubernets né já que tem algumas especificações específicas para rodar conteinerizada é ele ele tem no quando você cria um projeto no quc ele já te dá todas as configurações de docker para você gerar o o executável tanto gerar uma imagem tanto com com o Java padrão como com o nativo e ele tem também nessas configurações eh uma questão de você gera e tem aquela parte de camadas né do docker né das imagens né então ele você hora que você depois que você gera a primeira imagem né a a parte que você vai precisar alterar na imagem a segunda geração de imagem vai ficar muito mais rápida porque ele só vai alterar aqueles códigos o que Você alterou no seu código sim esse esse é um ponto importante porque a gente fala muito do do do peso e deficiência do Framework Mas aí o Dev vai lá ele faz um um uma aplicação que sobe em 200 msos mas aí ele escolhe uma imagem docker de um so gigantesco que vai demorar 30 minutos para para dar boot e Executar a aplicação de 200 segundos né então ter essa essa essa indicação de de do do Build do docker e tal da imagem correta sim eu acho que acho que é é uma parte onde você tem que ter uma governança aí né tem que ter uma equipe de em alguns lugares cham de plataforma né ou devops uhum né Depende do lugar né que controle isso né que tem alguma alguma gestão sobre que imagens que você usa no seu processo de build né fazer verificação se é aquela que que pode ser usada e tal porque realmente que você falou o cara pode fazer um estrago lá lá traz uma imagem lá com o broker dentro isso o cara pega uma um uma imagem de um head Hat completo para rodar um Spring boot rodar um quarto né daí não é nem culpa da ferramenta né do do É culpa da aí você vê né is esse ponto que você trouxe aí muito forte para devops né e isso é uma Isso é uma decisão que já não fica mais a cargo do desenvolvedor né ou não deveria pelo menos né não é mas não nas grandes empresas já não fica mais então sendo docker file nem tem o docker file é gerado pela é gerido pela CCD então conforme a tua aplicação tá lá no no repositório CCD vai lá pega ela exatamente então assim é governado né então ah eu mudei a versão da meu sistema operacional da das imagens tem problema CCD dispara tudo de novo gera todas as imagens puf implanta tudo e aí você mata aqueles problemas de vulnerabilidade que você tinha no passado né Ah vou ter que fazer vou ter que derrubar aquelas aplicações então No momento não mais isso ISO isso é um uma uma um ponto positivo do Java tá vendo não falo Java é [ __ ] eu não falo só mal também mas eh Geralmente as linguagens mais as linguagens interpretadas como node pyon etc Elas têm muita dependência de Lib do so né então você vai usar lá por exemplo um componente no node para fazer processamento de imagem e tal você tem que ter o image mic lá instalado dentro do so no Linux com aquelas libs né e o Java ele já é independente em relação a isso ele é aut contido né e o que facilita você por exemplo abstrair a camada de so do to docker da camada de aplicação né E já nasas linguagem não é tão simples você precisa ter ter ter um uma imagem de uso que dê suporte para aquele stack que você tá rodando o Java ele já é um pouco mais eficiente em relação a isso né É mas você tem essa parte de governança aí é complicada né Principalmente por causa do uso de Open sce enorme que a gente tem né Não dá para se falar que 90% ou mais das coisas que a gente roda hoje enterprise é são Open sce Então você tem que ter uma ferramenta se você é uma empresa né que tem principalmente a gente que trabalha no setor financeiro né que tem uma tem um escru muito maior né assim das entidades de fiscalização né você tem que tá sempre olhando isso aí né tem que ter ferramentas né um custo muito alto né vulnerabilidade em algum tipo de imagem etc é tanto nas imagens estão uma tem lá onde a gente lá onde eu trabalho a gente tem uma uma uma fase que faz a verificação da imagem verificação das bibliotecas assim é muito é séria A coisa então passam por várias fases de vários tipos de verificação assim com relação à vulnerabilidade necessário não dá mais para subir Aquelas imagens mineração de Bitcoin né É Nossa cara mas por que que aplicação aqui do o de Jara aqui tem 1 mega e e ele tá consumindo 3 GB de memória tá Bitcoin lá na tá acontecendo aqui né É mas isso é é um processo tem que realmente tem que ser bem governado né É até para poder ter questão de eficiência né porque ter previsibilidade de infraestrutura etc saber consumo de cada imagem e tal quero falar com você agora quem ainda não conhece é Clever Clever é uma empresa que já tem mais de 3 milhões de usuários em 30 países com 30 idiomas diferentes que tem trazido Soluções em blockchain criptomoedas e ativos digitais o objetivo da Clever é te dar liberdade financeira para operar nesse mercado de cripto então se você acredita nisso se você acredita nessa Liberdade você já Pensa como a Clever vai conhecer os caras é Clever Paio estão contratando também pessoal para trabalhar com cripto com blockchain então se você tem interesse se você tem conhecimento nessa área procura Clever se você gosta de criptomoedas se você opera no mercado você precisa conhecer a Clever precisa conhecer as soluções da Clever então o endereço tá aqui embaixo no vídeo para quem não tá no YouTube é Clever pai vai lá vai conhecer que realmente é um mercado sensacional E como que funciona no com quos e Spring eu quero quero que vocês briguem velho cara eu tô aqui para aprender eu tô aqui para aprender com Luiz cara não tem essa e ó o Java é eu acho legal do Java é isso né Nós temos vários frameworks e nós podemos escolher cara o ponto é esse a gente tem poder de escolha é o nosso objetivo é fazer aplicações eu vou te falar por que que que tem uma diferença assim no uma coisa que não é que torna ele melhor mas assim você vai ter isso isso vai vai assim não mas assim que o Spring ele vem ele vem aquele que ele reitou isso aqui ele foi criado há muito tempo atrás né Uhum Então é que nem quando a Microsoft né ela tem um compromisso ela tem não diria que antiquado mas Ele carrega uma bagagem uma bagagem de onde que uma maturidade né já anda um pouco curvado mas porque porque ele precisa né continuar compatível né com todo um leg que existe né E hoje o é como você cara como você faz um pega um sistema que você joga joga fora e começa do zero meu ele vai ter pelo menos 50% a menos de código ali né então o quos é muito mais recente muito mais novo né e e teve esse impulso lá da Red Hat também né gente da Boa da redh desenvolvendo ele né Eu não sei exatamente quando que se ele já iniciou exatamente com essa coisa de ser aberto mas pelo que eu sei acho que sim e então mas tem um envolvimento muito forte da Red Hat Eu lembro que a red hat falava muito comigo de quarc na época que eles queram vendu Open shift exato e assim qual que é qual que é o objetivo deles né as ferramentas da R Hat eram são são feitas para Java e em Java né E eles precisavam buscar alguma coisa que trouxesse modernidade paraas ferramentas deles né Então nada mais justo do que começar na na base né construir um um Framework para suportar as ferramentas deles é porque acho que eles entraram muito nas empresas que vendiam que cresceram muito Vendendo appserver né um caso até da tudo bem Que BM gigantesca mas assim Imagino que o wef deve vender muita licença até hoje vende a gente usa lá a gente chama de legado toda vez que alguém fala webs fear morre um bebê anda na China Então tá falando BSF web Logic e o próprio jboss né que tem a versão priz então eles provavelmente eles tinham que pensar numa solução porque quando você pensa nisso dentro de ambiente kubernetes fica totalmente inviável né sim você até pode usar mas não é o mundo para qual ele foi feito né não se o cara sobe um contêiner com jboss você corta a mão dele aís você faz você corta a mão dele se ele subir com um um um um contêiner com websphere também você corta a mão dele até porque dá para modernizar não é Valdir dá opa como é que faz para modernizar chama vem be chama V isso aí é fácil a gente faz com pé nas costas isso aí é tem até o quando a gente lá atrás estava num processo de migração de para sair do websphere né Ou pelo menos para ele não crescer mais né a gente tava tinha uma opção lá do próprio Liberty né que o Liberty era uma como se fosse um também um um framer vamos dizer assim né mas também ela mais na era mais um container light né um web um server com APP server Lite que rodava justamente é é um t para você rodar justamente todas as extensões do ec mas com aquela coisinha a mais que tinha no efere uma série de configurações que você só tinha no e sfere você conseguia rodar nele entendeu É eu eu cheguei a testar numa época esse Liber foi na época que eu conheci esse cidadão aqui que eu precisava descontinuar o wef de algumas aplicações uma empresa que eu trabalhei e esse cara olhou para mim e falou eu boto isso aí para rodar no spring cara Mas use JB como é que você vai remover isso aí cara ah JB chamando um lado pro outro tal não sei o qu aí a gente a gente vai lá e fazer uma faz uma magiquinha que transforma os JBS em em API rest E aí a gente liga os dois os dois lados né só que a gente tem um uma maquininha que faz isso automaticamente entendeu aí não precisa alterar a aplicação da hora é e já fazendo Jabá aqui funciona então se você quer modernizar suas aplicaç Nossa a gente tinha uma aplicação lá bicho não vou falar o nome dela mas ela rodava no nosf consumia aplicações COB e e componentes JBS tinha transação distribuída acessava também o o o banco de dados e mandava mensagem pra fila caramba tudo que podia fazer na mesma aplicação ele fazia cara era nível de tão bizarro que para fazer o build da aplicação Você tinha que ter o jdk proprietário da IBM caramba porque a aplicação usava apis que eram só do websphere nosssa senhora e aí você tinha que fazer o build com J DK da da da própria BBM proprietária que já era uma coisa contra especificação n contra mas tinha muita gente que fazia assim né até porque para PR pro fornecedor ele tava feliz né ele tava dando um jeito de fazer um lockin né é loquin mais safado mais safado impossível porque Pô o Java ele vinha com essa não você não vai ter loquinho porque você tá baseado n esp aí cada fornecedor e lá fazia o seu puxadinho né E aí a gente a gente o SPR o legal do Spring é isso né com vários mecanismos dele eu consegui interpretar a os comportamentos esperados da aplicação né os aspectos da aplicação E aí eu construí eles no spring então a gente a gente mod ou aplicação inteira sem mexer numa linha de código foi muito legal é uma uma das coisas legais que eu achei no quarus é que ele tem funciona muito por configuração Então você quando vai começa a usar as apis para ler mensageria por exemplo né dado de fila você consegue mudar por exemplo de mor ah hoje eu trabalho com Rabbit aí amanhã eu vou trabalhar com Kafka você muda a configuração você não precisa mexer nada no seu código TR conector entre aspas né e ele Abstrai pro mesmo mesmo camar de processamento ele tem uma uma série de extensões que chamam panash panachi acho que é um é um termo francês né tem muita tem muita gente que desenvolve no quarc queer vem da França Hum e panachi panachi esqueci o significado agora mas eh procura aí que tem um é uma um termo francês e eles desenvolvem no panach principalmente a parte reativa né Tem muita coisa suporte a reativo e por exemplo você tem uma uma você tem umas interface que você usa lá você consegue fazer um crud um crud e já disponibilizar um end Point rest assim com dois arquivos eu tenho até um artigo que eu publiquei no no Linkedin sobre isso que é muito simples que eu até Fala assim Seu chefe chega às 15 para 6 falando que tem precisa de um crud para uma nova tabela na sexta-feira usa isso aqui e é muito rápido mesmo assim muito muito legal então pluma pluma pluma pluma francês Dev ser porque é leve é é faz sentido a panach você vê muito na parte de de Justamente na parte de de banco de dados persistência né então tem uma série de facilitadores assim para você também e tem o lance da compatibilidade também se você tem um um sistema que foi feito uma uma componente que foi feito usando Spring Você tem o suporte as as bibliotecas do Spring também dentro do quarc você consegue por exemplo E você tá fazendo uma migração você quer a princípio colocar só a parte da frente vamos dizer assim né a parte lá do do rest dos end points rest você quer modernizar vamos dizer assim colocar um quos ali na frente só que você ainda não quer mexer em toda aquela parte lá de queries aquelas queries do do Spring é Spring data onde você faz aquelas queries coloca o nome do método né Aquilo é uma mandrac Caria né que eu brinco muito que eu falo tá ficando interessante vamos lá que o Spring faz umas coisas assim mágicas né que é justamente pegar o nome do método e transformar num código né de consulta do banco de dados mas isso isso aí é é [ __ ] né porque você vê e ele pega defende defende não não Vou defender não mas assim isso aí vem vem um pouco de encontro que a gente falou lá né ele e ele gera o bite code né E quem faz isso não é o Spring né Quem faz isso é jvm ela gera o bite Code em tempo de runtime para depois compilar o negócio para processador bicho cara mas é é é não é o Spring que faz isso é jvm o Spring usa a capacidade da jvm para fazer isso mas quando você faz um Um Faz uma anotação lá que aquele método vira um um One Point rest por exemplo hum ele gera um código antes do bite Code em memória provavelmente aquele código a do a do a do rest não a do rest ele tem lá o dispatcher dele que aí usa ali os protocolos htp para poder eh processar uma requisição que vem e aí falar e encontrar a tua classe então ele não precisou criar o bite code tá ele faz camin inverso né Ele pega a requisição e pega aquele padrão de aquisição e mapeia para uma classe isso perfeito exatamente e ele faz isso usando anotação n então eu não precisei gerar classe eu só precisei encontrar a classe que o objeto que que iria processar aquela adquisição isso é uma coisa agora isso que o Luiz estava comentando né E aí não ali é gerado um bite code cara ali o cara pega o nome do método associa com os campos que estão mapeados no teu na tua entidade E aí ele vai vai lá e gera um SQL é uma mandrac Caria e e é por E aí o ponto que tá né É por isso que tem esse tempinho a mais de inicialização da jvm porque ele começa a olhar pros metadados das classes e fala beleza agora eu preciso interpretar isso aqui né Eh só que o ponto é né você tem lá o O plugin do do Spring boot que gera o jar né o fet jar para VM convencional E você tem também pro da grau VM né e é o que o o Luiz tava comentando que a a a o quarc tem também que ele ele faz ali né E aí eu posso usar o quos como base isso aí você US qu você pode usar o Spring data você importa as bibliotecas do quos que trabalham com Spring né Aí ele você mantém essa compatibilidade você não precisa mexer necessariamente porque isso dá mais trabalho né Na hora de você migrar se você for usar o migrar pro jakarta né parte de dados né E então isso ajuda né ajuda nesse processo de imigração de você não quebrar todo mundo junto de uma vez né Você pode particionar digamos assim eu fiz eu eu descobri isso porque eu precisei fazer uma avaliação de de uma migração de um de um monolito vamos dizer assim um microsserviço monolítico um microsserviço monolítico eraa um microsserviço monolítico tinha 12.000 linhas de código isso é é um belo do monolito do do micr servição micros servição né E aí aí a gente tava plane assim tava querendo ver a a probabilidade de de qual que era a chance de fazer essa migração usando quarc né eu fui caindo nessas nesses pontos aí Putz e agora né Essas tipo de query aqui o quarc não tem né ou tem no jakarta né ass acho que o jakarta acho que se não me engano acho que na parte de persistência já tem alguma mandrac Caria parecida Se não me engano posso tá falando desa isso isso não é só do do do Spring né o Framework antigos ao Spring que já fazia isso chamava acho que ibts ibts então ibts é eh e assim é era uma co é uma coisa muito boa mas tem esse tempo e o próprio hibernate ele também é lentinho para inicializar bicho uma parte da penalidade que a gente paga ali na inicialização é da hibernate também aplicação que que pluga no no no banco lá para ter um opam mentinho de dados é mais chatinha se você vai direto em consulta você não paga essa penalidade né é hibernate n na minha no meu conceito el sempre foi um caminhãozinho né então cara você precisa saber usar muito bem para você ganhar tudo que ele pode te dar eh pessoal reclama ah não mas o tempo de fazer o bind Ah mas não sei o quê Se você souber usar souber anotar direitinho funciona muito bem ainda mais pra aplicação crud né que você vai vai receber um monte de dado tal né que a gente não precisa de tanta performance Às vezes você tem uma um monte de tela de cadastro você precisa ter mais reprodutividade é exato e E aí ele vem muito bem agora quando você precisa de performance Ou você usa ele no assim otimizando tudo ou aí você vai para sei lá query essas coisas assim JPA existe ainda é o JPA o hibernate ele implementa interf j o hibernate nasceu lá também em 2004 2005 né E ele veio com esse conceito de ORM lindo maravilhoso e aí o Java F [ __ ] isso é legal mesmo bicho pera aí deixa eu deixa eu transformar isso em especificação aí veio com esse nome JPA JPA especificação e hibernate implementa o JP e o Spring data também implementa o JPA isso IMP o Spring data estende Muito Além muito além aí assim ele tem ele essas questões de eh consulta pelo nome isso aí é coisa do Spring mas essa compatibil É bem interessante né é ajuda né ajuda mas aí se você não for isso num projeto que você tá migrando pode ser bem bem vantajoso assim você economizar um pouco de tempo e tal não fazer aquela quebradeira toda de início né às assim começar do zero tudo né Então aí foi aí que eu vi que a parte também das anotações né tinha Unos compatíveis lá né então se você for fazer uma migração não é algo tão traumático assim claro que sempre tem umas pegadinhas na Imigração né na maioria dos projetos de imigração na verdade deviam ser ter sido um projeto de apaga né de deleção do antigo é aquela aquela piada antiga né se Se existisse um mundo legado Deus não tinha feito o mundo em sete dias exatamente tava em projeto até hoje tava em projeto tava lá aqu esse negócio de convivência não sei o qu e não pode matar todo mundo que tá de um lado para nascer no outro né tem que fazer um a ponte a ponte da amizade Isso ter que fazer uma processo de transição aqui ih Gude para [ __ ] imag e os caras não vão se conversar é uma língua de um jeito língua do outro isso é p se ele não tivesse o rut é e acesso direto para fazer Deploy direto em produção forar e criar de novo cara T certo exatamente tem muita empresa que vive desse causa aí né Por exemplo a a Azul né a Azul ela faz um e ela tem ela dá suporte pro Java 6 exato então se você é um cara que tem um nível de compliance assim terrivelmente alto assim que você tem que por ex você tem que atender você precisa vai você passa por um uma questão de auditoria e esse cara Eles olham com as suas aplicações javac não tem suporte se você for pegar isso da Oracle você vai é um absurdo é coisa Milionária aham E aí que que a Azul faz a Azul justamente Ela te dá um suporte para um Java PR jdk deles jtk J6 mas Azul Azul Companhia Aérea não ela pega ela te dá uma passagem só de ida isso só de ida mas tem suporte aqui ó qualquer coisa se der merda você pega esse avião exato vou te levar pro lugar você tá salvo você vai te dar tem tem a passagem de avião RG novo nova identidade e tudo é mas é e é legal porque eles têm inclusive eles a versão paga jdk paga deles ela tem a inclusive melhoria de performance né eles TM um umas coisas que eles incrementam lá então já que é pago né Tem alguma algum alguma vantagem tem que ter né não é só o selinho para consultoria a própria grvm né a própria gvm ela tem a versão de T Price da tem um contrato T Price da Oracle né tem a Gra VM tem a community Edition e tem a a enterprise da Oracle interessante T valendo outro dia que eles estão fazendo a Porque tem uma uma galera trabalhando com aquela questão de você é sempre a Bendita né o bendito problema né de carregar as coisas rápido Hum porque os caras estão mexendo com uma especificação para você pegar o que tá na memória como se fosse um SnapShot SnapShot da memória guardar no disco É isso aí sabe quem tem isso aí é WS pra lambda pra lâ eh que é feita em Java E aí o pessoal fala pô a lâm feita em Java tá tá tá errado pô mais de 50% bicho tem tem uma um um eu sou do time que vai dizer que se tá 50% errado o o o ponto cara é o seguinte os caras estão lá né e falam Pô eu tenho mais de 50% dos meus clientes que usam Java para colocar na lambda o que que eu posso fazer para ajudar Ah pera aí eles eles fizeram isso eles criaram eu eu esqueci o nome da feature e não sei se é snap start Snap alguma coisa mas ele ele grava foto da da memória de quando a aplicação tá iniciada pronto aí na segunda vez cara acabou você não tem um tempo de inação ele já bota lá bota na M meu Deus e assim ó é só apertar um botão lá na hora você tá implantando e pronto isso é uma coisa que você tem nome isso né gambar work around work around é é mas é bem é bem vamos dizer que é bem sofisticado né esse tipo de coisa né pegar um O que que é uma imagem bonitão não é a mesma coisa não é diferente ah tá para você é diferente porque você quer porque você quer falar mal do Java não assim ó você fala de uma não a a imagem é é um estado de disco não é estado de memória não é estado de disco que foi construído a partir do Estado de memória não pô mas aí ele vai iniciar de novo e vai reconstruir a memória Pô você de novo você está sendo e preconceituoso não mas ó eu vou te fazer uma pergunta de arquiteto agora você vai concordar comigo não sei se você vai fazer um um J Depende se a pergunta de arquiteto a resposta também depende resposta depende né Eu não sei que você vai perguntar mas depende bom você que tá vendo esse podcast da hora tá vendo um monte de problema aqui que a gente tá colocando né e Quer uma ajuda aí na sua empresa faz o seguinte entra no site aqui da VMB que a gente pode te ajudar vem be.io nós somos uma empresa relacionada à arquitetura de soluções a modernizações de aplicações também atuamos na fente devops para ajudar vocês a serem extremamente ágeis então dá uma olhada no nosso site que vai tá aqui embaixo vb. e lá você vai poder ver um pouquinho da nossa história dos nossos profissionais e aproveitando se você for um profissional da área de tecnologia que tá Aim de trabalhar numa empresa legal um monte de colega gente boa e tecnologia te ponta manda o e-mail para people care @ vmbs pai aí já agora eu quero meu show Vel Luiz Eh cara me fala uma coisa que eu tenho curiosidade aqui como é que tá o utilização da das tres virtuais pro pro qu Arc gra m como é que ele tá usufruindo desse benefício cara você me pegou aí porque eu não eu sei que ele tem planos de usar as trades virtuais Tá mas eu não sei exatamente quando isso vai acontecer tá tem se falado muito nisso foi um Boom né e acho que agora o pessoal acho que tá meio lançaram né tá tá esperando é que nem carro novo né que sai primeira versão de carro né só os loucos pegam né para ver o que tem para descobrir os defeitos então eu sou louco bicho a gente até fez o episódio aqui da na não sei quando é que vai sair esse né mas enfim o episódio Inter saiu ali no no fim de Janeiro né Eh que a gente fala de uma solução que a gente tá usando na Natura lá e a gente tá atendendo tipo eh eu tô eu eu vi isso hoje lá em produção né eu tô entregando 92 requisições por segundo com 9 milisegundos por requisição com dois contêiners caramba negócio assim e o assim a aplicação tá rodando com dois eh micro CPU só que ela tá com 0.2 0.3 né e Memória também baixinha tá isso porque eu carrego um monte de dado na memória né para ter Cash e essas coisas Tod então e eu tô usando muita trad virtual trade virtual desde o desde o Tomcat que eu vou lá e falo pro Spring ó meu bota aí trade virtual e não quero saber até a minha aplicação o meu desenvolvimento eu tô usando é pulls de trads p de trad virtual PS de trad virtual a lá no spring você tem L Aqueles @sy @ escambal né que você não sabe o que você tá fazendo ele você não sabe o que ele tá fazendo mas ele tá Te Entregando o processamento assíncrono ele te entrega promessa de de resultado futuro né Igual que o você tem lá no no node o Cambal né node usa muito promis né isso e o Java e o Java faz isso e ele faz isso com tred virtual cara é é assim é impressionante Qual a diferença de uma trad virtual numa trad convencional o a trad convencional ela loca a tred do CPU de verdade então assim CPU tem oito núcleos Então você vai concorrer esses oito núcleos e e provavelmente para você ter uma boa eficiência você vai ter lá sei lá oito trads né né na sua aplicação a trad virtual não a trad virtual ela por si por por si só ela Gerencia um pull de trads para você né então a eh você você cria 1000 requisições você tá achando que você tem 1000 trads mas no fim ela lá por trás a j VM tá gerindo a disponibilidade dessas oito o cpus 20 cpus ou enfim Duas né que nem no meu caso aqui ela tá gerindo essas duas cpus num Pool de trads virtuais para você então sua aplicação não sabe que ela tá ela tá concorrendo a essas essas essas duas trads né Eh esses dois cpus e o por que que isso é bom eh a CPU ela e a jvm ela otimiza esse esse Pool em função dos dos próprios bloqueios que você tem de outros recursos que você utiliza então se sua aplicação usa e isso é muito comum né Eh requisições rest pronto quando você tá fazendo requisição rest ela polot dou a tua a a tua teu processamento em espera pegou outra coisa para fazer e quando ela tiver o retorno daquilo no socket aí ela dispara a tua a tua aplicação para fazer o o resto do processamento né então otimiza por trás o uso de recursos do do processador não deixa nada em espera né ex exatamente ela minimiza o o o a espera cara é assim é muito bom eu tô eu tô abismado com o resultado que a gente tá tendo sabe aplicações de autto e aut desempenho com pouco recurso lá na no parcos Você tem o o vértex que ele um frame que ele usar é que só que ele é é é o modelo reativo né Uhum que basicamente é o mesmo mesmo conceito o conceito lá que foi criado lá no node né de uma tred só né ela ficar servindo lá botando em espera justamente o iio né E aí servindo as outras que estão processando né é o conceito as ações estão processando eu não sei internamente como que as tres virtuais foram implementadas né gostaria até de pesquisar depois mas imagino que seja algo parecido com isso só que usando todas as trades físicas que você tem uhum né normalmente eu não sei se aí você pode definir lá Quantas você normalmente você vai subir uma aplicação no quar você pode dizer até quantas tredes você quer locar para esse modelo reativo né que também tem tem que se tomar cuidado nesse tan aí para você também não sobrecarregar a aplicação né quando a gente tava a gente entrou lá no no quarc clube a gente se juntou para participar da rinha de backend E aí a gente desenvolveu lá eu primeiro fiz uma versão com quarc meio puro né e depois um amigo nosso lá vai me desculpar que não tô lembrando o nome dele agora eh mas ela da comunidade ele fez toda a implementação reativa né E aí tem outra pegadinha também quando você tá usando modelo reativo você tem que tomar cuidado com o tipo de banco de tipo de conexão com o banco que você faz porque se essa conexão também não for reativa você vai e ele for fazer um Lock for usar transação por exemplo aí você tem incompatibilidade Então você você também não é só mudar ah simplesmente eu vou lá recebo conecto numa uma filha lá do do cafca por exemplo e tô recebendo aquilo de forma reativa uhum né lendo aquela fila de forma reativa e vou disparar uma atualização no banco de dados você se você disparar essa atualização usando um driver comum que vai locar a tred uhum para fazer a parte da transação aí você toma uma toma Tung vamos dizer assim entendeu É não é só usar o paradigma reativo no código você tem que ter uma arquitetura reativa é você tem que tem todas as partes envolvidas lá principalmente aquelas que vão acabar usando né um processamento de trad Lock e tal tem que ser reativa também para ela falar digamos assim a mesma língua aqui do que você tá né então tem ess é um cuidado que você tem que tomar quando você vai usar esse esse modelo né E aí eu não vi ainda no Sinceramente eu não vi no no quarus assim eles tem alguma coisa já deve ter alguma coisa sobre isso mas eu não não vi a fundo Como como é que tá a implementação do do das Vitor trads não ele como você falou ele usa já componentes open source né como vertech para trazer essas capacidades né isso exato quer dizer ele já tem esse modelo implementado né mas acho que com a virtual trads que me parece que fica um pouco mais né sobre sobre o cargo do jvm né então você descer um nível né então te dá mais acho que você consegue deixar ainda mais transparente pro cara que tá desenvolvendo né claro que você tem que especificar criar um usar um p de TR um p de um p reativo um p virtual trad né nosso caso né e o Spring ele tem O tesk Executor que ele é um uma abstração do executors Service lá do do Java né E aí ele Eu me comunico com ele aí quando eu vou instanciar esse bim eu falo olha o Bim Task Executor você vai usar essa Factory de trads e essa Factory de trads é uma Factory da jvm E aí eu falo essa Factory ela é virtual então assim para eu que tô programando é muito transparente eu eu que tô programando eu coloco @in e dou o nome da configuração que eu quero só isso E aí essa configuração é feita lá numa numa classez um metodo tem três linhas que que você anota anota o seu método como é @n exatamente Ah legal E aí as maracutaias lá do do do Java não é do Spring né E é isso que eu acho legal assim muita coisa não é do Java não é não é do springel não é do quarks ou não é do Framework xpto é do Java aí o Framework que ele faz ele ele encapsula aquilo de um jeitinho mais fácil pro desenvolvedor usar de um de um usar sem saber que tá usando sabe isso eu acho legal e E aí quando eu eu crio esse tesque Executor com uma Factory de trads virtuais que é feita pela jvm cara aí esquece aí ela enfila infinitamente E aí ela vai gerenciando ali como é que ela vai vai vai entregar e então assim né esse esse esquema novo de de trads é bom para aplicações que é banco de dados eh orientada a banco de dados digamos assim né uma orientação a a ou banco de dados ou a recurso externo né que eu preciso esperar se eu preciso esperar muito é é bom eu eu usar esse T virtual que ele vai resolver agora se eu tenho um processamento de cálculos que são baseados em dados que eu tenho na minha memória aí o modelo antigo é mais performático aí você você gerenciando o seu seu uso de trads ali é mais performático eu fiz assim eu não fiz teste para validar essas duas diferenças mas eu eu fui atrás né se eh de estudos teóricos para falar pô eu eu é melhor eu eu gerenciar as minhas treds ou eu usar esse modelo novo e aí foi foi esse o o o fator crítico de escolha né então como eu tenho eh dados de recursos externos é melhor usar e tests virtuais se eu tenho dados em memória e eu quero paralelizar esses esses processamentos então é melhor você ter o seu seu gerenciamento de trads né porque provavelmente com recurso externos você tem mais tempo de espera né pode ser E aí com o dado na mão você as tredes estão mais disponíveis né com com os dados já em memória etc isso aí faz sentido o o que no o que o que eu queria entender melhor é porque que na tred virtual com o dado bem disponível também poderia ser tão performático quanto né mas deve ter uma razão deve ter deve ter uma razão é não darvo é que no dado Imagina assim muito dessa coisa da da da de você usar trads virtuais ou esse modelo de react é justamente você tomar proveito das daquelas coisas que estão sendo executadas eh fora da sua aplicação né que é onde você tem que fazer uma pausa e esperar uma resposta uhum sim né então quando você tem um modelo reativo ou de trad virtuais né você tá esperando você tem muitos processos onde você espera faz requisições fora elas tem que você tem que esperar você pode ir fazendo outras coisas é você você deixa aquele aquele e para e aquela Promise em Idol e ocupa tred com outra coisao se você tá lendo dados em memória iu é muito rápido é praticamente instantâneo né diferente do que você passar pela rede né sim é E aí talvez a estrutura o arranjo da própria trad virtual seja um peso que ele não precisaria ter E aí a trad normal pode ser mais efetiva né Faz faz sentido né interessante eu acho que é uma quem tem curiosidade assim Acho que o modelo que o gol usa também de coroutines né go el chama de GO routines né cortines É tem no acho que no tem até no cle né ele tem modelo de de cor rotinas e é muito interessante assim muito a implementação que eles fazem é muito legal que são as cor rotinas para quem não não é é é conceito de você usar criar várias tarefas como curs fosse tres virtuais uhum né E aí você de alguma forma você tem como notificar a aplicação que tá esperando aquelas aquisições através do no caso do go channels né então e no gol é muito simples assim você coloca gol e a função que você tá executando automaticamente ele chama de forma síncrona e aí você pode tratar isso de formas lá mas é muito interessante mas tava falando lá do do quarc tem uma outra coisa também legal que é a parte do das extensões né você poder criar também suas extensões né então tem no quarc zô lá você tem a maior parte das extensões nativas lá né que são desenvolvidas pela equipe do pessoal do quarc eh e também tem um um site chamado quark ver né E lá se você lá você encontra a maior parte dessas extensões estão desenvolvidas pela comunidade quando você entra no site deles você vê Mita coisa lá tem muita entãoo tem mais eh na parte de extensões você vê tem uma categorização né ser é banco de dados processamento de arquivos Jobs n n coisas como se fosse um npm do do do quarc é tudo vai est tudo vai est lá no no maven lá no repositório né É só são todas as referências que você vai fazer dentro do seu maven lá do seu pon Uhum mas existe uma biblioteca gigantesca de coisas assim que você Pode listar lá e pode fazer as suas também comunidade tá bem desenvolvida então tá bem desenvolvida tem bastante coisa sendo feita pela comunidade tem uma um componente Se não me engano componente por exemplo de Open Api para converter da ais você converter contratos né para fazer aquele gerar código que é feito aqui pelo pessoal do Brasil aqui interessante hoje a empresa que eu trabalho a gente fez tudo baseado em Open api também justamente para para evitar lin com o próprio Gate né então todas as api são especificadas em Open api é essa coisa das extenções é muito legal por exemplo no no quarc você se quiser exportar aquele swager né aquele contrato você não precisa fazer nenhum tipo de codificação é só você referenciar uma uma biblioteca dentro do Pom automaticamente quando ele carregar ele já vai te dar todas as funcionalidades que você tem de de aquele de point uhum né também tem o Dev mode né quando você mas você tem aí você tem que anotar os métodos que você quer expor etc como se você fosse expor o rest só que aí ele pega essa mesma anotação e gera o o o Não não precisa nem anotar se você tem um um rest lá que trafega por exemplo uma classe de dados né uma classe que tá você está expondo essa classe via restum e você coloca lá a extensão automaticamente ela vai percorrer suas suas classes e já vai te CL vai criar uma interface interessante uma Inter aquela interface padrão do swager lá interessante Luiz agora pra gente já começar a partir pros finalmentes aqui do do do nosso Episódio quem quer começar a ter os primeiros contatos com quarc quais são as Suas dicas para para começar eu recomendo o site né o quarc zô né E você vai ter lá toda documentar vai ter alguma coisa em português a gente tá trabalhando nisso né E se quem quem quiser contribuir tá convidad dissimo E outra aqui no Brasil a comunidade ou qu vem de fora também né porque a gente tem uns canais lá em inglês também espanhol aqui é a comunidade do quarus clube que fica no discord pode bater lá Vi que tem um canal no YouTube também do quos tem um canal do YouTube tem vários vídeos lá né Eu fiz uma série de vídeos criando projeto do projeto eh rest até da da parte rest até banco de dados né projetinho lá foi foi legal Foi numa época que eu tava desempregado de deu bastante gás tempo Liv tava bastante tempo livre mas isso cara isso é uma coisa que eu tenho que dizer da comunidade assim cara assim é um ambiente muito é muito saudável assim né A forma como as pessoas encaram na questão de dúvidas né de você tratar bem as pessoas você tem esse esse código de conduta é é uma internet se a internet fosse boa seria sim seria uma comunidade as pessoas se respeitam e tal falam né tentam ajudar as outras né E a gente tem muito isso lá no quarc clube temho citar que o cara que cuida da dessa comunidade o luí Lamas né Ele trabalha hoje na act cara super gente boa assim vamos Traz ele aqui no próximo recomendo fortemente tem o pró só da da Red Hat tem o Elder né que é o um champion n Java Champion né brasileiro e trabalha na red hat divulga bastante quartos tem falado muito da parte de de I Inclusive essa parte de I também tem tem extensões lá pro leng chain né Se quiser trabalhar com Iano quarc né de uma forma bem bem simplificada Eu acho que é um um ótimo lugar para você começar é o l passa a ser um protagonista nas próximas aplicações aí de gni né É É exatamente e lá a gente tá pronto para responder qualquer dúvida então assim eu sempre que posso lá fico lá fuçando lá nas dúvidas eu gosto eu gosto sempre que posso de responder coisa ajudar o pessoal foi muito boa essa experiência que eu tive lá de de de fazer esse essa série de vídeos legal e era bem mana massa assim né descobrir na hora que eu meti a cara mesmo que eu não tinha tanto Nunca me considerei um um cara assim [ __ ] vou dar aula assim Impecável não foi ó vamos fazer isso aqui aí dava erro no meio lá [ __ ] como é que faz isso e foi um disclaimer até que eu deixei lá no início entendam se eu se eu tiver que procurar no Google aqui não tenho vergonha não mas é bom porque o cara vai aprendendo o caminho né é Exato eu também eu gosto muito dessa dessa coisa mais prática assim né show de bola Odir suas considerações finais Poxa cara eu eu que nem eu comentei aqui no meio do Episódio né assim o Java é legal por isso cara Tem um monte de opção um monte de sabor diferente né a gente tem que lançar a mão de tudo isso mesmo e E são essas diferenças que vão enriquecendo a comunidade do do Java dos frameworks né então Eh Poxa tem que tem que percorrer esse caminho sim eu acho bem legal cara eu eu né já já no passado dei uma olhadinha tal e quero quero lançar uma aplicação Zinha em quarc também para para dar brincada show de bola fiquei curioso também né Eh tem um interesse aí de algumas alguns testes que eu devo fazer também e na empresa que eu trabalho né aplicações mais leves etc e o episódio foi muito bom para ter essa primeira introdução aqui ter esse primeiro contato eu saio só um pouquinho frustrado porque vocês não saíram no braço eu não consegui fazer vocês brigarem né o Java o Java bom por isso cara tem tudo mas eu posso dizer que eu eu eu aposto que você vai ser mais produtivo com o quos E aí Valdir O que que você tem a dizer sobre isso cara eu eu eu sou mais produtivo que o Spring com três dedos de uma mão eu entrego muito mais cara então isso a muito bom meus amigos Obrigado pelo Episódio foi muito bom obrigado a vocês que seja o primeiro de muitos aqui sobre o quarc agradeço demais aí ter ter me convidado Obrigado que agradeço Lu vindo at aqui conhecer a gente E e trazer um pouco aí da experiência no com quarc Valeu Odir Obrigado meu caro tamos junto sempre sempre aqui com com nós nas pautas jave iras e e e técnicas no geral né obrigado pela presença aqui Obrigadão você que acompanhou a gente até agora muito obrigado pela audiência de vocês se você ainda não deu like nesse Episódio se você ainda não se inscreveu no canal se você não deixou o seu comentário não deixou a sua dúvida aqui pro pro luí comentar e te responder Depois aqui no YouTube ou no Linkedin ou no Spotify onde você tiver nos assistindo deixa agora seu se seu like deixa o seu comentário aqui que a gente vai ser eh com muito carinho a gente vai entregar aqui pro pro Luiz responder às dúvidas aqui no episódio tá e Pair se o cara quer contribuir ainda mais com PPT no compid que que ele pode fazer seja membro você pode ser membro do nosso canal vai lá no YouTube tem lá do lado do do do onde você tá dizendo que já tá inscrito porque você tem que tá inscrito inscrito no canal porque você se se você ouviu 30 segundos atrás você já tá inscrito E aí tem lá seja membro sendo membro você vai contribuir com valorzinho pro nosso trabalho aqui pra gente manter a produção etc e continuar trazendo conteúdo de qualidade gratuito para vocês se você não consegue ajudar dessa forma você já ajuda demais contribuindo com com a distribuição do episódio mandando no grupo da empresa mandando no no Slack no discord né dando like aí no dando que então você já ajuda demais Fazendo a nossa comunidade crescer obrigado novamente meus amigos Obrigado pela sua audiência valeu
[Música] [Música]
Episódios Relacionados
1h 28minSQL vs NoSQL: Tudo o que você precisa saber | PPT Não Compila Podcast
Valdir Scarin
27 de ago. de 2025
1h 26minEstratégias na Adoção de Plataformas de Desenvolvimento | PPT Não Compila Podcast
Elcio Abrahão, Luis Rogerio de Souza
8 de mai. de 2024
1h 26minApache Kafka: Transformando Ecossistemas de Dados e Desenvolvimento de Software | PPTNC Podcast
Pedro Busko, Romulo Barbosa
13 de mar. de 2024
1h 21minSpring Boot Parte 3 - Avançado: Threads, Promisses e Starters | PPT Não Compila Podcast
Marcello Ribeiro, Valdir Scarin
18 de out. de 2023
