Spring boot: a primavera dos programadores Java
Convidados
Valdir Scarin
especialista em modernização de aplicações @ VMBears
Jhonny Lopes
engenheiro de software
Explore o episódio
Ah, a primavera... Época de grandes recomeços, especialmente após um período em que a produtividade ficou adormecida. E para os programadores, nada melhor que o Spring Boot para representar esse significado: o framework que chegou para transformar o mercado num momento de necessidade, torna a programação em Java muito mais rápida, segura, eficaz e simples. Nesse episódio do #PPTNãoCompila, Wellington Cruz traz essa pauta do Spring Boot com a presença de três grandes feras apaixonadas por Java: Arthur Soave, engenheiro de software do Mercado Livre; Valdir Scarin, especialista em modernização de aplicações da VMBears; e Jhonny Lopes, engenheiro de software. Disponível também no Spotify e outras plataformas: Spotify: 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 - @vozeconteudo
- Introdução ao Spring Boot e Gerenciamento de Dependências
- Spring Boot: Produtividade e Mudança de Paradigma
- Conceitos Java e Injeção de Dependências
- Abertura do Podcast e Apresentação
- Histórias e Inspirações com Criadores do Spring
- Chamada para Ação
- Contexto do Spring: Ecossistema e Debates
- Java vs Python em Performance
- Fundamentos do Java e Suas Edições
- Java: Linguagem, Plataforma e Frameworks
- Java Puro e Bibliotecas Padrão
- Java Enterprise Edition e Especificações
- JSRs e Anotações
- Servidores de Aplicação e Inovação do Spring Boot
- Spring Boot e Empacotamento de Aplicações
- Gerenciamento de Dependências e Estrutura do Jar
- JarLauncher e Estrutura Interna do Spring Boot Jar
- Ciclo de Vida dos Beans e Spring Boot Starters
- Evolução dos Frameworks Java
- Spring MVC e Filosofia do Spring Framework
- Microserviços e Evolução Arquitetural
- EJBs e Modularização
- Modularização e Computação Distribuída (REST)
- Relevância do Spring para o Java
- Anúncio Publicitário (VM.Bears)
- Spring Boot, Microserviços e Containerização
- Evolução Cloud-Native (Netflix OSS para Kubernetes)
- Mudanças em TI e Integração Infra-Software
- Reflexões Pessoais sobre a Evolução do Java
- Origem do Nome Spring e Paralelo com J2EE
- Java Web Antigo vs PHP e Design Patterns
- Evolução Tecnológica e Expectativas do Consumidor
- Abstração, No-Code e o Futuro do Desenvolvimento
- Depuração de Frameworks e Maturidade do Spring
- Spring Boot: Produtividade e Simplicidade
- Debate: PHP vs Java e Dificuldade de Aprendizagem
- Redução da Verbosidade em Java (Lombok, Spring Data)
- Anúncio Publicitário (Clever)
- Poder da Programação Orientada à Convenção
- Piada: Dependências Cíclicas e Lazy
- Futuro do Spring e Compilação AOT
- Performance Comparativa: Java vs Python/Node
- A Evolução da JVM
- Vantagens da Popularidade e Documentação do Spring
- Spring Actuator e Monitoramento
- Funcionamento do Spring Actuator e Extensibilidade
- Modularidade e Configuração do Spring
- Contexto da Aplicação e Ciclo de Vida do Spring
- Mecânica Interna do Spring Boot
- Sumário da Magia do Spring Boot
- Testes no Spring e Perfis
- Convenção, Produtividade e Comparação de Linguagens
- Recursos de Aprendizagem e Comunidade Spring
- Dicas para Iniciantes no Spring
- Encerramento e Agradecimentos Finais
pessoal hoje nós vamos falar sobre springbutt só tem já ver na mesa e eu já falei é muito composto por framewords e manter as as compatibilidade entre todos os frames que você acabou usando a sua aplicação ela é muito difícil então quando você traz ali o springbut como responsável por gerir a compatibilidade ele muda se você abrir um jarro que é montado pelo springboot ele mudou estrutura do jarro essa questão de conterrização da vida porque a gente começou a entender que essas essas áreas assim como sofre como a gente parou de dividir softwares em camadas e começou a dividir em domínios as a própria infraestrutura também né a própria arquitetura também não é mais dividida em camadas o objetivo do experiente Aliás era produtividade cara porque Qual que é o lance do springbutios além de todas as As convenções e boas práticas os caras querem que vocês foquem codificar o negócio não precisa ir lá naquele cara você não deve fazer isso se você fizer isso você mata toda a configuração que ele fez porque o springbuti ali é o opinativo não preciso mais aprender orientação objeto precisa usar Nil mais na [ __ ] da Estância Velha precisa porque você precisa saber como a inversão de dependência funciona depois essa aula eu vou ter que acabar o episódio chega né acabou não tem mais o que falar É uma aula muito bem muito bem meus amigos do PPT não compila estamos aqui dessa vez para fazer mais um episódio aqui oferecido pela game Bears onde nós vamos falar fazer uma continuação do nosso Episódio de linguagens de programação sobre Java já que você deu um migué Nossa fugiu fugiu da Taís para vir aqui falar do Python fugiu eu tava gripado bicho essas coisas não brinca não cara a gente sabe que eu não queria passar para vocês a gripe tanto medo tanto medo de me falar do Python que fugiu hoje nós vamos falar aqui de spring boot Então vamos falar de como funciona a aplicabilidade vamos mergulhar ali em como funciona a gestão de dependência o próprio Web Server embebedado dentro para falar da aplicação de e para falar sobre isso aqui comigo estou com Artur Zito suave E aí tudo bem mano suave na nave Sempre beleza hoje vim aqui tem uma aula sou junina essa mesa nada você é monstro velho não é monstra obrigado pela presença velho Eu que agradeço o convite para quem não conhece já teve aqui em outros episódios é nosso deve já vacínio monstro tocador de Red Hot na outra ponta Johnny grande Johnny Lopes boa noite boa noite pessoal obrigado pela presença com vocês aqui esse time só de Peso Pesado aqui é só parrudo ainda mais para falar de springbuth é vida isso aí obrigado pela presença
e aqui na frente Paulo Dirce carin muito prazer meus amigos mais uma vez aqui com vocês obrigado
quem dera viu são gêmeos são Geniais eu já apertei a mão do do rob Johnson e dor são os caras que desenvolveram ali cara apertei a mão deles lá no no spring One em 2018 num Washington eu já apertei a mão do Valdir então e e tem um cara também um monstro chama Filipe web que é um cara que meu tá eh comandou aí a a linha da da dos Spring data e tudo mais né também apertei a mão desse cara velho pô são pessoas Geniais sabe que eu coloco lá na frente assim ó meus meus ídolos né então show de bola pessoal vamos falar disso aqui agora e eu quero fazer um pedido para você você que é diária da área de TI você quer de área de tecnologia que apoia a gente que cria conteúdo técnico compartilhe esse episódio dá um like aqui se inscreve no canal se inscreve outros canais você que é de tecnologia apoie quem Compartilha esse tipo de conteúdo Então vamos lá que a gente tem muito que aprender aqui hoje vamos falar bastante explique bora [Música] [Aplausos] muito bem pessoal hoje nós vamos falar sobre springbuth só tem já ver na mesa e eu né
na verdade spring spring bootloud spring Cloud Spring Cloud Spring é boot Cláudio hoje vocês vão ter que explicar essas diferenças aqui porque ele tá tendo tanta coisa né cara é um flem é muito vasto cara são muito sabores
só de papai eu acho que o o Spring do pai até o Django Livre tem um filme fox né na verdade ficou mais semelhante ao Spring boot ou flesque ah Gente pelo amor de Deus cara O componente eu fui falar com o cara lá ele não tinha mais de uma tread no no bagulho como não velho é pai então faz processamento sem ser de dados você acha que é uma tradição pessoal lá o pessoal que não o pessoal que não sabia o que que era thread pode ser também pode ser pode ser eu não estou aqui para defender o pai mas o pai então já escrito não tinha springbuti porque não precisava né não tinha os mastodonte né já nasceu light para fazer telinha bicho só sabe fazer telinha faz o processamento de treinamento de máquina em Java a máquina antes ela prender ela já está obsoleta porque tá carregando ainda bom muito bem vamos começar falando sobre eu queria primeiro fazer um um Prelúdio para quem não é já vira o hard como vocês aqui que tem o café estampado no tatuado no braço sobre o mundo do Java porque tem esse ponto que eu acho que a gente não falou na primeira Episódio do raiva que não é claro para muita gente né a gente tem a linguagem Java padrão certo linguagem de água puro e a gente tem os frameworks que são padrão da própria linguagem né ele tem j2e j2s e etc é o dois morreu faz um tempo aí J2 Aí morreu a gente não fala mais o dois né eu parei nessa época faz tempo né Aí eu virei gente fui para o pai J2 m e J2 m e cara pode crer que era para fazer joguinho de celular lembra disso é tipo na verdade história do Java Ela é bem antiga né Essa questão de frameworks também a gente tá aqui zoando um pouco né mas evoluiu da mesma forma que evolui em hardware evolui metodologia de software né então nessa época tinha já de fato Standard Edition que era Teoricamente o Java puro e o Java para para rede já para a internet na prática a gente fala de plataforma Java né a gente geralmente falado desse Java Edition sim os outros acabaram caindo na obsolescência aí o pessoal entender a diferença o Java diferente de por exemplo o Python ele não tem um Java que é só Java que nem por exemplo deixa eu dar um exemplo melhor a gente tem um JavaScript tem um note que roda em cima de roda em cima é uma linguagem Pura Beleza você pode rodar ela num browser não é a maquininha virtual que rodas
exatamente então por exemplo eu já não consigo rodar ele só o Java sem o J2 sem o JR certo Não exatamente
não mas é o que quando você fala do Java se e do Java está falando de todo aqueles collections que são da própria linguagem Todas aquelas bibliotecas etc que é meio que o Framework é padrão certo
coloca o nome da classe ele vai gerar o ponto Class isso vai rodar aquele código maravilha o Spring veio dance porque quando você precisava levantar uma web para pegar esse ponto você consegue fazer isso sem um J2 J6 j e consegue Então beleza é isso que eu queria que para fazer o paralelo com as outras linguagem entendeu ponto de partida o Java é que eu tô achando que vocês estão programadores de Framework vocês nunca fizeram ponto Java para gerar um ponto eu tô achando o contrário na verdade vai ter a gente tá pensando invertido o Java puro funciona é uma linguagem é uma linguagem de programação funciona muito bem o compilador tem a virtual Machine de roda ele o equivalente da virtual Machine do Java por exemplo no no java script pode ser o node se você tá rodando no servidor mas pode ser também como Valdir falou sobre o browser Mas de qualquer forma você precisa de algo para interpretar nenhuma delas gera um executável é uma delas tem a parte de compilação onde você vai sair com pontas é porque assim tem a questão do Run time que você tem a plataforma gerar interpretada toda a linguagem tem Beleza acho que o acho que eu tô sendo confuso será quando a gente fala dos dos padrão tá trazendo aqui é muito importante para esse podcast porque é confusão não é a linguagem são as pessoas que fazem exatas Então vamos esclarecer esclarece aí você que manja tudo Java talvez talvez a gente voltando voltando mais para trás seja mais tranquilo de entender não Java como linguagem ele começou uma linguagem como como tem o pai então por exemplo que você pode escrever um arquivo ao pai então executar na sua máquina isso é isso que eu quero resgatar porque o bagulho tá tão avançado que a gente não sabe como começou é igual por exemplo eu tenho lá o PHP PHP eu posso usar o compilador o interpretador padrão dele lá no no na linha de comando escrever um arquivo ponto PHP executar mas HP começou com uma página nessa internet é um pouco diferente depois que teve que separou exato ele compilava dentro de uma biblioteca do próprio servidor web etc mas aí eu posso ter um Framework em cima dele que nem o zen de Cake e etc e posso ter as bibliotecas que são padrão dele da própria linguagem for pensar bem o que eu quero gravar j2e é um conjunto de bibliotecas isso é isso que eu quero que a gente deixo claro o j e e o JS e eles são o conjunto de linguagens padrão da linguagem e não Framework é isso que eu quero esclarecer entendeu E vamos lá né então o Java pessoal tem paciência porque são já vírus a gente tem que desenhar ele tem ali um conjunto de de sintaxe né então você tem ali da linguagem assim táxi e você tem a jvm que interpreta sintaxe aí acabou o jse o j e e um conjunto de especificações de comportamentos e são necessários em um mundo corporativo para ter aplicações distribuídas E aí a gente tem um rmi e os cara isso a gente dá um nome para isso de jsrs E aí esse conjunto de jsrs são organizadas nas versões de j e e no passado Java enterprise Edition e agora já carta ainda perde o Edition então quando a gente fala de uma capacidade E aí a gente vai falar muito disso aqui né porque o springbuth ele traz muito disso mas quando a gente fala de uma capacidade de validações por meio de anotações que tá falando Java já bem invalidez Isso é uma jsr que é que acho que saiu na versão do J e 1.6 aí você tem isso lá no arcabouço certo aí você tem frameworks que implementam essa especificação Beleza agora vamos pegar daqui para poder ser mais didático Então temos o Java o j e o J S São as bibliotecas padrão dessa linguagem elas não são frameworks beleza isso que eu queria deixar claro em cima disso dessa plataforma Java nós temos os frameworks que atuam em cima antes disso ainda até acho que o ponto que você tocou no começo no JS você não precisa pro j.i você não não roda ele sozinho Como você mesmo disse você tem que servidores de aplicação a gente fala em Spring muito a gente falar Além de falar do frameworkspring a gente também fala do Servidor que roda por trás sim é que o Spring ele tem um servidor também já embedado dentro dele mesmo né exato mas nem sempre foi assim e a gente como a gente vai falar de springbuth acho que é interessante a gente falar do que De novo de muito bom ele traz né quando a gente fala em j2e ele fala em aplicações corporativas né aplicações de produção distribuídas a gente fala em web free web log Boss exato você precisa ter uma uma um servidor onde você vai instalar essas essas Inclusive a essa biblioteca ela distribuiu distribuída se tem uma parte no seu cliente se tem uma parte que fica dentro desse servidor uma parte compartilhada outra parte nem tanto onde isso vai rodar diferente Aí não diferente tanto do pai do que eu não conheço o pai daquela época mas talvez diferente do pai porque a gente tem hoje em dia que é mais parecido com springboot onde a sua aplicação ela inteira contida dentro do pacotinho só né então você tinha esse não necessariamente né Depende do Você pode ter por exemplo uma organização do pacote Pai tô muito semelhante com Spring boot que você transforma ele num executável entre aspas que você já sobe um Web Server etc tudo dentro dele mesmo que é muito semelhante que eu falei com por exemplo o flash queria muito semelhante com a estrutura que você está trabalhando com serviço por exemplo né que você já sobe direto mapeamento etc e um web service já embedado dentro dele mesmo né Eu acho eu acho isso legal pelo seguinte quando aí já entrando mais no spring boot eu acho que a grande sacada desse dessa virada de spring boot foi de fato encapsular um pouco dessa infraestrutura para executar o Java dentro do próprio e não precisar de um application server etc como a gente trabalhava com os WR né antigamente ou os próprios já que você rodava em linha de comando direto na interpretador né então acho que essa parada do springbutir de encapsular toda essa parada foi o que meio que virou o jogo para para adoção do próprio filme work né você tá comentando é interessante é o tal do fatiar né então a gente já tinha isso antes o você tinha plugins do maving que pegava o Jarvis que você tinha na sua dependência e unificava para você compilar tudo em conjunto E aí você tem uma distribuição né E aí de fato Spring book ele veio olhando para isso também só que um pouco o que as pessoas acham que não vem assim muito por trás do springboot né É que na verdade ele veio então o Spring Ele trouxe injeção de dependências do código ali e ele trouxe a inversão de controle o springbutir o que que ele fez ele trouxe ali A gestão das suas dependências de bibliotecas Nós estava falando de framer aqui no começo né então o javar é muito composto por frameworks e e manter as a compatibilidade entre todos os framers que você acaba usando a sua aplicação ela é muito difícil então quando você traz ali um springbut como responsável por gerir a compatibilidade e ele também ele muda se você abrir um jar que é montado pelo springbuth ele mudou a estrutura do já lá dentro ele tem uma classe que chama E aí essa classe ela ela quando é inicializado um já ela entra dentro do próprio Jar e pega os arquivos que ela trouxe como dependência que estão lá dentro então dentro do seu ponto já tem outros jarres né E todo o controle desse fluxo de inicialização ele também pegou a reboque a capacidade de ciclo de vida a gestão de ciclo de vida dos objetos o Spring E aí eu tô falando de Spring não tô falando de spring boot tá e depois a gente volta um pouquinho nisso aqui também mas o splique ele quando ele trouxe a gestão de dependências Ele trouxe um ciclo de vida para inicialização do dos bens Então você tem lá no passado aquele XML né extremamente nervoso lá no Java 1.4 que não existia notation mas mas assim vamos pensar que lá em 2003 né você não tinha anotação o conceito de anotação programação ele entrar é orientadas aspectos tava em desenvolvimento então que tinha era o XML logo na versão 1.5 quando quando vieram as anotações aí o Spring também se modernizou e começou a olhar para isso mas o ponto é o Spring ele tem ali um ciclo de inicialização dos bens né que faz o controle de do como das factores da criação dos objetos para poder depois fazer a injeção controlar transação e até chegar no ponto que é muito bonito do Spring que são que é a orientação aspectos né ele faz todo esse controle aí que que o springbuth fez Ele olhou para isso e colocou no Jarvis uma capacidade de se tornar inciáveis que é o tal do Spring boot Starter E aí acabou bicho porque aí você consegue trazer as capacidades que a gente acabou de falar aqui de inicialização de servidor em Bad Então você não sabe o que que tem por trás do Spring boot Starter web então até para deixar mais claro para quem não conhece ainda muito bem o Framework tá eu tenho a minha alimentação até o ponto eu vou ficar vendido aqui com vocês mas até o start acho que eu conheço Então quando você traz lá por exemplo você declara essa dependência desse Starter E dentro dele ele tem biblioteca das libbs não é isso ele gerencia dentro de desses próprios pacotes esses agrupamentos na verdade por exemplo não são necessariamente
contemplação tipo assim a é a versão final de várias boas ideias que foram acumuladas no decorrer dos anos eu para o pessoal que é mais novinho talvez tenha começado agora todos esses problemas Eles foram resolvidos com o decorrer do tempo lá no começo era tudo uma era tudo mato era tudo uma Várzea do caramba gestão de dependência algo extremamente complexa baixava dependência que tinha dependências transitivas que a gente fala né que depende de outros produtos aí tinham dependência que concorrer uma com a outra aí chegou a ferramentas para ele dependência como maven por exemplo Breda Hoje em Dia Enfim hoje tem várias mas chegou no ponto que a gente já conseguiu ver de organização nas coisas isso do ponto de vista sei lá de organização de aplicações vamos dizer assim vamos dizer de frameworks também não já você tinha achado até SF Stuart Prime Face um caminhão aí que nem um deles era o dê força sabe aquele que você fala isso aqui é o primeiro que eu vou para fazer minha aplicação Se eu achar que tem alguma coisa em outro tinha nenhum desses assim que tinha que era muito mais estabelecido que os outros surgiu surgiu o Spring o Springer Spring sem ser boot springe o próprio Framework qual que na minha opinião é o diferencial do Spring O que é o Spring como freemore o que que a diferença do Spring mvc do springbuth explica pra galera entender o Spring ele é um conjunto de frameworks é uma família uma família de frameworks cada uma com uma tarefa diferente então Spring mvc né que é o moda e o controle por exemplo é a Spring tio winterprise Edition eu Java dois Spring é isso E aí quando a gente fala em Framework a gente fala no conjunto de ferramentas e de forma de organizar né de subir a sua aplicação que é mais ou menos produtivo enfim e atinge um certo objetivo mvc para fazer essa parte aí de aplicação web você tem espiguidade para lidar com repositores e com aplicações de banco de dados e tudo mais e no começo Principalmente eu falo muito no spring MDC por exemplo quero o o cara que se consolidou como principal Framework de aplicações web já né e para mim qual que é diferencial do Spring é a simplicidade o Spring mais do que obviamente que é um primeiro extremamente bem escrito mas ele é um conjunto de de técnicas e de pátrias que induzem você a usar boas práticas de programação Então essas coisas que o Valdir falou de injeção de de inversão de controle injeção de dependências não são ideias novas ideias que o time lá do Spring teve a ideia sempre tiveram mas que ele construiu um Framework que de fato adota atual práticas e deixa isso meio que te obriga a usar as boas práticas para poder utilizar exatamente E aí um pouco para frente disso E aí a gente começa a falar agora porque quando a gente fala que por exemplo por que que a gente tá conversando agora sobre agora não Mas recentemente né sobre micro serviços sobre aplicações automotivas porque a gente tá numa maturidade tecnológica para discutir essas coisas e para usar essas coisas 10 anos 10 anos a mais 20 anos atrás porque que a gente não tinha micro serviço quero enfiava você pensar numa aplicação que todo desenvolvedor entra na máquina e baixar a 150 Mega para subir o negócio dele fazer sentido você ter um servidor gigantesco numa máquina uma máquina queimadura que rodasse tudo mas isso meio que aconteceu com a JB né você mencionou Zé jbz aí de zoeira mas eles tinham sei lá uma prototipagem de micro serviço não era cada um só tinha uma responsabilidade mas hoje JB não hoje JB por si só ele era um componente que você tinha que implementar lá uma interface né já tá bem remote JB home aí você tinha ali uma classe que você ia receber a requisição e o objetivo da JB era conversar com o rmi era você poder ter comunicação de um servidor para outro ou até servidor ecobol essas coisas né então assim ou ele já tá bem não era para ser um micro serviço mas se assim você poderia programar ele bem pequenininho ter boas técnicas de design ali e aí você teria alguma coisa perto disso deixa eu pegar um gancho nesse nesse sentido que o Arthur acho que esse ponto fala de mim que o serviço Eu acho que o ponto observação que você quis fazer Artur é que o conceito de segregação de domínios não é novo no mix serviços né então quando você fala de do próprio JB ele já meio que pregava segregação dos domínios em vários ejbs Então você era uma boa prática você deixar isso bem dividido não necessariamente era o único serviço que talvez ele não fosse micro né E também não é JB por só não era um jar uma JB era uma classe então eu não tinha tão isoladamente assim esse domínio né tipo assim eu não tinha eles implantado no caso diferente as comunicações sendo feita por meio das interfaces tão bem definidas né vou falar uma frase bonita ele Talvez tinha o domínio segregado mas ele não era Auto contido também também ele não era completo em si próprio né que é um conceito importante na tecnologia que o serviço ele contido ele precisa se resolver sozinho morre não morre não você tinha lá o Zé Artes por exemplo que quantos reais a gente não construiu que dentro do ar tinha 35 e JB entendeu Então nesse ponto assim a gente tava amadurecendo a ideia né de modularização outro dia eu tava não podcast super legal eu esqueci o nome é sobre esse é fenomenal mas é sobre engenho de software de uma faculdade acho que lá da do Sul não sei se a PUC PUC do Rio Grande do Sul eu sei que é um podcast assim fenomenal eu vou depois eu vou te mandar o link para você postar aqui né E aí ele tava falando sobre higiene de software e tava falando sobre modularização de software e aí ele tá falando sobre um artigo do cara chamado parnas acho que é parnas E aí ele tava falando sobre Porque que a gente modulariza software Quais são os critérios que a gente utiliza para moralizar software então a gente volta a falar do do DDD né que você comentou agora só que lá eu achei legal um ponto que ele colocou que é o seguinte você mudariza software por critérios que você precisa para manter o seu software com qualidade Às vezes você precisa de flexibilidade isolamentos nesse alto contido que você falou só que se eu precisar de performance e eu precisar de tudo rodando ali muito próximo né então você vai fazendo seus três offs aí então voltando lá para o estado da JB né assim ele é uma tecnologia que a gente fez muito para poder ter computação distribuída acho que foi ali que o Java tentou é atender né E aí tem um monte de característica não funcional então o que que você tinha ligado da JB transação transação do JTA né coisa mais linda que tem eu acho que o que quebrou esse paradigma que infelizmente a gente se modernizou E chegou a ter aplicações como a gente tem hoje foi o resto sim porque antes a gente tinha o conceito de computação distribuída que é o mesmo conceito que a gente usa hoje comigo serviços e Web Services só que eles eram numa outra uma camada interna do software Então eu tinha um software único né um software rodando numa plataforma e ele estava internamente distribuído através de Mi e etc O que aconteceu com com Rust é que eu isolei o software e me comunico agora na camada de rede na camada do de http né então eu não deixo de pensar também olha então que eu acho por exemplo o primeiro que dê for para Java de fato também tirou javas de uma possível obsolescência né de não ser mais uma linguagem que a gente utilizaria hoje em dia porque não não se atenderia a as tendências de mercado e muito disso deveu a adoção e a evolução de outras linguagens também você vê as coisas sendo feitas em node em pytho que a gente estava falando aqui antes e tudo mais porque para mim também tem muito envolve muita questão de Cultura muda muito porque pelo menos na época que eu trabalhava com esse tipo de aplicação né porque a gente Firme em produção e não usa Ton Card é tão enquete né servidor de produção Não tem não tem uma empresa por trás vai garantir né era o que se falava a gente usa a gente se fala muito isso a gente usa a grandes servidores Eles são robustos de robusta agora com você que tá vendo esse podcast da hora tá vendo um monte de problema aqui que a gente está colocando né e Quer uma ajuda aí na sua empresa faz o seguinte entra no site aqui da VM Bass que a gente pode te ajudar vem-me versus nós somos uma empresa relacionada à arquitetura de soluções a modernizações de aplicações também atuamos na frente devops para ajudar vocês a serem extremamente ágeis então dá uma olhada no nosso site que vai estar aqui embaixo.io e lá você vai poder ver um pouquinho da nossa história do nosso profissionais e aproveitando se você for um profissional da área de tecnologia e tá afim de trabalhar numa empresa legal monte de colega a gente boa e tecnologia de ponta manda um e-mail para pipocar@veme bass.io [Música]
vou trazer para mesa aqui um ponto que eu queria discutir com vocês que não é tão é um pouco mais conceitual executivo do que técnico como está falando agora o papel do springbuth já que você falou na modernização do Java na sobrevivência do Java como vocês vêm a o empurrão que o springbuth deu na adoção e talvez a arquitetura padrão para arquitetura de micro serviços porque eu acho que o springboot da forma como ele é auto contido inicializável e gerenciável com resolução das dependências etc ele é o casamento perfeito com quanto a indenização você faz aquela o Build do springbuth junto com Build de uma imagem docker cara é uma simbiose linda né e o quanto será que isso de fato influenciou em a gente ter um ambiente corporativamente né Não tô falando em computação experimental ou computação entusiasta mas corporativamente a gente passar a ter ambientes de coobernetes e de containers de fato rodando em produção né e enquanto isso ajudou a deslanchar de fato o uso da containerização para produção dentro da mente corporativa e outro ponto também complementando esse daí que você falou acho que a gente tem vai discutir também é o Spring Framework por trás desse springbuti Springfield eles não foram não foram feitos para Cloud logo de cara mas eles são feitos assim para funcionar muito bem na Cloud e a relação de conterização né Valdir tipo que você pode falar sobre isso tem alguma coisa então esse cara ele quer uma pauta a ideia que eu ia falar da contabilização e depois falar de aplicação claudionative então eu vou até vou voltar depois eu vou voltar vou voltar para você poder limpar a frente depois mas legal então a gente tava aqui né falando do do Spring aí você contextualizou né que o Framework Springer a família Spring e Poxa quem quem já ouviu falar do Netflix o ss a primeira versão do mundo Cláudio né então foi um componente uma evolução do mundo Spring junto com a Cláudia da WS que é onde rodava o o Netflix né E foi criado um conjunto de componentes para você ter a contação distribuída que a gente tinha no mundo j.e só que também com o mundo Cloud né então você tinha lá o eurica para poder fazer um uma centralização do serviços que estavam de pé você tinha coberta de serviço exato você tinha o spring spring good Starter para subir só que você tava usando ali para se comunicar com outros micro serviços você usava o reebom para fazer ali a camada de encontrar né o serviço que seja balance né no spring o Netflix é o tipo bisavô do estilo ele é o bisavó de tudo né assim porque ele era uma Cláudia todinha sozinha com Spring boot a Netflix ela subir e descer a máquina ela tinha lá o restrix que ficava entendendo o que tava de pé o que não tava que tava funcionando ou não e ela tava triste era o circuit Breaker exato e ela tava e ela tava fazendo no circuit Break e ela tava pegando informações para poder disparar comandos para subir e descer máquina e tudo isso gerido ali no mundo de só que meu Deus do céu é uma programação que para nós é muito difícil fazer né Você tem um monte de gente saindo da faculdade o mercado aí aquecido para caramba como é que você é mantém tudo isso né então o que que a gente fez né O que que o mercado fez o Spring Ele nasceu em 2004 o springbuth ele começou ensaiar em 2014 foi quando container também começou a ficar bala né então assim por mais que você tinha ali o Netflix 2013 2012 contando essa pergunta né container no mundo Cubra ele veio olhando para tudo isso que a gente tava tava vivendo no mundo de programação né falando bom tem muita coisa que vocês fazem que é ótima só que deveria ter na camada de infraestrutura E aí exatamente deu o passo por uma Cláudia 2.0 E aí trouxe o mundo de container E aí você conseguiu emagrecer de novo as suas aplicações e começar a fortalecer a infraestrutura Esse é meu ponto de vista assim né que eu não faz sentido nunca tinha para pensar por esse lado né porque os conceitos nasceram na camada de software exato e depois você absorveu isso como uma plataforma de orquestração de containers etc e levando essas fitness para própria para a própria camada de de orquestração como isto que eu falei né você já tem isso certo Discovery etc não sei qual é a palavra pessoal profissional que você integra melhor os times de software e de infraestrutura a gente estava discutindo um pouco antes aqui né off mas a arquiteto arquiteto de infraestrutura arquiteto de dados arquiteto de soluções antigamente isso não existia essas divisões arquiteto mas o cara que tinha que começava lá no pensando como é que uma aplicação ia ser modularizada e tinha que chegar até o fim porque porque você não era a pessoa Talvez especializado em infraestrutura tinha que entender como funcionamento estrutura Porque como é que como é que um administrador de rede um cara que é especializado em sistema operacional vai configurar um servidor de aplicações com todas as nuances de uma época que existiu E aí eu acho que essa questão de contenização
da vida que a gente começou a entender que essas essas áreas assim como sofre como a gente parou de dividir softwares em camadas e começou a dividir em domínios as a própria infraestrutura também né a própria arquitetura também não é mais dividida em camadas era dividida em esferas por mais que tenha essas esferas se tenha camadas né fazendo alguns Alguns multiversos em si mesmo né que é muito melhor de você gerenciar e ter múltiplas equipes trabalhando etc e é legal quando a gente fala disso porque tudo faz sentido né porque se você olhar para o outro lado a própria metodologia de software também evoluiu nesse sentido de você ter a separação por domínios trabalhando de forma separadas e a tecnologia foi acompanhando toda essa transformação do mundo de tecnologia né Isso é muito louco né ser velho e acompanhar como que isso foi foi na linha do tempo uma vez tira o sarro de mim né ele tava eu era estagiário eu tava com 17 anos isso em 1942 não foi em 2005 Valdir mas eu fico com o Arthur velho
é que o Valdir quando ele tinha 12 anos ele tinha 1,82 m e 72 kg mas o cara chegou assim para mim e falou Pô meu eu tenho dó de você porque você estagiar foi quando eu comecei ele falou assim né pô quando eu comecei a planejava tinha cinco pacotes bicho Java e eu já avalanche mas os dois lá né aí naquela época já tava lançando já cinco e tal né e [ __ ] aí tinha um pacote para [ __ ] e tal as coisas de tread já tava muito mais facilidade ele falou pô você tem muita coisa para aprender né E hoje cara [ __ ] mas pô hoje cara o que esse tempo aprendendo é o quantidade de Framework tem pô eu tava falando em 2005 né pô é o melhor o melhor frame que a gente tinha de camada de visão naquela época era o estresse um então para fazer viu era usava o tyles voltar no ponto que o que o Johnny falou de dar uma sobrevida para o Java mas o nome springa disso você sabia em 2004 os caras olharam pro ji e falou fodeu que inverno é esse sério é sério faz todo sentido então eles falaram bom eu vou eles fala tá lá na página do Spring né se você for ver da onde que veio o nome ele fala aí pô você tinha um grande inverno que era o j e E aí ele tava lançando um frame aqui novo né o Rod Johnson e o Wagner eu esqueci o primeiro nome do cara é esses dois caras né Geniais eles falou bom vamos lançar um frame aqui que vai ser a primavera né para quem programa Java E daí que nasceu o nome Spring e justamente isso cara e vou te falar mais tá o ji teve o papel fundamental porque enquanto ele tava preocupado nas grandes corporações que precisava de alguma coisa rápido o Spring teve tempo de amadurecer e crescer direito crescer olhando para para o que tinha de melhor né E ter mais flexibilidade para mudar querendo ou não Java cara por quantas empresas não pagavam grana demais né para ter uma máquina sã para ter o servidor lá rodando e precisava de uma estabilidade ferrada né é com pouca flexibilidade né cara sim porque o ponto do que me fez refletir aqui pelo Junior falou que nessa época que a gente fala de estresse JSF etc que começou de fato ter aplicações mais parrudas para web né que a gente começou a ter aplicações web mas que não eram só sites estáticos né tinham aplicações de fato rodando na web cara tinha outras linguagens que fazia uma forma muito mais simples muito mais versátil o próprio PHP que a gente tira sarro ele é muito bom ele é na época cara você falar que você ia fazer uma aplicação web com JSF ou struts e tinha um cara PHP do outro lado o cara fazia em 5 minutos o que você ia demorar uma eternidade para ir até que subir mais robusta não mas por que era mais robusta agora Vou defender que você já viu o PH da pau hã 80% da internet e gestão de configuração no PHP Você joga lá o arquivo no servidor meu tá funcionando Qual que é a versão que tá lá rodando Ah não sei arquivo tal de um Como é o nome daquele você não mantém e são são desculpas mas são disciplinas que o Java te ajuda a manter né E aí a gente tá falando também dos outros frames né então a gente falou muito design pátions pô Spring vem pra aqui ele tem toda essa questão de contratos em função dos design parkins que ele já traz ali embutido para você né tem um ponto interessante também né que eu falei né que a gente essa não é porque ninguém nunca pensou nisso antes né mas essa evolução de especificação essa evolução tecnológica acompanha a evolução de hardware evolução de mindset e também a evolução dos nossos próprios consumidores velho hoje em dia o cara tem ele tem expectativas diferentes de uma aplicação do Cristiano antes o cara que é tudo agora e tem que serformático porém Real Time que confunde muito um jogador novo né porque é Real Time mas não é online ele é assim que não conhecia ela tá pensando não funciona a gente fala muito nisso o cara ele tem você faz uma lança uma aplicação nova cara não quer saber se é só aplicação ela tem que indexar um bilhão de dados ele quer ver o que ele tá mexendo ali agora com gráfico atualizado que ele pode clicar ali e abrir um detalhe eu tenho um receio pro futuro em relação a isso porque se a gente parar para pensar friamente da evolução computacional que a gente teve para que a gente tem uma abstração no nível no spring hoje pensa pensa desde lá do começo da base a gente tem lá o interpretador tem uma sembler tem a jvm em cima a gente tem os bibliotecas do Java tem o Spin então cada vez mais a gente cresce a camada de abstração que é bom facilita o uso facilitou eu uso etc que vai abstrair cada vez mais e o poder computacional absorve que agora você roda um Spring boot tranquilamente Você tem todo esses tag de processamento que a máquina da conta beleza capacidade Beleza o que me dá medo no futuro é que Talvez um dia eu no code tão fácil o hardware evolui a tanto porque hoje o que inviabilizo no code é exatamente a quantidade de steck de abstração que você tem em cima eu vou falar uma palavra proibida aqui porque vocês arquitetos aí do Java diplomatas Engenheiros não que não gosta mais tocadas da arquitetura a última empresa que eu trabalhei o foco dela era uma consultoria que vendia softwares para diversos segmentos só tênis grandes softwares robustos desde já feito né desde com Java no back and nojo e tudo mais até sites menores onde a preocupação o foco é a experiência do cliente o foco é indexação pelo Google foco é diferente marketing não é tanto assim e aí uma das grandes Vertentes SMS e a gente fala que WordPress fala mas hoje em dia a gente fala em coisas mais modernas a gente fala em ICMS headless que você configurou um back end e você pluga Frontier que você quiser você constrói você paga uma consultoria melhor para fazer uma aplicação West next que seja excelente e o seu conteúdo ele é disponibilizado de um Epa que roda lá na Cloud e todas as empresas que você tem uma atuação maior nessa área você fala o próprio WordPress lançou um redleys Trap por exemplo uma empresa francesa tem algo muito bom outras empresas que trabalham com isso para para Marketing e o próximo passo deles porque o semestre já é um tipo de atalho né Eu acho que uma hora a gente vai evoluir para isso o questão não code né eu sei que já ele tá você falou do ministrações a gente tem né em cima do dos frames e tudo mais aí O poder computacional tá aumentando para caramba tal e por isso a gente infrimir mais abstratos né E aí Você comenta aqui o nocode vai ser isso eu acho cara que daqui a pouco quando a gente tiver boas máquinas de geração de código no código vai ser bom porque porque vai ser código né então o nosso problema é o estado da arte acho que o conceito é bom eu acho que a gente tá amadurecendo E aí a gente vai chegar lá e aí a gente vai ter outros design pátrios que as ferramentas no kodi vão ter que ensinar para os seus desenvolvedores para eles não criarem os monolitos que eles criam hoje mas isso é papo para outro para outro para outro podcast e provavelmente a gente já vai estar mais programando nessa época a gente não vai precisar participar disso O problema é que na hora que dá pau filha mas será que vai pessoal porque por exemplo não mas quando dá quando você dá um problema por exemplo vou fazer o paralelo vou usar você é Advogado do Diabo agora quando dá problema no spring você não tem que resolver lá dentro da implementação dele do Springer dependendo como for você tem que dar um abrir um bug lá da sei lá mas você não precisa entrar lá mas é mais uma questão da maturidade do Framework Então mas aí quando for uma plataforma no culto você vai abrir um ticket na plataforma quando a gente era desenvolvedor ainda os dois inclusive no mesmo time a gente entrou para um time velho que tava com um desafio absurdo ela construiu um milhão de de processamentos lá de aplicações na época a gente não sabia que era isso ainda né mas aplicações Auto contidas que vão rodar cada uma por si e a gente tava tipo assim com o estado atual do Da Nossa Arte era entregar uma aplicação dessa cara três meses a gente cumpriu três pessoas né com três pessoas verdade vai cumpriu lá em cada uma tinha que entregar um por mês a gente falou isso aqui do jeito que tá e já utilizava algumas coisas de spring mas Spring 2 muito mal feita ainda e a gente vai ter que surgir a gente vai ter que arrumar o esquema montar um Framework nosso de Fato né a gente de fato criou e eu puxei esse gancho agora porque porque cara tem até hoje lá se a gente for nessa companhia que eu não vou nomear aqui tem código lá meu inclusive dentro da de tipo assim de sobre escrever classe naquela época do Spring porque não funcionava era assim não funcionava da forma que nós queríamos né Não esse caso esse caso é no caso de de compatibilidade mas eu podia é que na época era um jovem ainda né podia ter aberto né mas era que o Spring Bad não tinha uma compatibilidade três que era a versão que era para ser utilizada mas cara acontece aí eu acho que o Framework em si o melhor que a gente traz é justamente o nível de maturidade que ele que ele alcança para você confiar mais nele inclusive até para você poder saber onde você pode criticá-lo pode ali fazer uma alteração né cara você fazer essas críticas a plataformas rodando com esse velho pode vir aqui ó segunda melhor não falar o nome senão os cara vão olhar lá e aí vamos falar que tá dando pau agora Mas voltando para o Spring cara uma coisa que eu achei uma certa hipocrisia de vocês já viram eles falarem mal do PHP quando a primeira vez que eu tive contato com Spring foi springite a lazer nossa senhora fala mal do PHP velho eu tô com um negócio mas que dá uma mão na roda ali para molecada o objetivo do Springer é produtividade cara porque Qual que é o lance do springbutios além de todas as convenções e boas práticas os caras querem que vocês se foque em codificar o negócio cara eu quero codar o produto que eu preciso entregar eu não quero ficar acordando XML de configuração quero ficar concordo mas não fala mal do PHP então não cara aí beleza você já tem uma plataforma fornecida pela própria Spring que te fornece um serviço com esqueleto prontíssimo para rodar do jeito que você baixar o ponto Zip lá que é o que acontece ele já vai rodar E aí se você colocar uma dependência mais ele já vai subir com servidor de aplicação agora beleza Qual a diferença disso Por ignorância do mavin site do Meio me faz Exatamente isso certo mas tem interface
o bagulho vai eu quero deixa eu ver o que que eu quero eu quero vocês quiserem Então front-endi porque isso ficou bonito Mas a gente não eu pelo menos eu não sou pegar p não a não ser de amor tipo você pega pelo Aquaman do fundo da programação velho a gente usou porque a gente gosta mas é verdade não dá para perder o meme desape entendeu Inclusive eu nunca trabalhei profissionalmente com PHP mas sei lá tipo quando eu tava jogando técnico né primeiro livro que eu li foi faço um site em Aspen 7 dias joguei fora e faça o site pegar a pensa Eu terminei de pegar em 7 dias [ __ ] pega a pele linda aí com esse Java Java porque me emocionando já era difícil não adianta a gente aqui também querer dourar pila Java difícil não sei que lá japa mano prova de já você vai vai ensinando para alguém igual você dá a prova estatística você começa na média ensinando o peso aí você vai dar uma prova para o cara você enche a lousa assim a gente conta quando ele fazer né você vai falar de orientação objeto né imagina que em vez de você escrever um cachorrinho clássico animal a Estância é essa aí chega lá na praça animal qual a diferença entre uma classe abstrata e onde você usa uma interface deixaram louco lá fala de polimorfismo quero falar com você agora que ainda não conhece a Clever Kleber é 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 Kleber vai conhecer os caras é clever.io estão contratando também pessoal para trabalhar com cripto com blockchain então se você tem interesse se você tem com respeito nessa área procura Cléber se você gosta de criptomoedas se você opera no mercado você precisa conhecer a Cléber precisa conhecer as soluções da Kleber então o endereço tá aqui embaixo no vídeo para quem não tá no YouTube é cléver.io Vai lá vai conhecer que realmente é o mercado sensacional [Música] Eu acho que eu já falei no outro no outro Episódio sobre Java mas eu fui obrigado Claro que foi obrigado a prender já na faculdade inclusive meu professor que foi meu orientador depois já veio aqui no podcast e ele era professor de Java eu era revoltadíssimo com Java Velho e na época a gente era na faz um tempinho já né na faculdade o estado da arte era já era Mi por exemplo né que você tinha que fazer chamada remota e tal e agora acorda velho já tá já estava bom já era alguma coisa né e cara eu nunca gostei nunca gostei aí eu fui e nunca me interessei também sempre na época eu trabalhava com um pai e tal esqueci o outro nome da linguagem que a gente fazia eu tô ficando eu não lembro o nome velho Tente fazer a programação para web eu tenho o áspe tem o fecharp era mais moderninha da época [Música] declarativo para Java
e tinha uma que começava com C não começou com P essa
eu vou lembrar
a gente escrevia muita coisa antes em Java e Pô hoje desculpa de cortar mas só para terminar porque aí você complementando nesse ponto eu não gostava eu fui obrigado a planejava por causa do Android que Android minhas versões era soja e aí eu comecei pô vou ter que aprender nesse bagulho eu eu hoje eu sou da minha história né mas o principal crítica era verbosidade do Java E aí quando eu comecei a conhecer as ideias que tipo já o código para você aí eu falei [ __ ] por que que põe todo esse monte de texto Então se a própria ideia cria o texto e hoje a gente chegou no ponto de que os próprios frameworks Então se tem um lomboque lá por exemplo um box gera para você tudo que é código bailer Plate né os gather etc Gold aí você tem lá o springbutida data né então você não tem mais nem código de implementação da tua classe de acesso ao banco pelo nome do método o Spring identifica para você a consulta que vai ser feita e ele te dá o retorno cara E aí você fala para ele [ __ ] mas eu tô acessando aqui o órgão beleza bota lá um JPA é repositor Ah mas agora tô acessando data Store Ah então coloca lá o data de Store uma interface de extensão ali para tua para o teu repositor Cara você não se inscreve código você fica tudo na base da interface E aí é Ainda por cima você tá dando Você tá criando aquela do sólido tem aquele princípio que você tem que usar sempre interface que é um nome é o l acho do do sódio não é o interface então ele já te ajuda até fazer isso né pô você vai você escreve lá o nome do método find pai nome é Order by as que nome acho que né E aí você coloca lá o parâmetro nome e depois você passa assim ó peixe page Ball e você passa o parâmetro que vai indicar patinação da consulta Cara você não escreveu nada de código e fez tudo para você então essa parada do orientação aspectos Eu acho que o Spring veio meu destruindo cara Acho que mais um passo à frente já é orientação sim sim você tem razão então assim a orientação aspectos né que ele ele trouxe né Toda essa questão de Poxa pega lá o a característica da Classe A aí olha a convenção que está sendo colocada a convenção não deu certo aí ele te dá a possibilidade da extensão põe uma roupa Claire em cima e aí você vai lá e escreve JPA sabe eu acho que isso essa questão do do dos notations por fora para [ __ ] do Java tem outras linguagens também que quero que você falou paradigma de orientação aspectos né e mas cara eu acho muito [ __ ] como essa questão da programação orientada convenção ganhou tanta força agora E era uma coisa que era meio subestimada na nossa época de jovens por exemplo eu lembro que na época que o desenvolvia para web nessa outra linguagem que eu não consigo lembrar o nome Já faz um tempinho eu lembro porque lá é cheio de convenção você criava as coisinhas nas pastas certo os nomes e tal e aí é exatamente é exatamente isso que eu ia te falar você consegue criar por convenção você põe os nomes das pastas etc acesso ao banco de dados você definir o tipo e já definia por exemplo o campo com a variável de acordo com a convenção do nome ele já fazia o mapeamento já fazia a persistência no lugar correto tudo por convenção de nome convenção de característica do projeto né só que isso cara nessa época era colocar com frágil né e o Spring que vocês estão colocando aqui deu uma força mas por que que era frágil porque você não sabia que ia dar pau até rodar certo o Spring na hora de inicialização ele já consegue te falar pô meu bota direito o nome do seu meta aí porque não tá batendo com o nome do teu Bin então de fato lá era frágil e aqui o que que o Spring fez ele fez uma máquina que interpreta essas características né e indica uma possível Ajuste o Spring indica na inicialização dependência cíclica entre os bens e ele ainda te ajuda a resolver pô e aí você quer fazer o quê Bota um laser aqui ou não aí a molecada não funciona [Risadas] nada eu sou fã inglês
explicando a piada né geralmente quando tem uma referência ciclo aí te ajudar porque ele acha que você não errou ou que você não errou muito ele fala mano Às vezes aqui o cara colocar um negócio ele consiga recarregar depois não geralmente você fez merda mesmo e você coloca laser não resolve e a [ __ ] cagada mesmo [ __ ] você pode fazer tanta merda que ele não deixa subir e fala você não pode fazer isso amigão Amigão faz direito aí antes de lançar então [ __ ] e eles estão o que que eles estão querendo fazer né tô louco para ver isso rodando de verdade assim né Daqui a pouco vai sair é tudo isso toda essa inteligência de analisar o código tá em tempo de Build E aí você vai ganhar muito no Startup ali da aplicação mas só que tem muito frame a diferença de você comparar o Spring a família Spring com outros filmes que estão nascendo agora é que [ __ ] você tem um legado gigantesco para trabalhar e os outros não tem né então acho que esse pulo do gato aí vai vir inclusive para ganhar força com quartos tudo mais né e a gente poder ter uma aplicação voadoras que eu faço Wellington lá eu acho que Spring é um Framework muito melhor inclusive porque ele é em Java porque Java tem as suas deficiências que espreguiça não muito bem e nesse ponto aí é uma questão de comparar né um micro serviço escrito em Flash ela tem que comprar pelo que eles são né e o Spring E aí não dá para não deixar de Comparar as linguagens né já vai ter muitas falhas muita coisa que é complexa às vezes que por causa por causa normal não deveria ser tão complexo assim a gente tentou fazer uma versão do C plus por exemplo mais simplificada mas que tem umas falhas que a gente não consegue cobrir e o bom E aí falou muito bem né que o tempo para amadurecer ele conseguiu crescer em cima desses pontos né então por exemplo por que que o border playlist no spring é mais confiável que outras linguagens ele gera de fato aquele código anterior aquele você tinha que escrever o dia inteiro lá colocar o tio string o resto code o canal A4 hoje em dia você não escreve mais você coloca as anotações Mas ele já era e gerando aquelas transações ele consegue colocar aquilo no interpretador para saber se você tá fazendo uma má implementação de fato Então acho que o primeiro jogo é muito ponto por isso e as soluções finais quando a gente vai adotar de fato tem que ser pesado daí já falando como pessoas né que são agnósticas né É legal você fala disso pra gente falar até a gente brinca aqui pessoal com linguagem e tal mas aqui é todo mundo arquiteto profissional sabe utilizar a melhor ferramenta para melhor finalidade né Eu tava vendo um comparativo de sobre web service e alguns comparativos de Java com Spring boot e um outro primo que não era o flash mas é um outro frame tem uma crítica muito grande ele ser lento na média porque ele é interpretado em tempo de runtime não tem dinheiro não tem build o Javan time 100% e não tem tempo de build como se você se tornou não tem um Bart code e cara as duas curvas são muito diferentes o pai tão para uma quantidade de requisições mais intervaladas e menores até um determinado Trash ele responde mais rápido do que o Java ele é mais versátil ele responde mais rápido quando você senta o pau no serviço ele começa a dar muito mais delay e o Java começa a performar mais e responder melhor sobre pressão isso é muito louco então se você tem um serviço com pouca demanda provavelmente uma linguagem mais leve interpretada como node o Python etc ele pode atender melhor você tem uma flexibilidade maior você vai subir ele mais rápido ele vai responder rápido para poucos requisições mas quando você escala de fato essas linguagens interpretadas na média o tempo sobe e o Java por ter o Battle code ele começa a responder cada vez mais rápido eu acho muito louco esse tipo se eu achar esse estudo eu vou botar o gráfico aqui nessa daqui na descrição que todo mundo fala muitos anos né O Segredo do Java é a jvm cara já tá vendo ela ela evolui demais a grande diferença você pega aí das outras tecnologias né que estão ficando legadas e o Java é que cara tudo que você escreve lá que é ponto Java meu você compila com a versão nova da JB pronto resolve muito dos problemas teve programas que eu tava rodando com a versão 1.8 da jvm pode passar para um ponto para 11 já diminuiu a inicialização em 70% sabe eu tinha uma aplicação que tava subindo em 120 segundos que era grande e Ray permite arregaça também viu na hora de subir ali eu quero fazer um episódio um dia frente de malhar o pau no riverdate ele é bom para [ __ ] é ruim é quem não sabe usar Ixi já não me chama que cresce muito na jvm que dá esse tune aí cara ele arrebenta quando ele começa a receber tanta requisição assim tanto processo ali entre ação ali para valer E daí que a gente fala né [ __ ] foi construído né já tá vindo foi construída Para para tudo isso né para estar numa situação mais fácil a situação um pouco mais difícil a situação de Alta alta pressão né quando a gente fala em frameworks né popularidade é um benefício melhor ele é porque ele tem mais comunidade ele tem um alcance maior você acha mais fácil as coisas mais bem documentado agora voltando e a documentação do Spring você pegou num ponto Agora que é fenomenal cara não tem Framework que é tão bom na documentação contra Spring cara eu vou dar um testemunho e depois fazer uma pergunta para vocês de ter um pastor eu tenho testemunho a gente faz um livramento o pastor Evangelista do springbird tá na minha frente Os dois mas eu vou não Eu mesmo não sendo especialista em Java e nunca tinha programado Nunca tinha usado nada de spring uma vez no meu trabalho anterior como arquiteto vindo do pai do do das linguagens alternativas o desenvolvedor simplesmente não entregou sumiu morreu alguém tinha que entregar o serviço
mais besta sempre o cara que tem que resolver cara realmente você falou da documentação eu com água pouco experiência de Java que tinha né claro não sou imbecil sem programar entrei lá na documentação do Spring cara de subir um serviço tipo em quatro cinco horas numa noite com autenticação Alf com mapeamento com JPA no banco de dados autentica autenticado e corretor Claro filtro simples ali rest mas cara Realmente é muito simples é muito rápido a documentação ela ela ajuda muito você no quick start ali usei a laser tempo configurando tipo cara e sem brincadeira foi Claro um serviço muito simples pouca regra de negócio mas cara em quatro horas ele estava no ar foi foi relativamente Rápido foi bem rápido sabe e o que eu queria passar para vocês aqui é voltando especificamente por Spring as características que ele tem que tornam ele tão tão particular né eu vou citar uma e queria que vocês colocassem outros pontos que que vocês acham que que o Spring trouxe de diferente de efetivo né um deles que a gente tinha como fazer antes em outras a gente tem inclusive em outras linguagens mas não de uma forma tão abstrata e tão bonita talvez são os atuaitos do Spring queria que vocês comentassem um pouco dos atores e falassem de outras características que a gente tem em torno de prender então populares né ele ele é nada mais nada menos que um boot Starter então ele lá atrás no começo da nossa conversa a gente falar um pouquinho como é que o Gerson inicializados e o legal do acto era o seguinte Ele olha para os bins que estão disponíveis no application context e fala hum esse vinho aqui ah é um data Store deixa eu pegar ele aqui ah esse Binho aqui se vim aqui é um é um s controlar deixa eu pegar ele aqui e ele olha para o que que você quer cerveja né sem vergonha Ele olha para os bins que estão no Class lolder eu não aplacation context organiza eles e dá para você informações de utilização então se você pegar um Spring boot de pé e bater a barra Twitter ele tiver liberado né porque você consegue ali liberar ou não Quais características que você quer você consegue ganhar essa URL aqui ela tá sendo acionada 500 vezes por segundo é por minuto ele faz para você e você não precisa fazer programar nada o Akita já já vale isso para você poxa essa se pode aqui também estranho esse container tá meio estranho sei lá coloca um barra logs Puff você já tá vendo log Ah você você consegue pegar a um hip da memória é um dump da memória pelo actreator ele te dá isso né a gente sabe também que é muito usado para porque ir pra Live do do coberto é esse é o mais comum né eu tô indo pelas beiradas aí né o do réu é impressionante porque o help além dele falar tô de pé eu não tô de pé automaticamente ele verifica os tipos de recursos que você tem dentro do seu container e quando ele e ele faz uma agregação eu estou de pé se todos os recursos que eu preciso estão de pé também então se o banco tiver fora se você tiver três bancos na sua aplicação hora com um post ele um dv2 um dos dois não tiver não tiver Ok ele vai retornar falso sozinho e ele te dá a possibilidade de configurar a exceção eu quero que você tirar curso quero que ser aquele outro recurso fazer uma pergunta que aí já vai além da minha experiência de com springboot eu consigo fazer uma sobrecarga de um comércio por exemplo de um eu quero fazer um help e eu tenho uma regra específica que eu quero declarar aquele serviço como um Health se uma pi que o consumo e não tiver no ar por exemplo o grande faça uma sobrecarga para fazer o sei lá então você não faz uma sobrecarga Você lança um bim no application context do tipo específico do réu né E aí o Spring vai saber vai ser bem aqui é um mim que eu tenho que interpretar é que colocar junto do meu da minha lista de twitters aí ele coloca programação orientada convenção ele sabe uma outra já puxa no gancho tem uma outra característica muito interessante porque eles sozinho faz muita coisa mas ele também tem aceita várias outras frameworks também que fazem outras coisas e ter mesmo tem vários módulos Diferentes né e uma característica que eu acho que é relativamente recente programação é a programação não sei se tem o nome orientado a modelo mas os Nicks então por exemplo você você a sua aplicação é uma aplicação convencional sem autenticação Aí você coloca o Spring Security você não precisa escrever uma linha de código para os recursos desativado por quê Porque ele já carrega Bins com configuração para fazer aquilo para você e daí como é que você configura a sua autenticação você sobrepõe sobre escreve ou sobrecarrega métodos específicos que você precisa alterar então você não precisa fazer desde o começo nem copiar de uma página na internet uma configuração enorme você coloca Às vezes precisa você coloca assim você coloca por exemplo você quer usar o JPA base você coloca ele lá ele funciona eu preciso sei lá mano eu tô usando JP mas a minha base aqui é uma base com um driver diferente você vai lá tem o Bim lá financiar você sobrescreve geralmente ele já te dá algumas opções configuráveis por fábrica que você não precisa nem sobre escrever que você pode simplesmente citar por exemplo variáveis lá no application proped seu arquivo de propriedades para definir mas tudo que geralmente lança-se do Spring já tem uma versão de folha e às vezes três quatro cinco versões até a gente tá falando muito aqui em aplication contrach no fim das contas ele lida para você com toda a questão de ciclo de vida e de distância ação né e consequentemente injeção de dependência entre os seus componentes a partir do momento que você marca um componente como serviço como repositor e como configuração ele sabe que a gente fala ele carrega aquele componente a memória para você utilizar aquele componente em outro lugar onde ele vai se utilizar de fato simplesmente escreve o nome dele acabou em porte exato Acabou acabou distanciar aquele tipo lá do pacote a gente chama de auto né anotação é autoarte você coloca lá em cima e aí se você usou o lombok Hoje você nem precisa colocar uma anotação nenhuma você coloca lá aquela variável como final o lombok já vai criar aquela aquela Construtor daquela classe como qualquer com aquelas variáveis que você colocou como final e o Spring vai saber hum ele esse bim precisa desses outros bens para viver então ele já organiza a inicialização dos bens para para fazer isso como você fala então de distanciar esse cara tipo eu não preciso ir lá dar um New naquele cara você não deve fazer isso se você fizer isso você mata toda a configuração que ele fez porque o springbuti ele é o opinativo não preciso mais aprender orientação objeto precisa dar 1000 mais na [ __ ] da Estância Velha precisa porque você precisa saber como a inversão de independência funciona Nutella pra [ __ ] é porque assim ele é o alternativo né ele a partir do momento que você traz um componente do springbut para sua aplicação ela te sugere a melhor forma possível para você utilizar ele se você precisar sobre escrever você pode fazer mas eles bem que vai te forçar ainda então um exemplo se você for usar um haste template da vida que infelizmente vai ser descontinuado mas é isso aí por padrão ele já vem configurado para você se você precisa fazer uma requisição htp partindo da sua aplicação é só você chamar ele com a independência injetada com autoire de ou com um inject no Construtor tanto faz e você vai conseguir utilizar se você der um New No resto template você vai ter que reconfigurar todo ele bom Agora eu fiquei curioso nisso então ele meio que ele ele sobrecarrega o Construtor da tua classe para poder fazer isso por trás mas você não eu fiquei curioso saber como funciona numa classe que você está fazendo isso Para um objeto chegar já instanciado com essa dependência para lá ele tem que pelo menos por trás fazer a sobrecarga do teu próprio Construtor e isso vamos lá vamos chegar lá então é isso aí ó se você não pode ter os ninho no meio da sua classe por quê Porque quando você faz isso está objetivamente né criando uma Instância e você não quer isso quando você tá no mundo de gestão de dependências né de injeção de dependências você quer que o seu controlador de dependências gerencia o ciclo de vida dos seus objetos Mas beleza eu tô aqui em cima na camada de Framework pera aí vamos chegar na jvm significa que o senhor que já me deu esses objetos distanciados Aonde então eles são instanciados no começo da sua aplicação quando você dá um Java menos já lá na linha de comando você utiliza uma classe A gente chama essa classe de geralmente é apliquetion ou Bananinha application e é como classe e essa classe vem correto no meio e ela tem uma anotação mágica chama arroba springbutt application essa anotação é muito importante porque quando você compila uma aplicação Spring boot lá no seu pão você tem um plugin chamado springbuth meio em plugin Então esse esse componente ali no momento que tá compilando as classes ele vai identificar Poxa essa classe aqui é a classe inicial da minha aplicação beleza Ele registrou isso ali na no jar que saiu tá então tudo bem então inicializou já ele já sabe qual classe ele vai iniciar E aí ele vai fazer o que ele vai começar a rodar o gerenciador de bins do Spring esse gerenciador de bins ele tem um ciclo de vida que ele respeita primeira coisa que ele faz ele varre todas as classes do teu do teu jar tá ele vai os jaz que estão dentro do seu jarles springbuti também procurando arquivos chamado spring.factory esse arquivo ele tem uma classe lá dentro geralmente são essas classes que inicializam essas coisas que o Arthur e o Johnny tava falando tudo isso para ele fazer a primeira parte do ciclo de vida do gerenciador de dependência que é isso que você estava perguntando Vamos criar todos os bens nessa hora ele criou um mapa na memória tem o Bim a b e c bndf e ele cria também a relação entre esses bens eu não comentei aqui no começo mas bem é uma classe que tem um comportamento seja ele qual for distanciado não instanciado o Binho ele já distanciado é o objeto é o objeto perfeito então um Spring nesse primeiro momento ele criou esse mapa sabendo o que que depende do que então ele sabe posso iniciar a criação dos meus bens a partir do Bim f porque o bf não tem dependência é o primeiro não e aí ele começa bem em F que que você precisa nada então tá bom então ele vai lá e fala bom bem F tá criado e aí o que eu chamei de application né Ele é como se fosse um uma grande nuvem que você vai tá achando bolinhas lá nessa nuvem uma grande árvore que você vai estar achando as bolinhas né O Edgar é bom de de analogia eu provavelmente ele ia falar é a árvore de natal e cada bim é uma é um enfeite de Natal então tá bom então você tem lá o teu application em conta isso que a tua árvore de natal e você Puff colocou a bolinha F lá aí você vai e coloca a bolinha d a bolinha D ela precisa de alguma coisa precisa ela tem uma relação Direta com a bolinha F então o Spring ele vê por meio das anotações né poxa tá aqui ó alto Wide eu preciso colocar uma referência do Bin F aqui dentro e vai lá e coloca ou como se ele citasse o fulano de tal New dentro direto aquela classe Exatamente isso Exatamente isso e às vezes ele não vê esse atuário ele vê lá que tá no construtor da classe né uma classe que para ser construída precisa desse tipo de classe ela eu tenho que injetar aquilo ali né então ele vai lá por injeta e o Spring é tão danado danadinho que ele ele também nessa avaliação ele verifica características dos métodos E aí ele cria um proxy ele cria classe em tempo de execução da classe que você criou E aí ele injeta os comportamentos dos aspectos aí a gente aí a gente começa a falar do nível Spring Master brega fenomenal né porque quando você coloca assim ah eu tenho essa classe aqui ela é um serviço né ela tem uma arroba service Lá em cima tem que gerenciar transação é nessa hora aqui da inicialização que o Spring já sabe pô isso aqui é uma classe @service mano alguém vai chamar essa classe ela vai querer gravar o bagulho no banco e aí eu preciso ter uma transação para que para que o Wellington possa fazer o trabalho dele em quatro horas apenas aí o próprio Spring estende essa classe exatamente e você não sabe disso porque porque você programou direitinho e aí você colocou as interfaces Então você tem as interfaces e as classes concretas aí o Spring faz o quê naquele Bing que tava sendo construído né no bind que precisa do bief o f é uma interface logo o Spring vai lá implementa interface SF E aí ele ele dentro dessa implementação dele ele tem uma a sua classe F né A F ímple E aí ele fica ali brincando no meio das chamadas né Então até o fim da inicialização do da tua aplicação o Spring fez o que ele inicializou todas as classes que você tinha lá dentro do seu jar então ele deixou aquela árvore bonita toda brilhante toda cheia de pisca-pisca e tal né árvore a estrelinha lá né em cima da árvore E aí ele fala bom agora a aplicação tá de pé tá então eu acabei de explicar aqui toda a gestão né da da das dependências a injeção das dependências a execução dos códigos que são criados em tempo de execução por meio de aspectos e também os por convenção né porque quando o Spring vê lá uma classe Classe A Ela depende de uma interface A exemplo do Spring data que é toda cheia de nome bonitinho que que ele fala hum essa classe aqui ela tem uma Factory por trás específica que afect lá do JPA né Aí ele fala Factor de JPA me dá uma Instância dessa interface aqui aí ele faz toda uma magia cria lá uma classe cheia de métodos né que vão ter o teu os teus as suas claires por convenção e devolve lá para tua para tua Classe A né para o teu Bin a aqui que a gente tá falando então é por isso né Por conta dessa desse dessa máquina de inicialização que a gente consegue ter toda essa magia aí que a gente fala do Spring boot porque antigamente era o pacote Espanha e cor exatamente depois na aula eu vou ter que acabar o episódio chega né Pô acabou não tem mais o que falar É uma aula acabou Depois dessa aula de como funciona o Spring obrigado quero saber eu quero saber agora [Risadas] de montagem rubro-negra balanceado é um gráfico Na verdade é um gráfico o Spring ele é tão bom e o Spring boot Spring é todo esse frame que a gente tá falando esse Pink boot é ele com esse servidor embebedado aí simplesmente já feito para funcionar na nuvem né justamente porque ele traz essa todas essas patterns mais modernos num pacote só então a gente fala em convenção por exemplo do que te ajuda bastante
entidade banana ele sabia que você quer procurar uma banana pelo id desde o ponto de se você criar o application application Class lá e não escrever mais nada ele fala bom vou deduzir que esse pacote aqui onde eu tô é meu pacote principal e todo mundo abaixo é os pacotes que eu vou silenciar tudo nele é feito por convenção essa e por isso funciona mesmo tem lá a classe de aplicações aí a gente pode entrar em outros métodos depois de profile de você poder fazer testes Nossa Spring para teste teste integrado velho tipo é uma experiência completamente diferente para quem tava acostumada a tentar fazer um teste minimamente decente monetária sempre foi razoavelmente bom em Java eu acho que de ontem serve muito bem até base para outras linguagens mas teste integral depois Spring é um negócio completamente diferente por todas essas ferramentas que você tem você poder estanciar bem consequentemente pode entrar aqui no detalhe né de como é que funciona o ciclo de vida como é que sobe esses bens você pode sobreviver Bins para determinados profiles para terminar os contextos Então você imagina o que a gente faz muito hoje inclusive onde a gente trabalha eu tenho vindo data Store que vai buscar um data Storm determinar a informação cara para teste unitário eu não quero para teste integrado eu não quero que ele vá lá eu tenho aqui um objeto aqui um mapa que eu vou subir em memória eu marco esse vinho aqui e colocar uma roupa profile louca sabe o local e quando ele sobe não precisa tirar o outro ele sabe assim se o meu bem principal é esse aqui ele tá sobre escrevendo nesse profile esse aqui vai ser meu bem então eu acho interessante né que e não só no spring mas o Spring faz isso acho que é melhor que qualquer um programação orientada mas não é não chega a ser orientar mas programar por convenção é uma ferramenta extremamente poderosa nessa questão de entendimento de core essa questão de produtividade e eu falo que a gente desculpa a gente às vezes compara muito linguagens por performance por sei lá velocidade por preço cara E no fim das contas assim tem casas que é muito relevante isso mas produtividade e a clareza com que você escreve um código ele tem 90% das vezes eu acho que toda a linguagem deveria ser deveria ser comparada por propósito e produtividade porque você não pode comparar a linguagem com propósitos diferentes e acho que produtividade a única coisa que de fato permeia todas elas independente do propósito que cada um pode ser produtiva mais ou menos no propósito que ela tá se propondo a atuar cara Arturzinho
[Música]
[Música]
Mas ó vou dar um eu eu sou do tipo do Arthur aí né parada para mim é o seguinte eu preciso aprender algo vou lá aprendo né Na época que eu trabalhei com o Johnny lá na CC né quando a gente entrou lá a gente não sabia springbet né tipo springbet [ __ ] a gente foi ler né mas hoje em dia tem um ponto interessante também tem bastante treinamento legal e eu vou eu vou até fazer um mexi aqui né mas sem sem pedir nada depois você pede lá o patrocínio Mas tem uma tem uma escola legal chamada lura eles têm bons bons treinamentos lá já patrocina Jovem Nerd eles não vão olhar pra gente pode fazer de graça não é igual vampiro É verdade entendeu Você falou da loura mas a Lu é paga né a vantagem desse brinde ter uma comunidade tão forte que tem muita documentação no site muita coisa a zero eu não sei se eu tô falando sério achei uma baiado é esse é o é a Bíblia né cara vamos combinar assim ó eh Eu até tô fazendo ali de qualquer dia a gente vai trazer aqui a Renata também né tô fazendo mentoria né de uma desenvolvedora que tá mudando de carreira a gente tá no outro nível para a gente aprender assim de uma hora para outra a gente consegue porque nós somos profissionais já tem 20 anos de casa né Você já sabe com as coisas mas a gente precisa cara de daquele tipo quando você tá começando aquela pessoa pegando a tua mão tá ligado vai vamos atravessar a rua e aí eu acho que esses treinamentos eles são bons porque eles eles vão pôr até hoje a gente estuda e até hoje a gente aprende né mas eles são fundamentais para quem tá começando mesmo a gente tá vendo sabe uma dica que falando que o Arthur falou mas acho relevante a gente falou muita coisa técnica né e a gente trabalha com Spring faz 15 anos são esses detalhes que a gente tá falando aqui de ciclo de vida de cristalização não é para você começar a aprender eu tenho um amigo nosso que fala eu acho que o primeiro ponto é você achar um treinamento bom um garettere bom hoje em dia você faz tudo assim Acho que o próprio paradigma de aprender a programação mudou meu tempo era de escrever diagrama e fazer algoritmo hoje em dia diferente a gente vai fazer aplicações e principalmente tentar construir alguma coisa pega tem n n treinamentos em vários sites aluno e mesmo de graça na internet procure algum que você vai sair com um site de biblioteca um site de no final das contas publicado sei lá no Google acho que o grande ponto né não tem que entrar na profundidade que a gente falou aqui Exatamente é tem que fazer um negócio funcionar primeiro é importante que você saiba mas quando você tá começando você não precisa isso você vai resolver sua vida só vejo a mágica acontecer e quando você entender o que a mágica aconteceu aí tente entender o que que tá por trás né a gente fez essas perguntas aqui porque indicou o World falou já tem anos de ti a gente quer entender como funciona a O behinds Ali por curiosidade mórbida nerd né a gente tem mas se você quer começar de fato vai lá não quero estar e Apenas veja a mágica acontecer e depois você começa a aprofundar melhor que aí você vai ser um cara como esse nosso jovem baby jayant que curso você recomenda pro Wellington já passei da idade já fodeu no canal do YouTube do Spring tem aulas lá de uma hora com um indiana show de bola muito bem senhores Muito obrigado pela presença de vocês vocês cara vocês são um monstro demais velho eu tive que dar uma estudadinha antes para não passar vergonha né [Música] uma aula hoje valeu a pena se você teve se você teve aula Imagina eu Obrigado mano obrigado pela presença Você é sempre bem-vindo a gente é tão nerd velho que a gente fala demais né Tipo eu tava falando pra Valdir no [ __ ] aqui que dá para falar 10 horas esse brinde [ __ ] podia contar a história desse trem boot depois de comparar com vários Nossa é que o único problema é que o Valdir ia ficar doente quando ela vai falar de pai graças a dor de barriga ai ai ai ai tô de cama ah não ui não consigo mas o Red Java ele ele vem né tá bom aí ó tá bom tá bonzão Johnny Obrigado mano obrigado pela cerveja Opa tamo junto [Risadas] Porque tem que esconder mais porque é Glacial a gente só põe a Glacial dentro da garrafinha verde para disfarçar Valdir mano isso é bom demais velho você Obrigadão pelo convite mais uma vez e obrigado por estar aqui junto com esses monstro aqui o Arturzinho o Mr Johnny Justin bigode galera obrigado pela audiência de vocês segue a gente nas redes sociais todos os links desse papo aqui que a gente teve dessa dessa interação vai estar aqui embaixo na descrição e se inscreve aqui se você é profissional de ti compartilhe esse episódio fortalece quem quem faz conteúdo técnico para para compartilhar conhecimento Então se inscreve compartilha nas redes sociais e te aguarda aqui na próxima Episódio Valeu quem quiser mentoria Valeu galera obrigado valeu
[Música] [Aplausos] [Música]
Episódios Relacionados
1h 28minSQL vs NoSQL: Tudo o que você precisa saber
Valdir Scarin
27 de ago. de 2025
1h 23minQuarkus: Java além da JVM
Luiz Pais, Valdir Scarin
19 de fev. de 2025
1h 26minEstratégias na Adoção de Plataformas de Desenvolvimento
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
